.app-icon-wrap[data-v-017718c1]{display:inline-flex;align-items:center}.app-icon-wrap[data-v-017718c1] .app-icon.icon-sm{width:.95em;height:.95em}.app-icon-wrap[data-v-017718c1] .app-icon.icon-lg{width:1.5em;height:1.5em}.update-layer[data-v-b311557a]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:9999;display:grid;place-items:center;padding:24px;background:#18201a61;backdrop-filter:blur(10px) saturate(1.1);-webkit-backdrop-filter:blur(10px) saturate(1.1)}.update-card[data-v-b311557a]{width:min(480px,100%);border-radius:22px;padding:26px 28px 24px;color:#22352b;background:linear-gradient(155deg,#fffdf6f2,#f2efe3ee);border:1px solid #ffffffd9;box-shadow:0 24px 60px #141e1659,inset 0 1px #fffe}.update-head[data-v-b311557a]{display:flex;align-items:center;gap:14px}.update-mark[data-v-b311557a]{width:52px;height:52px;border-radius:16px;background:#fff;border:1px solid #e4e0d2;display:grid;place-items:center;overflow:hidden;box-shadow:inset 0 1px #fff}.update-mark img[data-v-b311557a]{width:100%;height:100%;object-fit:cover}.update-title[data-v-b311557a]{flex:1;display:grid;gap:2px}.update-title small[data-v-b311557a]{font:10px/1.4 var(--font-sans);letter-spacing:.18em;color:#8a9184}.update-title h2[data-v-b311557a]{margin:0;font:20px/1.25 var(--font-serif);letter-spacing:.04em}.update-must[data-v-b311557a]{font-size:11px;padding:5px 10px;border-radius:999px;background:#b3552e1f;color:#96431f;border:1px solid #b3552e42;white-space:nowrap}.update-close[data-v-b311557a]{border:0;background:transparent;color:#8a9184;cursor:pointer;padding:6px;border-radius:10px;display:grid;place-items:center}.update-close[data-v-b311557a]:hover{background:#22352b12;color:#22352b}.update-ver[data-v-b311557a]{display:flex;align-items:center;gap:8px;margin:18px 0 12px;color:#6f7a6d;font-size:12px}.update-ver .ver[data-v-b311557a]{padding:4px 10px;border-radius:999px;border:1px solid #d9dccd;background:#ffffffa8}.update-ver .new[data-v-b311557a]{font-weight:600;color:#22352b;border-color:#87997c99;background:#dfe7d999}.update-ver .app-icon[data-v-b311557a]{width:14px;height:14px}.update-ver .size[data-v-b311557a]{margin-left:auto;color:#8a9184}.update-notes[data-v-b311557a]{margin:0;font-size:12.5px;line-height:1.75;color:#4d584c;background:#22352b0a;border:1px solid #22352b14;border-radius:14px;padding:12px 14px;max-height:96px;overflow:auto;white-space:pre-wrap}.update-progress[data-v-b311557a]{display:flex;align-items:center;gap:18px;margin-top:16px}.update-progress .ring[data-v-b311557a]{position:relative;width:84px;height:84px;flex:none}.update-progress svg[data-v-b311557a]{width:100%;height:100%;transform:rotate(-90deg)}.update-progress circle[data-v-b311557a]{fill:none;stroke-width:7}.update-progress .track[data-v-b311557a]{stroke:#22352b14}.update-progress .bar[data-v-b311557a]{stroke:#5c7154;stroke-linecap:round;transition:stroke-dashoffset .25s ease}.update-progress b[data-v-b311557a]{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;font:600 17px/1 var(--font-sans);color:#22352b}.update-progress b i[data-v-b311557a]{font:italic 400 10px/1 var(--font-sans);margin-left:1px}.update-progress .meta[data-v-b311557a]{display:grid;gap:6px;font-size:12px;color:#6f7a6d}.update-progress .meta span[data-v-b311557a]{display:inline-flex;align-items:center;gap:6px}.update-progress .meta[data-v-b311557a] .app-icon{width:13px;height:13px}.update-error[data-v-b311557a]{display:flex;align-items:center;gap:8px;margin:14px 0 0;font-size:12.5px;color:#96431f;background:#b3552e14;border:1px solid #b3552e38;border-radius:12px;padding:10px 12px}.update-actions[data-v-b311557a]{display:flex;align-items:center;justify-content:flex-end;gap:10px;margin-top:20px}.update-hold[data-v-b311557a]{font-size:12px;color:#8a9184;margin-right:auto}.update-btn[data-v-b311557a]{display:inline-flex;align-items:center;gap:7px;border-radius:12px;padding:10px 16px;font:600 13px/1 var(--font-sans);cursor:pointer;border:1px solid transparent;letter-spacing:.02em;transition:transform .15s ease,box-shadow .15s ease,background .15s ease}.update-btn[data-v-b311557a]:active{transform:translateY(1px)}.update-btn.primary[data-v-b311557a]{background:linear-gradient(150deg,#33493a,#22352b);color:#f6f4ec;border-color:#22352b;box-shadow:0 8px 18px #22352b47,inset 0 1px #ffffff2b}.update-btn.primary[data-v-b311557a]:hover{box-shadow:0 10px 22px #22352b5c,inset 0 1px #fff3}.update-btn.ghost[data-v-b311557a]{background:#ffffffb8;border-color:#d3dacd;color:#33493a}.update-btn.ghost[data-v-b311557a]:hover{background:#fff}.update-btn[data-v-b311557a] .app-icon{width:15px;height:15px}.update-fade-enter-active[data-v-b311557a],.update-fade-leave-active[data-v-b311557a]{transition:opacity .3s ease}.update-fade-enter-active .update-card[data-v-b311557a]{transition:transform .35s cubic-bezier(.22,1,.36,1)}.update-fade-enter-from[data-v-b311557a],.update-fade-leave-to[data-v-b311557a]{opacity:0}.update-fade-enter-from .update-card[data-v-b311557a]{transform:translateY(14px) scale(.97)}body.desktop-chrome{--desktop-titlebar-height: 36px}body.desktop-chrome #app{padding-top:var(--desktop-titlebar-height);box-sizing:border-box}.desktop-titlebar{position:fixed;inset:0 0 auto;z-index:10000;display:flex;align-items:center;gap:12px;height:var(--desktop-titlebar-height);box-sizing:border-box;padding:0 156px 0 18px;background:#e9e7df;color:#536557;-webkit-app-region:drag;app-region:drag;-webkit-user-select:none;user-select:none;font-family:var(--font-sans);line-height:1}.desktop-titlebar-brand{font-size:11px;letter-spacing:.16em}.desktop-titlebar-subtitle{font-size:8px;letter-spacing:.2em;opacity:.58}body.desktop-chrome .app-page,body.desktop-chrome .auth-split{min-height:calc(100vh - var(--desktop-titlebar-height))}body.desktop-fullscreen{--desktop-titlebar-height: 0px}body.desktop-fullscreen .desktop-titlebar{display:none}.workspace-layout{--sidebar-width: 216px;padding-left:var(--sidebar-width)}.workspace-layout.sidebar-collapsed{--sidebar-width: 72px}.workspace-sidebar{position:fixed;left:0;top:var(--desktop-titlebar-height, 0px);width:var(--sidebar-width);height:calc(100dvh - var(--desktop-titlebar-height, 0px));z-index:100;display:flex;flex-direction:column;padding:22px 12px 12px;background:#f6f7efeb;border-right:1px solid var(--line)}.sidebar-brand{margin-bottom:22px}.sidebar-home{display:flex;align-items:center;gap:10px;color:var(--ink);text-decoration:none;min-height:42px;padding:0 6px}.sidebar-home img{width:36px;height:36px;object-fit:contain;flex-shrink:0}.sidebar-wordmark{font:19px/1.4 var(--font-serif);letter-spacing:.1em}.sidebar-wordmark small{display:block;font:9px/1.8 var(--font-sans);letter-spacing:.08em;color:var(--muted)}.sidebar-action{width:100%;min-height:42px;display:flex;align-items:center;gap:12px;padding:10px 14px;border:0;border-radius:10px;background:transparent;color:var(--ink-soft);text-decoration:none;font:13px/1.6 var(--font-sans);text-align:left;cursor:pointer;transition:background .16s,color .16s}.sidebar-action .app-icon-wrap{display:inline-flex;flex:0 0 20px}.sidebar-action .app-icon{width:20px;height:20px}.sidebar-action:hover{background:#6580661a}.sidebar-action.selected{background:var(--accent);color:#fff;box-shadow:0 4px 10px #294f401f}.sidebar-toggle{color:var(--muted);flex-shrink:0}.sidebar-navigation{flex:1;min-height:0;overflow-y:auto;scrollbar-width:thin;padding:4px 0 14px}.sidebar-group+.sidebar-group{margin-top:16px}.sidebar-group-label{height:34px;padding:10px 14px 6px;font-size:10px;letter-spacing:.12em;color:var(--muted)}.sidebar-group .sidebar-action+.sidebar-action{margin-top:4px}.sidebar-copy{white-space:nowrap;min-width:0;opacity:1;transform:translate(0);transition:opacity .16s ease .08s,transform .28s var(--ease-out)}.sidebar-footer{border-top:1px solid var(--line);padding-top:12px;flex-shrink:0}.sidebar-account{display:flex;align-items:center;gap:10px;padding:4px 6px 12px;min-width:0}.sidebar-avatar{display:grid;place-items:center;width:36px;height:36px;flex-shrink:0;background:#dfe5d7;color:var(--accent);border-radius:12px}.sidebar-account-copy{display:grid;min-width:0}.sidebar-account-copy strong{overflow:hidden;text-overflow:ellipsis;font-size:12px;font-weight:500}.sidebar-account-copy small{font-size:10px;color:var(--muted)}.sidebar-collapsed .sidebar-copy{opacity:0;transform:translate(-8px);pointer-events:none;transition-delay:0s}.sidebar-collapsed .sidebar-group-label{height:20px;padding:0;margin:0 14px 8px;border-bottom:1px solid var(--line)}.sidebar-collapsed .sidebar-group+.sidebar-group{margin-top:10px}.sidebar-collapsed .sidebar-toggle .app-icon{transform:rotate(180deg)}.workspace-layout{--sidebar-motion: .3s cubic-bezier(.22, .61, .36, 1);transition:padding-left var(--sidebar-motion)}.workspace-sidebar{overflow:hidden;transition:width var(--sidebar-motion),box-shadow var(--sidebar-motion)}.sidebar-home,.sidebar-action,.sidebar-account{overflow:hidden}.sidebar-navigation{overflow-x:hidden}.sidebar-toggle .app-icon{transition:transform var(--sidebar-motion)}.sidebar-group-label{transition:height var(--sidebar-motion),padding var(--sidebar-motion),margin var(--sidebar-motion)}.sidebar-group+.sidebar-group{transition:margin-top var(--sidebar-motion)}.sidebar-shade-enter-active,.sidebar-shade-leave-active{transition:opacity .25s ease}.sidebar-shade-enter-from,.sidebar-shade-leave-to{opacity:0}.sidebar-shade-leave-active{pointer-events:none}.workspace-content{min-width:0}.app-shell{max-width:1280px;margin:0 auto;padding:28px 28px 30px;display:grid;grid-template-columns:minmax(0,1fr);gap:22px}.app-shell.shell-wide{max-width:1760px}.wordmark{font:22px/1.1 var(--font-serif);letter-spacing:.16em;color:var(--ink);text-decoration:none;display:grid}.wordmark span{font:9px/2.4 var(--font-sans);letter-spacing:.16em;color:var(--muted)}.user-chip{display:flex;align-items:center;gap:10px;font-size:12px}.user-name{display:inline-flex;align-items:center;gap:6px;color:var(--ink-soft)}@media (max-width: 900px){.app-shell{padding:20px 16px 24px}}@media (max-width: 760px){.workspace-layout{padding-left:72px}.sidebar-mobile-open .workspace-sidebar{width:216px;box-shadow:var(--shadow-3)}.sidebar-backdrop{position:fixed;inset:var(--desktop-titlebar-height, 0px) 0 0;z-index:99;border:0;background:#253d3540}.app-shell{padding:16px 12px 24px}}@media (max-height: 580px){.workspace-sidebar{padding-top:10px}.sidebar-brand{margin-bottom:6px}.sidebar-footer{padding-top:6px}.sidebar-account{padding-bottom:6px}}html,body,#app{margin:0;min-height:100%}@media (prefers-reduced-motion: reduce){.workspace-layout,.workspace-sidebar,.sidebar-copy,.sidebar-toggle .app-icon,.sidebar-group-label,.sidebar-group+.sidebar-group,.sidebar-shade-enter-active,.sidebar-shade-leave-active{transition:none}}html,body.editor-page,body.editor-page #app{height:100%}:root{--ink: #253d35;--ink-soft: #3c5348;--muted: #5d6f64;--accent: #294f40;--accent-strong: #193d2d;--accent-soft: #658066;--line: #c9d0c3;--danger: #a54430;--warning: #b07a2a;--ok: #3c7a54;--honeycomb: #6f8266;--bg: #e9e7df;--bg-blob-1: #d6dcc9;--bg-blob-2: #d3d8ce;--bg-blob-3: #e3e0d2;--glass-bg-1: rgba(255, 255, 250, .55);--glass-bg-2: rgba(255, 255, 250, .68);--glass-bg-3: rgba(255, 255, 252, .82);--glass-border: rgba(255, 255, 255, .66);--glass-border-soft: rgba(255, 255, 255, .4);--glass-blur: 20px;--glass-saturate: 1.35;--shadow-1: 0 10px 30px rgba(54, 65, 47, .1), 0 2px 6px rgba(54, 65, 47, .06), inset 0 1px 0 rgba(255, 255, 255, .8);--shadow-2: 0 18px 45px rgba(54, 65, 47, .14), 0 4px 10px rgba(54, 65, 47, .07), inset 0 1px 0 rgba(255, 255, 255, .85);--shadow-3: 0 28px 70px rgba(40, 52, 44, .2), 0 8px 18px rgba(40, 52, 44, .1), inset 0 1px 0 rgba(255, 255, 255, .9);--r-sm: 10px;--r-md: 14px;--r-lg: 20px;--r-xl: 26px;--t-fast: .16s;--t-base: .3s;--t-slow: .55s;--ease-out: cubic-bezier(.22, .61, .36, 1);--ease-spring: cubic-bezier(.34, 1.35, .5, 1);--font-sans: "Microsoft YaHei", "PingFang SC", "Segoe UI", sans-serif;--font-serif: Georgia, "Times New Roman", serif}.app-page{min-height:100vh;color:var(--ink);font:14px/1.65 var(--font-sans);background:radial-gradient(900px 520px at 88% -6%,var(--bg-blob-1),transparent 60%),radial-gradient(760px 480px at -8% 30%,var(--bg-blob-2),transparent 58%),radial-gradient(700px 500px at 55% 108%,var(--bg-blob-3),transparent 62%),var(--bg);background-attachment:fixed}.app-page *{box-sizing:border-box}.app-page [hidden]{display:none!important}.glass-panel,.glass-card,.glass-float{position:relative;background:var(--glass-bg-1);border:1px solid var(--glass-border);box-shadow:var(--shadow-1);backdrop-filter:blur(var(--glass-blur)) saturate(var(--glass-saturate));-webkit-backdrop-filter:blur(var(--glass-blur)) saturate(var(--glass-saturate))}.glass-card{border-radius:var(--r-lg)}.glass-float{background:var(--glass-bg-3);box-shadow:var(--shadow-3);border-radius:var(--r-lg)}.glass-card.interactive{transition:transform var(--t-base) var(--ease-out),box-shadow var(--t-base) var(--ease-out),background var(--t-base)}.glass-card.interactive:hover{transform:translateY(-3px);box-shadow:var(--shadow-2);background:var(--glass-bg-2)}.glass-card.interactive:active{transform:translateY(-1px) scale(.995)}.app-icon{width:1.15em;height:1.15em;flex:none;vertical-align:-.22em}.app-page button{font:inherit;cursor:pointer;color:var(--ink)}.btn{display:inline-flex;align-items:center;gap:7px;padding:9px 16px;border-radius:var(--r-sm);border:1px solid var(--line);background:#fff9;transition:background var(--t-fast),transform var(--t-fast) var(--ease-out),box-shadow var(--t-fast),border-color var(--t-fast)}.btn:hover{background:#fff;transform:translateY(-1px);box-shadow:0 6px 14px #36412f1a}.btn:active{transform:translateY(0)}.btn:disabled{opacity:.5;cursor:wait;transform:none;box-shadow:none}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn.primary:hover{background:var(--accent-strong)}.btn.danger{color:var(--danger);border-color:#d8b3a8}.btn.danger:hover{background:#f7e9e4}.btn.ghost{border-color:transparent;background:transparent}.btn.ghost:hover{background:#ffffffa6}.btn.sm{padding:5px 10px;font-size:12px;border-radius:8px}.app-page input,.app-page select{font:inherit;width:100%;color:var(--ink);background:#ffffffb8;border:1px solid var(--line);border-radius:var(--r-sm);padding:10px 13px;transition:border-color var(--t-fast),box-shadow var(--t-fast),background var(--t-fast)}.app-page input:hover,.app-page select:hover{border-color:#aebb9f}.app-page input:focus,.app-page select:focus{outline:none;border-color:var(--accent-soft);box-shadow:0 0 0 3px #6580662e;background:#fff}.app-page label{display:grid;gap:6px;font-size:12px;color:var(--ink-soft)}.app-page :focus-visible{outline:3px solid rgba(113,140,93,.45);outline-offset:2px}.app-page input[type=search]{padding-left:34px}.search-box{position:relative}.search-box .app-icon{position:absolute;left:11px;top:50%;translate:0 -50%;color:var(--muted);pointer-events:none}.app-table{width:100%;border-collapse:collapse;font-size:13px}.app-table th{text-align:left;font-weight:500;font-size:11px;letter-spacing:.08em;color:var(--muted);padding:10px 14px;border-bottom:1px solid var(--line);white-space:nowrap;-webkit-user-select:none;user-select:none}.app-table th.sortable{cursor:pointer}.app-table th.sortable:hover{color:var(--ink)}.app-table td{padding:11px 14px;border-bottom:1px solid rgba(201,208,195,.45);overflow-wrap:anywhere}.app-table tbody tr{transition:background var(--t-fast)}.app-table tbody tr:hover{background:#ffffff80}.table-wrap{overflow-x:auto;border-radius:var(--r-md)}.app-page dialog{border:1px solid var(--glass-border);border-radius:var(--r-lg);padding:28px;width:min(440px,calc(100vw - 32px));color:var(--ink);background:var(--glass-bg-3);box-shadow:var(--shadow-3);-webkit-backdrop-filter:blur(var(--glass-blur)) saturate(var(--glass-saturate));backdrop-filter:blur(var(--glass-blur)) saturate(var(--glass-saturate))}.app-page dialog::backdrop{background:#20372d61;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.app-page dialog h2{font-weight:500;font-size:19px;margin:4px 0 14px}.badge{display:inline-flex;align-items:center;gap:5px;padding:2px 9px;border-radius:999px;font-size:11px;background:#3c7a541f;color:var(--ok);border:1px solid rgba(60,122,84,.25)}.badge.muted{background:#5d6f641a;color:var(--muted);border-color:#5d6f6438}.badge.danger{background:#a544301a;color:var(--danger);border-color:#a5443040}.app-topbar{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 22px;border-radius:var(--r-md)}.topbar-nav{display:flex;gap:6px;align-items:center}.topbar-nav a{display:inline-flex;align-items:center;gap:7px;padding:8px 14px;border-radius:var(--r-sm);color:var(--ink-soft);text-decoration:none;font-size:13px;transition:background var(--t-fast),color var(--t-fast)}.topbar-nav a:hover{background:#ffffff8c;color:var(--ink)}.topbar-nav a.router-link-active,.topbar-nav a.selected{background:#294f401f;color:var(--accent);font-weight:500}.eyebrow{font-size:10px;letter-spacing:.18em;color:var(--muted);margin:0 0 10px}.muted{color:var(--muted);font-size:12px}.form-error{color:var(--danger);font-size:12px;margin:4px 0}@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))){.glass-panel,.glass-card,.glass-float,.app-page dialog{background:#f4f5ed}}.route-enter-active{transition:opacity var(--t-base) var(--ease-out),transform var(--t-base) var(--ease-out)}.route-leave-active{transition:opacity var(--t-fast) ease,transform var(--t-fast) ease}.route-enter-from{opacity:0;transform:translateY(10px)}.route-leave-to{opacity:0;transform:translateY(-6px)}.stagger{animation:rise-in var(--t-slow) var(--ease-out) both;animation-delay:calc(var(--i, 0) * 55ms)}@keyframes rise-in{0%{opacity:0;transform:translateY(14px) scale(.985)}to{opacity:1;transform:none}}.pop-enter-active{transition:opacity var(--t-base) var(--ease-spring),transform var(--t-base) var(--ease-spring)}.pop-leave-active{transition:opacity var(--t-fast) ease,transform var(--t-fast) ease}.pop-enter-from{opacity:0;transform:scale(.94) translateY(8px)}.pop-leave-to{opacity:0;transform:scale(.97)}.skeleton{position:relative;overflow:hidden;background:#ffffff73;border-radius:var(--r-sm)}.skeleton:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(100deg,transparent 32%,rgba(255,255,255,.75) 50%,transparent 68%);animation:shimmer 1.4s infinite}@keyframes shimmer{0%{transform:translate(-100%)}to{transform:translate(100%)}}.tick{animation:tick .4s var(--ease-out)}@keyframes tick{0%{transform:translateY(6px);opacity:.4}to{transform:none;opacity:1}}.pulse-dot{width:8px;height:8px;border-radius:50%;background:var(--ok);animation:pulse 2.2s ease-in-out infinite}@keyframes pulse{0%,to{box-shadow:0 0 #3c7a5459}50%{box-shadow:0 0 0 6px #3c7a5400}}.toast-list{position:fixed;right:20px;bottom:20px;display:grid;gap:10px;z-index:999}.toast{display:flex;align-items:center;gap:9px;padding:11px 16px;border-radius:var(--r-md);font-size:13px;background:var(--glass-bg-3);border:1px solid var(--glass-border);box-shadow:var(--shadow-2);-webkit-backdrop-filter:blur(var(--glass-blur)) saturate(var(--glass-saturate));backdrop-filter:blur(var(--glass-blur)) saturate(var(--glass-saturate))}.toast .app-icon{color:var(--ok)}.toast.error .app-icon{color:var(--danger)}.toast-enter-active,.toast-leave-active{transition:opacity var(--t-base) var(--ease-spring),transform var(--t-base) var(--ease-spring)}.toast-enter-from,.toast-leave-to{opacity:0;transform:translateY(10px) scale(.96)}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation:none!important;transition:none!important}}.loading-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:600;display:grid;place-items:center;background:#e9e7df7a;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.honeycomb{height:24px;position:relative;width:24px}.honeycomb div{animation:honeycomb 2.1s infinite backwards;background:var(--honeycomb, #6f8266);height:12px;margin-top:6px;position:absolute;width:24px}.honeycomb div:after,.honeycomb div:before{content:"";border-left:12px solid transparent;border-right:12px solid transparent;position:absolute;left:0;right:0}.honeycomb div:after{top:-6px;border-bottom:6px solid var(--honeycomb, #6f8266)}.honeycomb div:before{bottom:-6px;border-top:6px solid var(--honeycomb, #6f8266)}.honeycomb div:nth-child(1){animation-delay:0s;left:-28px;top:0}.honeycomb div:nth-child(2){animation-delay:.1s;left:-14px;top:22px}.honeycomb div:nth-child(3){animation-delay:.2s;left:14px;top:22px}.honeycomb div:nth-child(4){animation-delay:.3s;left:28px;top:0}.honeycomb div:nth-child(5){animation-delay:.4s;left:14px;top:-22px}.honeycomb div:nth-child(6){animation-delay:.5s;left:-14px;top:-22px}.honeycomb div:nth-child(7){animation-delay:.6s;left:0;top:0}.loading-overlay .honeycomb{transform:scale(1.25)}@keyframes honeycomb{0%,20%,80%,to{opacity:0;transform:scale(0)}30%,70%{opacity:1;transform:scale(1)}}:root{--studio-ink:#253d35;--studio-muted:#596b60;--studio-accent:#294f40;--studio-line:#c9d0c3;--studio-shadow:0 16px 45px #36412f14,inset 0 1px 0 #fff}body.editor-page #sidepanel{overflow-x:hidden}body.editor-page #sidepanel input[type=file]{max-width:100%;font-size:11px}body.editor-page .plan-list li.active{background:#dce5d6;color:#263f34}body.editor-page #sidepanel .row{min-width:0;flex-wrap:wrap}body.editor-page #sidepanel select{max-width:100%}.workspace-page{margin:0;color:var(--studio-ink);background:radial-gradient(ellipse at 85% 0%,#d9ddd1,transparent 55%),#e9e7df;font:14px/1.6 Microsoft YaHei,PingFang SC,sans-serif}.workspace-page *{box-sizing:border-box}.workspace-page [hidden]{display:none!important}.glass{background:#fffffaad;border:1px solid #ffffffd9;box-shadow:var(--studio-shadow);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.workspace-page button,.workspace-page input,.workspace-page select{font:inherit}.workspace-page button{cursor:pointer;border:1px solid var(--studio-line);color:var(--studio-ink);background:#fff9;padding:10px 17px;border-radius:10px;transition:background .18s}.workspace-page button:hover{background:#fff}.workspace-page button:disabled{opacity:.55;cursor:wait}.workspace-page .primary{background:var(--studio-accent);color:#fff;border-color:var(--studio-accent)}.workspace-page .primary:hover{background:#193d2d}.workspace-page :focus-visible{outline:3px solid #718c5d;outline-offset:3px}.workspace-page input,.workspace-page select{width:100%;border:1px solid var(--studio-line);border-radius:9px;padding:11px 13px;color:var(--studio-ink);background:#ffffffd9}.workspace-page label{display:grid;gap:7px;margin:15px 0}.studio-shell{min-height:100vh;padding:22px;display:grid;grid-template-columns:224px minmax(0,1fr);gap:44px}.studio-nav{position:sticky;top:22px;height:calc(100vh - 44px);border-radius:22px;padding:31px 20px;display:flex;flex-direction:column}.wordmark{font:29px/1.1 Georgia,serif;letter-spacing:.16em;color:var(--studio-ink);text-decoration:none;padding:0 9px}.wordmark span{display:block;font:11px/3 Microsoft YaHei,sans-serif;letter-spacing:.16em}.nav-caption{margin:54px 10px 16px;color:var(--studio-muted);font-size:10px}.studio-nav nav{display:grid;gap:7px}.studio-nav nav button,.studio-nav nav a{display:flex;justify-content:space-between;width:100%;padding:13px 14px;border:none;border-radius:10px;color:var(--studio-ink);text-decoration:none;background:transparent;text-align:left}.studio-nav nav .selected{background:#dae2d6}.studio-nav nav span{color:#637762;font-size:11px}.nav-foot{margin-top:auto;padding:20px 10px 0;color:var(--studio-muted);font-size:12px}.material-dot{display:block;width:31px;height:31px;border-radius:50%;background:#b49975 url(/textures/wood-tile.jpg) center/cover}.studio-main{min-width:0;padding:5px 22px 0 0}.studio-header{display:flex;justify-content:space-between;align-items:center;min-height:42px;border-bottom:1px solid var(--studio-line);padding-bottom:16px;font-size:11px;letter-spacing:.12em}.studio-header>div{display:flex;gap:15px;align-items:center;letter-spacing:0}.studio-header button{padding:5px 10px;font-size:11px}.studio-hero{display:grid;grid-template-columns:1.2fr 1fr;gap:24px;min-height:300px;align-items:center;padding:38px 0}.eyebrow{font-size:10px;letter-spacing:.18em;color:var(--studio-muted);margin:0 0 14px}.studio-hero h1{font-size:clamp(30px,3vw,48px);line-height:1.45;font-weight:400;letter-spacing:-.04em;margin:10px 0 17px;max-width:550px}.studio-hero h1 em{font-style:normal;color:#658066}.studio-hero p:not(.eyebrow){color:var(--studio-muted);max-width:430px}.material-composition{position:relative;height:245px;max-width:430px}.sample{position:absolute;width:145px;height:170px;border-radius:65px 65px 12px 12px;transform:rotate(-15deg);box-shadow:12px 20px 22px #4c533521}.oak{left:8%;top:22px;background:#bda37c url(/textures/wood-tile.jpg) center/cover}.stone{left:36%;top:8px;background:linear-gradient(120deg,#d5d2c2,#faf8e9 60%,#c4c3b7);transform:rotate(7deg)}.glass-sample{left:56%;top:44px;background:linear-gradient(130deg,#fffa,#f4fff529 60%,#ffffff7a);border:1px solid #fffffff0;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);transform:rotate(21deg)}.material-composition>span{position:absolute;bottom:0;left:24%;font-size:9px;letter-spacing:.23em;color:#68715e}.section-heading{display:flex;justify-content:space-between;gap:20px;align-items:center;margin:10px 0 12px}.section-heading h2,.auth-section h2{font-size:22px;font-weight:400;margin:0}.actions{display:flex;flex-wrap:wrap;gap:10px;align-items:center}.actions input{width:190px}#status{color:var(--studio-muted);font-size:12px;min-height:20px}.project-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(255px,1fr));gap:22px}.project-card{border-radius:17px;overflow:hidden}.plan-preview{display:block;position:relative;height:178px;overflow:hidden;background:linear-gradient(120deg,#d3d7c9,#eef0e7);border-bottom:1px solid #fff}.preview-label{position:absolute;left:18px;top:15px;font-size:10px;color:#54634f}.plan-lines{width:125px;height:102px;position:absolute;top:45px;left:calc(50% - 63px);border:5px double #7b8b6c;transform:rotate(-15deg) skew(10deg);background:linear-gradient(90deg,transparent 52%,#7b8b6c 52%,#7b8b6c 54%,transparent 54%),linear-gradient(0deg,transparent 55%,#7b8b6c 55%,#7b8b6c 58%,transparent 58%);box-shadow:12px 13px #b3bca44f}.card-body{padding:22px}.card-body h3{font-size:18px;font-weight:500;margin:6px 0 12px;overflow-wrap:anywhere}.muted{color:var(--studio-muted);font-size:11px}.open-project{display:block;padding-top:18px;margin-top:20px;border-top:1px solid var(--studio-line);color:var(--studio-accent);text-decoration:none;font-size:12px}.avatar{width:44px;height:44px;display:grid;place-items:center;border-radius:50%;background:#dce4d6;font:23px Georgia,serif;margin-bottom:17px}.empty-state{grid-column:1/-1;text-align:center;padding:55px 20px;border-radius:17px}.empty-state h3{font-size:23px;font-weight:400}.empty-state p{color:var(--studio-muted)}.studio-footer{display:flex;justify-content:space-between;gap:20px;border-top:1px solid var(--studio-line);padding:25px 0;margin-top:50px;font-size:10px;color:var(--studio-muted);letter-spacing:.12em}.auth-section{display:grid;grid-template-columns:1fr 1fr;gap:40px;padding:35px;border-radius:18px;max-width:900px}.auth-section>div{padding-top:20px}.auth-section p{color:var(--studio-muted)}.workspace-page dialog{border-radius:18px;padding:30px;width:min(460px,calc(100vw - 32px));color:var(--studio-ink)}.workspace-page dialog::backdrop{background:#20372d60}.workspace-page dialog h2{font-weight:400}#authError,#formError{color:#923e2a}body.editor-page{--bg:#e9e7df;--panel:#fafbf5eb;--line:#c9d0c3;--ink:#263f34;--ink-dim:#59685d;--accent:#305a45;--danger:#a54430}body.editor-page #topbar{margin:10px 12px 0;border:1px solid #fff;border-radius:14px;box-shadow:var(--studio-shadow);gap:12px;height:60px}body.editor-page #main{padding:12px;gap:12px}body.editor-page #toolbar,body.editor-page #sidepanel{border:1px solid #fff;border-radius:14px;box-shadow:var(--studio-shadow)}body.editor-page #canvasWrap{border-radius:15px;overflow:hidden}body.editor-page button{background:#f4f6ef;border-radius:8px}body.editor-page button.primary{background:var(--accent);color:#fff}body.editor-page .tool.active{background:#dce5d6}body.editor-page input,body.editor-page select{color:var(--ink);background:#f9faf5}body.editor-page .cursor-info{background:#f4f7eeeb}body.editor-page .login-card{background:#f6f7f0;border-radius:18px;box-shadow:var(--studio-shadow)}body.editor-page #loginOverlay{background:#263e354d}body.editor-page :focus-visible{outline:2px solid #426b4b;outline-offset:2px}@media (max-width:1050px){.studio-shell{grid-template-columns:185px minmax(0,1fr);gap:25px}.studio-main{padding-right:0}.material-composition{transform:scale(.8);transform-origin:center}.section-heading{align-items:flex-start;flex-direction:column}body.editor-page #planName{width:135px}body.editor-page .brand{font-size:10px}}@media (max-width:720px){.studio-shell{display:block;padding:12px}.studio-nav{position:static;height:auto;padding:17px;border-radius:16px}.studio-nav nav{display:flex;flex-wrap:wrap;margin-top:15px}.studio-nav nav button,.studio-nav nav a{width:auto;gap:12px}.nav-caption,.nav-foot{display:none}.studio-header{margin-top:24px}.studio-header>span{display:none}.studio-hero{grid-template-columns:1fr;padding:25px 4px;min-height:0}.material-composition{display:none}.studio-hero h1{font-size:34px}.auth-section{grid-template-columns:1fr;gap:5px;padding:24px}.studio-footer{letter-spacing:0}body.editor-page #topbar{height:auto;flex-wrap:wrap;padding:10px}body.editor-page .top-actions{flex-wrap:wrap}body.editor-page #sidepanel{width:210px}body.editor-page #toolbar{width:50px}}@supports not (backdrop-filter:blur(1px)){.glass{background:#f4f5ed}.glass-sample{background:#e6ece0}}@media (prefers-reduced-motion:reduce){.workspace-page *{transition:none!important}}body.editor-page #sidepanel{padding:12px;background:#e9ede0;scrollbar-width:thin;scrollbar-color:#b6c2af transparent}body.editor-page #sidepanel::-webkit-scrollbar{width:6px}body.editor-page #sidepanel::-webkit-scrollbar-thumb{background:#bcc7b5;border-radius:99px}body.editor-page #sidepanel::-webkit-scrollbar-track{background:transparent}body.editor-page .panel{background:#fbfcf7c4;border:1px solid #ffffffe0;border-radius:16px;padding:12px;margin-bottom:12px;box-shadow:0 10px 30px #36412f0f,inset 0 1px #fff;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}body.editor-page .lighting-panel{background:linear-gradient(145deg,#fdf5e2d9,#f1f6efcc);border-color:#f0e4c8}body.editor-page #selectionPanel{background:linear-gradient(160deg,#fdf7e9d9,#fbfcf7c4);border-color:#ecd9ad}body.editor-page #selectionTitle{color:#8a5a10}body.editor-page .panel h4{display:flex;align-items:baseline;justify-content:space-between;gap:8px;margin:0 0 10px;font-size:13px;font-weight:800;letter-spacing:.05em;color:var(--ink)}body.editor-page .panel h4 small{font-weight:500;font-size:10px;letter-spacing:.12em;color:var(--ink-dim)}body.editor-page .side-tabs{position:sticky;top:0;z-index:5;display:grid;grid-template-columns:repeat(4,1fr);gap:3px;padding:3px;margin-bottom:12px;background:#f4f6ecd9;border:1px solid #ffffffd9;border-radius:12px;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:0 8px 22px #36412f14}body.editor-page .side-tabs button{padding:8px 0;border:none;border-radius:9px;background:transparent;color:var(--ink-dim);font:inherit;font-size:12px;font-weight:700;white-space:nowrap;cursor:pointer;transition:background .16s,color .16s,box-shadow .16s}body.editor-page .side-tabs button:hover{background:#ffffffa8;color:var(--ink)}body.editor-page .side-tabs button.active{background:#fff;color:var(--accent);box-shadow:0 2px 8px #36412f1f}body.editor-page .tab-pane{animation:editorPaneIn .18s ease}@keyframes editorPaneIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}body.editor-page #sidepanel input:not([type=checkbox]):not([type=range]):not([type=color]):not([type=file]):not([hidden]),body.editor-page #sidepanel select{height:34px;padding:0 10px;border:1px solid #d3dacd;border-radius:9px;background:#ffffffb8;color:var(--ink);font:inherit;font-size:12.5px;transition:border-color .15s,box-shadow .15s,background .15s}body.editor-page #sidepanel input:not([type=checkbox]):not([type=range]):not([type=color]):not([type=file]):not([hidden]):hover,body.editor-page #sidepanel select:hover{border-color:#b4c0ad;background:#fff}body.editor-page #sidepanel input:not([type=checkbox]):not([type=range]):not([type=color]):not([type=file]):not([hidden]):focus,body.editor-page #sidepanel select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px #305a4524;background:#fff}body.editor-page #sidepanel input[type=number]{text-align:right;font-variant-numeric:tabular-nums}body.editor-page input[type=checkbox],body.editor-page input[type=range]{accent-color:var(--accent)}body.editor-page #sidepanel input[type=file]{height:auto;padding:7px 9px;border:1px dashed #c2ccba;border-radius:9px;background:#ffffff80;font-size:11px;cursor:pointer}body.editor-page #sidepanel label{font-size:11.5px;color:var(--ink-dim)}body.editor-page .slider-row span,body.editor-page .nudge-row span{font-size:11px;color:var(--ink-dim)}body.editor-page #sidepanel button{padding:7px 10px;border:1px solid #d3dacd;border-radius:9px;background:#ffffffc2;color:var(--ink);font:inherit;font-size:12px;font-weight:600;cursor:pointer;transition:transform .16s,box-shadow .16s,background .16s,border-color .16s}body.editor-page #sidepanel button:hover{background:#fff;transform:translateY(-1px);box-shadow:0 6px 16px #36412f1f}body.editor-page #sidepanel button:active{transform:translateY(0);box-shadow:none}body.editor-page #sidepanel button.primary{background:var(--accent);border-color:var(--accent);color:#fff;box-shadow:0 8px 20px #305a4533}body.editor-page #sidepanel button.primary:hover{background:#26503c}body.editor-page #deleteSelected,body.editor-page #removeFixture{color:var(--danger);border-color:#e8cec2}body.editor-page #deleteSelected:hover,body.editor-page #removeFixture:hover{background:#fdf1ec;box-shadow:0 6px 16px #a5443022}body.editor-page .nudge-row button{padding:0;width:26px;height:26px;display:inline-flex;align-items:center;justify-content:center;border-radius:7px}body.editor-page .nudge-row .app-icon{width:13px;height:13px}body.editor-page #fixtureList button{padding:5px 9px;font-size:11px;border-radius:8px}body.editor-page #fixtureList button[aria-pressed=true]{outline:2px solid var(--accent);background:#e7efe2}body.editor-page #roomList{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px 8px;align-items:center;margin:8px 0}body.editor-page #roomList p{background:#ffffffa8;border:1px solid #e5eadd;border-radius:10px;padding:7px 8px;font-size:11px;color:var(--ink);margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}body.editor-page #roomList button{width:auto;margin:0;padding:5px 8px;font-size:10.5px}body.editor-page .plan-list{border:1px solid #e7ebdf;border-radius:11px;background:#ffffff7d;padding:4px;display:flex;flex-direction:column;gap:2px}body.editor-page .plan-list:empty{display:none}body.editor-page .plan-list li{padding:7px 9px;border-radius:8px;font-size:12px;transition:background .15s,color .15s}body.editor-page .plan-list li:hover{background:#eef2e8}body.editor-page .plan-list li.active{background:#dce5d6;color:#263f34;font-weight:700}body.editor-page .plan-list li small{color:var(--ink-dim);font-size:10.5px}body.editor-page .mat-grid{gap:7px}body.editor-page .mat-chip{height:34px;border-radius:9px;border-color:#e0e5d8;transition:transform .16s,box-shadow .16s,border-color .16s}body.editor-page .mat-chip:hover{transform:translateY(-2px);box-shadow:0 8px 18px #36412f1f}body.editor-page .mat-chip.active{border-color:var(--accent);box-shadow:0 0 0 3px #305a4524}body.editor-page .furn-list{gap:7px}body.editor-page .furn-item{background:#ffffffa3;border:1px solid #e5eadd;border-radius:11px;padding:9px 4px 7px;font-size:10.5px;color:var(--ink);transition:transform .16s,box-shadow .16s,border-color .16s,color .16s}body.editor-page .furn-item:hover{transform:translateY(-2px);box-shadow:0 8px 18px #36412f1f;border-color:#c7d2c1}body.editor-page .furn-item.active{border-color:var(--accent);color:var(--accent);background:#eaf1e5;box-shadow:0 0 0 2px #305a4530}body.editor-page .furn-item .furn-icon{display:flex;justify-content:center;align-items:center;margin-bottom:4px}body.editor-page .furn-item .app-icon{width:20px;height:20px}body.editor-page #panelFurniture a{font-size:11.5px;color:var(--accent)}body.editor-page #lightingForm label,body.editor-page #fixtureFields label{grid-template-columns:82px minmax(0,1fr)}body.editor-page #lightingForm label:has(output),body.editor-page #fixtureFields label:has(output){grid-template-columns:82px minmax(0,1fr) 46px}body.editor-page #lightingForm label>input,body.editor-page #fixtureFields label>input{width:100%}body.editor-page #lightingTime{grid-column:3;text-align:right}body.editor-page .btn-row{display:grid;grid-template-columns:1fr 1fr}body.editor-page .btn-row button:last-child:nth-child(odd){grid-column:1/-1}body.editor-page #selectionForm{display:grid;grid-template-columns:1fr 1fr;gap:8px}body.editor-page #selectionForm[hidden]{display:none}body.editor-page #selectionFields,body.editor-page #selectionError,body.editor-page #deleteSelected{grid-column:1/-1}body.editor-page .furn-item{min-height:66px}body.editor-page .hint{font-size:11px;color:var(--ink-dim);line-height:1.55}body.editor-page #shareLink{word-break:break-all}body.editor-page .login-card input{height:34px;padding:0 10px;border:1px solid #d3dacd;border-radius:9px;background:#ffffffb8}body.editor-page .login-card input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px #305a4524}body.editor-page #toolbar{padding:10px 8px;gap:7px}body.editor-page .tool{width:46px;height:46px;padding:0;justify-content:center;gap:3px;border-radius:12px;background:transparent;border-color:transparent;box-shadow:none;transition:background .16s,box-shadow .16s,border-color .16s}body.editor-page .tool:hover{background:#fffc;border-color:#fff;box-shadow:0 6px 14px #36412f14}body.editor-page .tool .app-icon{width:18px;height:18px}body.editor-page .tool span{font-size:10px;letter-spacing:.05em;color:var(--ink-dim)}body.editor-page .tool.active{background:#e3ecdd;border-color:#cfdac8}body.editor-page .tool.active .app-icon,body.editor-page .tool.active span{color:var(--accent)}body.editor-page #topbar{-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}body.editor-page #topbar button{height:34px;padding:0 12px;border:1px solid #d3dacd;border-radius:9px;background:#ffffffc2;font-weight:600;white-space:nowrap;transition:background .16s,box-shadow .16s}body.editor-page #topbar button:hover{background:#fff}body.editor-page #topbar button.primary{background:var(--accent);border-color:var(--accent);color:#fff;box-shadow:0 8px 20px #305a4533}body.editor-page #btnUndo,body.editor-page #btnRedo{width:34px;padding:0;display:inline-flex;align-items:center;justify-content:center}body.editor-page #btnMode2d{border-radius:9px 0 0 9px}body.editor-page #btnMode3d{border-radius:0 9px 9px 0;margin-left:-1px}body.editor-page .mode-btn.active{background:#e3ecdd;border-color:#bcd0bd;color:var(--accent)}body.editor-page #planName{background:#ffffff8f;border:1px solid transparent;border-radius:9px;transition:border-color .15s,box-shadow .15s,background .15s}body.editor-page #planName:hover,body.editor-page #planName:focus{border-color:#d3dacd;background:#fff;box-shadow:0 0 0 3px #305a4520}body.editor-page .cursor-info{background:#fbfcf7d9;border:1px solid #ffffffcc;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:9px;box-shadow:0 8px 22px #36412f14;color:var(--ink-dim)}body.editor-page .connection-status{background:#fbfcf7e0;border:1px solid #ffffffd9;box-shadow:0 10px 28px #36412f1a;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-radius:12px}body.editor-page .walk-status{background:#fbfcf7e6;border:1px solid #ffffffd9;box-shadow:0 12px 30px #36412f1a;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}body.editor-page .room-badge{background:#f4f9f0e6;border:1px solid #9dc3a8;box-shadow:0 6px 16px #36412f14;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}body.editor-page .dim-label{box-shadow:0 6px 16px #36412f2e;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}body.editor-page .remote-cursor{box-shadow:0 4px 12px #263f3433;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}body.editor-page #readOnlyBanner{box-shadow:0 10px 26px #a5443040;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}@media (max-width:1180px){body.editor-page #topbar{height:auto;flex-wrap:wrap;padding:8px 12px;row-gap:8px}body.editor-page .top-actions{flex-wrap:wrap}}@media (max-width:720px){body.editor-page .tool{width:36px;height:36px;border-radius:10px}body.editor-page .tool .app-icon{width:16px;height:16px}body.editor-page #topbar button{height:30px;padding:0 9px;font-size:12px}}
