@font-face{font-family:Barlow;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/Barlow-400-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Barlow;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/Barlow-400-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Barlow;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/Barlow-500-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Barlow;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/Barlow-500-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Barlow;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/Barlow-700-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Barlow;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/Barlow-700-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Barlow Condensed;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/BarlowCondensed-400-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Barlow Condensed;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/BarlowCondensed-400-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Barlow Condensed;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/BarlowCondensed-600-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Barlow Condensed;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/BarlowCondensed-600-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Barlow Condensed;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/BarlowCondensed-700-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Barlow Condensed;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/BarlowCondensed-700-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--color-bg: #fbfcfb;--color-surface: #f1f5f2;--color-text: #1a1d1b;--color-accent: #2b9ad4;--color-accent-2: #6cc0e4;--color-divider: color-mix(in srgb, #1a1d1b 13%, transparent);--color-neutral-100: #f5f5f8;--color-neutral-200: #e7e7ea;--color-neutral-300: #d4d4d7;--color-neutral-400: #b7b7ba;--color-neutral-500: #98989b;--color-neutral-600: #7a7a7d;--color-neutral-700: #5d5d60;--color-neutral-800: #424244;--color-neutral-900: #2b2b2d;--color-accent-100: #eef8fd;--color-accent-200: #d0edfa;--color-accent-300: #a3dbf4;--color-accent-400: #6ec4ea;--color-accent-500: #45addd;--color-accent-600: #2b9ad4;--color-accent-700: #1f7aa9;--color-accent-800: #175c80;--color-accent-900: #103f58;--color-accent-2-100: #f0f9fd;--color-accent-2-200: #d9f0fa;--color-accent-2-300: #b9e3f4;--color-accent-2-400: #94d1ec;--color-accent-2-500: #6cc0e4;--color-accent-2-600: #4ba3c9;--color-accent-2-700: #3781a2;--color-accent-2-800: #285f78;--color-accent-2-900: #1b4253;--font-heading: "Barlow Condensed", system-ui, sans-serif;--font-heading-weight: 600;--font-body: "Barlow", system-ui, sans-serif;--space-1: 3.4px;--space-2: 6.8px;--space-3: 10.2px;--space-4: 13.6px;--space-6: 20.4px;--space-8: 27.2px;--radius-sm: 2px;--radius-md: 4px;--radius-lg: 7px;--shadow-sm: 0 1px 2px color-mix(in srgb, #2b2b2d 14%, transparent);--shadow-md: 0 3px 10px color-mix(in srgb, #2b2b2d 16%, transparent);--shadow-lg: 0 12px 32px color-mix(in srgb, #2b2b2d 22%, transparent);--glass-bg: color-mix(in srgb, var(--color-bg) 82%, transparent);--glass-bg-strong: color-mix(in srgb, var(--color-bg) 92%, transparent);--glass-border: color-mix(in srgb, var(--color-text) 14%, transparent);--glass-blur: 14px;--viewport-dark: #2b2d30;--axis-x: #d1495b;--axis-y: #d98324;--axis-z: #3d7ea6;--toolbar-h: 52px;color-scheme:light dark}:root[data-theme=dark]{--color-bg: #17191b;--color-surface: #202326;--color-text: #e7e8ea;--color-accent: #5cc3ee;--color-accent-2: #8bd3f2;--color-divider: color-mix(in srgb, #e7e8ea 18%, transparent);--color-neutral-100: #1b1d1f;--color-neutral-200: #26282b;--color-neutral-300: #34373a;--color-neutral-400: #4a4d51;--color-neutral-500: #6b6e72;--color-neutral-600: #8e9195;--color-neutral-700: #b0b3b7;--color-neutral-800: #d0d2d5;--color-neutral-900: #eceef0;--color-accent-100: #131f27;--color-accent-200: #172c38;--color-accent-300: #1f414f;--color-accent-400: #2c5d70;--color-accent-500: #3f7d94;--color-accent-600: #559eb9;--color-accent-700: #7cbcd8;--color-accent-800: #a6d5ea;--color-accent-900: #d2ebf7;--color-accent-2-100: #151d22;--color-accent-2-200: #1b272e;--color-accent-2-300: #26373f;--color-accent-2-400: #364d58;--color-accent-2-500: #4c6b78;--color-accent-2-600: #6d8f9d;--color-accent-2-700: #93b0bc;--color-accent-2-800: #b9cdd6;--color-accent-2-900: #dde8ed;--viewport-dark: #0e1012;--axis-x: #f07a88;--axis-y: #f0a95a;--axis-z: #6fb0d6;--glass-bg: color-mix(in srgb, var(--color-bg) 86%, transparent);--glass-bg-strong: color-mix(in srgb, var(--color-bg) 94%, transparent);--glass-border: color-mix(in srgb, var(--color-text) 18%, transparent);--shadow-sm: 0 1px 2px color-mix(in srgb, #000 45%, transparent);--shadow-md: 0 3px 10px color-mix(in srgb, #000 50%, transparent);--shadow-lg: 0 12px 32px color-mix(in srgb, #000 55%, transparent)}body{background:var(--color-bg);color:var(--color-text);font-family:var(--font-body)}h1,h2,h3,h4{font-family:var(--font-heading);font-weight:var(--font-heading-weight)}.blueprint{position:relative;border:1px solid var(--color-divider);border-radius:0}.blueprint.halftone,.blueprint.plate,.blueprint.duotone{overflow:visible}.blueprint>.corner{position:absolute;width:11px;height:11px;color:color-mix(in srgb,var(--color-text) 55%,transparent)}.blueprint>.corner:before,.blueprint>.corner:after{content:"";position:absolute;background:currentColor}.blueprint>.corner:before{left:5px;top:0;width:1px;height:100%}.blueprint>.corner:after{top:5px;left:0;width:100%;height:1px}.blueprint>.corner.tl{top:-6px;left:-6px}.blueprint>.corner.tr{top:-6px;right:-6px}.blueprint>.corner.bl{bottom:-6px;left:-6px}.blueprint>.corner.br{bottom:-6px;right:-6px}.duotone{position:relative;overflow:hidden}.duotone:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background:var(--color-accent);mix-blend-mode:color}*,*:before,*:after{box-sizing:border-box}body{margin:0;font-size:15px;line-height:1.55;font-weight:400}h1,h2,h3,h4,h5,h6{font-family:var(--font-heading);font-weight:var(--font-heading-weight);line-height:1.12;letter-spacing:-.015em;margin:0 0 var(--space-2)}h1{font-size:42px}h2{font-size:32px}h3{font-size:25px}h4{font-size:20px}h5{font-size:16px}h6{font-size:13px}h6{letter-spacing:.08em;text-transform:uppercase}p{margin:0 0 var(--space-3)}a{color:var(--color-accent);text-underline-offset:3px}img{display:block;max-width:100%}figure{margin:0}figcaption{font-size:11px;margin-top:var(--space-1);color:color-mix(in srgb,var(--color-text) 55%,transparent)}.text-muted{color:color-mix(in srgb,var(--color-text) 55%,transparent)}:focus{outline:none}:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}::selection{background:color-mix(in srgb,var(--color-accent) 30%,transparent)}.hr{height:1px;border:0;margin:var(--space-4) 0;background:var(--color-divider)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;cursor:pointer;text-decoration:none;font-family:var(--font-heading);font-weight:var(--font-heading-weight);font-size:14px;line-height:1.2;color:var(--color-text);background:transparent;border:1px solid transparent;padding:var(--space-2) calc(var(--space-3) * 1.2);border-radius:var(--radius-md)}.btn svg{display:block}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:var(--color-accent);color:var(--color-bg)}.btn-primary:hover{background:var(--color-accent-600)}.btn-primary:active{background:var(--color-accent-700)}.btn-secondary{border-color:var(--color-divider)}.btn-secondary:hover{background:color-mix(in srgb,var(--color-text) 7%,transparent)}.btn-secondary:active{background:color-mix(in srgb,var(--color-text) 14%,transparent)}.btn-ghost{color:var(--color-accent);padding-inline:var(--space-1)}.btn-ghost:hover{background:color-mix(in srgb,var(--color-accent) 10%,transparent)}.btn-ghost:active{background:color-mix(in srgb,var(--color-accent) 18%,transparent)}.btn-icon{width:36px;height:36px;padding:0}.btn-block{width:100%;margin-top:var(--space-2)}.field>label{display:block;font-size:12px;margin-bottom:5px;color:color-mix(in srgb,var(--color-text) 70%,transparent)}.input{width:100%;min-height:36px;padding:6px 10px;font:inherit;font-size:14px;color:var(--color-text);caret-color:var(--color-accent);background:var(--color-surface);border:1px solid var(--color-divider);border-radius:var(--radius-md)}.input:hover{border-color:color-mix(in srgb,var(--color-text) 45%,transparent)}.input:focus-visible{border-color:var(--color-accent);outline-offset:0}textarea.input{min-height:90px;resize:vertical}.radio{display:inline-flex;align-items:center;gap:8px;cursor:pointer;font-size:14px}.radio input,.seg-opt input{position:absolute;opacity:0;width:0;height:0;pointer-events:none}.radio .dot{width:16px;height:16px;flex:none;border-radius:50%;border:1.5px solid var(--color-divider)}.radio:hover .dot{border-color:var(--color-accent)}.radio input:checked+.dot{border-color:var(--color-accent);background:var(--color-accent);box-shadow:inset 0 0 0 4px var(--color-bg)}.radio input:focus-visible+.dot{outline:2px solid var(--color-accent);outline-offset:2px}.seg{display:inline-flex;overflow:hidden;border:1px solid var(--color-divider);border-radius:var(--radius-md)}.seg-opt{display:inline-flex;align-items:center;gap:6px;padding:7px 12px;font-size:13px;cursor:pointer}.seg-opt+.seg-opt{border-left:1px solid var(--color-divider)}.seg-opt:has(input:checked){background:var(--color-accent);color:var(--color-bg)}.seg-opt:not(:has(input:checked)):hover{background:color-mix(in srgb,var(--color-text) 7%,transparent)}.seg-opt:has(input:focus-visible){outline:2px solid var(--color-accent);outline-offset:-2px}.card{display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-3);border-radius:var(--radius-md);background:var(--color-surface)}.card-kicker{font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--color-accent)}.card-title{font-family:var(--font-heading);font-weight:var(--font-heading-weight);font-size:17px;line-height:1.2}.card-body{margin:0;font-size:13px;opacity:.8;flex:1}.card-meta{display:flex;align-items:center;gap:6px;font-size:11px;color:color-mix(in srgb,var(--color-text) 50%,transparent)}.elev-sm{box-shadow:var(--shadow-sm)}.elev-md{box-shadow:var(--shadow-md)}.elev-lg{box-shadow:var(--shadow-lg)}.tag{display:inline-flex;align-items:center;font-size:11px;letter-spacing:.02em;padding:3px 10px;border-radius:calc(var(--radius-md) * .75)}.tag-accent{background:var(--color-accent-100);color:var(--color-accent-800)}.tag-accent-2{background:var(--color-accent-2-100);color:var(--color-accent-2-800)}.tag-neutral{background:var(--color-neutral-100);color:var(--color-neutral-800)}.tag-outline{border:1px solid var(--color-accent);color:var(--color-accent)}.nav{display:flex;align-items:center;gap:var(--space-4);padding:var(--space-3) var(--space-4);border-bottom:none}.nav-brand{font-family:var(--font-heading);font-weight:var(--font-heading-weight);font-size:18px;margin-right:auto}.nav a{color:inherit;text-decoration:none;font-size:14px}.nav a:hover,.nav a[aria-current=page]{color:var(--color-accent)}.table{width:100%;border-collapse:collapse;font-size:14px}.table th{text-align:left;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:color-mix(in srgb,var(--color-text) 60%,transparent);padding:var(--space-2);border-bottom:1px solid var(--color-divider)}.table td{padding:var(--space-2);border-bottom:1px solid color-mix(in srgb,var(--color-text) 8%,transparent)}.table tbody tr:hover{background:color-mix(in srgb,var(--color-text) 4%,transparent)}.dialog-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;padding:var(--space-4);background:color-mix(in srgb,var(--color-neutral-900) 50%,transparent)}.dialog{width:min(440px,100%);display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-4);border-radius:var(--radius-lg);background:var(--color-surface);box-shadow:var(--shadow-lg)}.dialog-title{font-family:var(--font-heading);font-weight:var(--font-heading-weight);font-size:20px}.dialog-body{font-size:14px;opacity:.85}.dialog-actions{display:flex;justify-content:flex-end;gap:var(--space-2);margin-top:var(--space-2)}.card,.btn,.input,.tag,.seg,.dialog{border-radius:0}.card,.dialog{background:transparent;border:1px solid var(--color-divider)}.btn{border:1px solid var(--color-divider)}.btn-primary{border-color:var(--color-accent)}.btn-ghost{border-color:transparent}html,body,#app{height:100%}#app{display:flex;flex-direction:column;min-height:100vh}.app-header{display:flex;align-items:center;gap:14px;padding:14px 24px;border-bottom:1px solid var(--color-divider);flex:none}.brand{display:flex;align-items:center;gap:10px;cursor:pointer}.brand-mark{width:22px;height:22px;background:var(--color-accent)}.brand-name{font-family:var(--font-heading);font-weight:700;font-size:19px;letter-spacing:-.01em}.crumbs{display:flex;align-items:center;gap:8px;font-size:13px;opacity:.65}.crumbs .crumb-link{cursor:pointer}.crumbs .crumb-link:hover{color:var(--color-accent-700)}.header-right{margin-left:auto;display:flex;align-items:center;gap:14px}.lang-switch{display:inline-flex;border:1px solid var(--color-divider)}.lang-switch button{font-family:var(--font-heading);font-weight:600;font-size:12px;background:transparent;color:var(--color-text);border:none;padding:6px 12px;cursor:pointer}.offline-badge{white-space:nowrap}.theme-switch button{padding:5px 8px;display:inline-flex;align-items:center}.lang-switch button.active{background:var(--color-accent);color:var(--color-bg)}.lang-switch button:not(.active):hover{background:color-mix(in srgb,var(--color-text) 7%,transparent)}.app-main{position:relative;background-image:radial-gradient(60% 55% at 12% 8%,color-mix(in srgb,var(--color-accent) 12%,transparent),transparent 70%),radial-gradient(55% 50% at 88% 92%,color-mix(in srgb,var(--color-accent-2) 10%,transparent),transparent 70%),linear-gradient(color-mix(in srgb,var(--color-text) 4%,transparent) 1px,transparent 1px),linear-gradient(90deg,color-mix(in srgb,var(--color-text) 4%,transparent) 1px,transparent 1px);background-size:100% 100%,100% 100%,34px 34px,34px 34px}.app-main:has(.viewer){background-image:none}.auth-card,.project-card,.page .table{background:var(--glass-bg);-webkit-backdrop-filter:blur(var(--glass-blur)) saturate(1.2);backdrop-filter:blur(var(--glass-blur)) saturate(1.2);border-color:var(--glass-border)}.page .table{border:1px solid var(--glass-border)}.project-card:hover{background:color-mix(in srgb,var(--color-accent) 12%,var(--glass-bg))}.app-main{flex:1;display:flex;flex-direction:column;min-height:0}.page{padding:40px 48px;display:flex;flex-direction:column;gap:24px}.eyebrow{font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--color-accent-700);margin-bottom:6px}.page h1{font-weight:700;margin:0}.auth-wrap{flex:1;display:flex;align-items:center;justify-content:center;padding:40px 24px}.auth-card{width:min(380px,100%);padding:32px;display:flex;flex-direction:column;gap:18px}.auth-card h1{font-size:26px}.auth-form{display:flex;flex-direction:column;gap:14px}.auth-note{margin:0;font-size:11.5px;line-height:1.5;color:color-mix(in srgb,var(--color-text) 55%,transparent);border-left:2px solid var(--color-accent-400);padding-left:var(--space-3)}.tabs{display:inline-flex;border:1px solid var(--color-divider);width:fit-content}.tabs button{font-family:var(--font-heading);font-weight:600;font-size:13px;background:transparent;color:var(--color-text);border:none;padding:8px 16px;cursor:pointer}.tabs button.active{background:var(--color-accent);color:var(--color-bg)}.tabs button:not(.active):hover{background:color-mix(in srgb,var(--color-text) 7%,transparent)}.storage-note{font-size:11.5px;color:color-mix(in srgb,var(--color-text) 55%,transparent)}.storage-note .storage-warn{margin-left:var(--space-2);padding-left:var(--space-2);border-left:2px solid var(--color-accent-400);color:var(--color-accent-800)}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap}.project-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:22px}.project-card{padding:20px;min-height:150px;cursor:pointer;gap:10px}.project-card:hover{background:color-mix(in srgb,var(--color-accent) 5%,transparent)}.project-card .card-title{font-size:20px}.project-card .card-meta{font-size:12px;gap:14px;margin-top:auto}.project-card-actions{display:flex;gap:4px}.btn-ghost-sm{font-family:var(--font-heading);font-weight:600;font-size:11px;color:color-mix(in srgb,var(--color-text) 60%,transparent);background:transparent;border:none;cursor:pointer;padding:3px 6px}.btn-ghost-sm:hover{color:var(--color-accent-700);background:color-mix(in srgb,var(--color-accent) 10%,transparent)}.btn-ghost-sm:disabled{opacity:.4;cursor:not-allowed}.btn-ghost-sm:disabled:hover{background:transparent}.btn-ghost-sm.on{background:var(--color-accent);color:var(--color-bg)}.icon{flex:none;vertical-align:-.15em}.btn-ghost-sm,.tool-btn,.menu-item,.tab-btn{display:inline-flex;align-items:center;gap:var(--space-2)}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;padding:0;background:transparent;border:none;cursor:pointer;color:color-mix(in srgb,var(--color-text) 60%,transparent)}.icon-btn:hover:not(:disabled){color:var(--color-accent-700);background:color-mix(in srgb,var(--color-accent) 10%,transparent)}.icon-btn:disabled{opacity:.4;cursor:not-allowed}.toolbar,.view-buttons,.bg-buttons,.context-menu,.composer,.section-panel,.measure-panel,.pdf-pane,.pdf-bar,.dialog{background:var(--glass-bg);-webkit-backdrop-filter:blur(var(--glass-blur)) saturate(1.25);backdrop-filter:blur(var(--glass-blur)) saturate(1.25)}.dialog{background:var(--glass-bg-strong);border-color:var(--glass-border)}.dialog-backdrop{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.view-buttons,.bg-buttons,.context-menu{border-color:var(--glass-border)}html.no-glass .toolbar,html.no-glass .view-buttons,html.no-glass .bg-buttons,html.no-glass .context-menu,html.no-glass .composer,html.no-glass .section-panel,html.no-glass .measure-panel,html.no-glass .pdf-pane,html.no-glass .pdf-bar,html.no-glass .dialog,html.no-glass .dialog-backdrop,html.no-glass .viewer-left,html.no-glass .viewer-right,html.no-glass .auth-card,html.no-glass .project-card,html.no-glass .page .table,html.camera-busy .toolbar,html.camera-busy .view-buttons,html.camera-busy .bg-buttons,html.camera-busy .context-menu,html.camera-busy .composer,html.camera-busy .section-panel,html.camera-busy .measure-panel,html.camera-busy .pdf-pane,html.camera-busy .pdf-bar{-webkit-backdrop-filter:none;backdrop-filter:none;background:var(--glass-bg-strong)}html.no-glass .dialog,html.no-glass .auth-card,html.no-glass .project-card,html.no-glass .page .table{background:var(--color-bg)}.context-menu{position:absolute;z-index:40;min-width:150px;border:1px solid var(--color-divider);box-shadow:var(--shadow-md);display:flex;flex-direction:column}.context-menu button{font-family:var(--font-heading);font-weight:600;font-size:13px;text-align:left;background:transparent;color:var(--color-text);border:none;padding:8px 14px;cursor:pointer}.context-menu button:hover{background:color-mix(in srgb,var(--color-accent) 12%,transparent)}.dialog-title{display:flex;align-items:center;gap:var(--space-2)}.dialog-tall{max-height:calc(100vh - 64px);overflow-y:auto}.set-group{display:flex;flex-direction:column;gap:var(--space-2)}.set-group+.set-group{border-top:1px solid var(--color-divider);padding-top:var(--space-3)}.set-head{font-family:var(--font-heading);font-weight:600;font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--color-accent-700)}.set-row{display:flex;align-items:center;gap:var(--space-3)}.set-row .set-label{font-size:13px;min-width:150px}.set-row .input{flex:1;font-size:13px;padding:5px 8px}.set-row.set-off{opacity:.45}.set-note{font-size:11.5px;color:color-mix(in srgb,var(--color-text) 55%,transparent)}.set-remembered{display:flex;flex-wrap:wrap;gap:var(--space-2) var(--space-4);font-size:12px}.set-keys{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-2) var(--space-4);font-size:12px}.set-key{display:flex;align-items:baseline;gap:var(--space-2)}.set-keys kbd{font-family:ui-monospace,monospace;font-size:11px;white-space:nowrap;border:1px solid var(--color-divider);background:var(--color-surface);padding:1px 5px;color:var(--color-text)}@media(max-width:620px){.set-keys{grid-template-columns:1fr}}.file-row{cursor:pointer}.file-row td:nth-child(2){font-weight:500}.viewer{flex:1;display:flex;min-height:0;position:relative}.viewer-left,.viewer-right{position:absolute;top:var(--toolbar-h);bottom:0;z-index:12;padding:16px;overflow-y:auto;display:flex;flex-direction:column;background:var(--glass-bg);-webkit-backdrop-filter:blur(var(--glass-blur)) saturate(1.25);backdrop-filter:blur(var(--glass-blur)) saturate(1.25)}.viewer-left{left:0;width:260px;gap:16px;border-right:1px solid var(--glass-border)}.viewer-right{right:0;width:320px;gap:12px;border-left:1px solid var(--glass-border)}.pdf-pane{position:absolute;top:var(--toolbar-h);bottom:0;right:320px;z-index:12}.viewer-center{flex:1;display:flex;flex-direction:column;min-width:0;position:relative}.toolbar{position:absolute;top:0;left:0;right:0;z-index:14}html.camera-busy .viewer-left,html.camera-busy .viewer-right{-webkit-backdrop-filter:none;backdrop-filter:none;background:var(--glass-bg-strong)}.panel-toggles,.drawer-backdrop{display:none}@media(max-width:860px){.viewer-left,.viewer-right{position:absolute;top:0;bottom:0;z-index:30;width:min(280px,82vw);background:var(--color-bg);display:none;box-shadow:var(--shadow-lg)}.viewer-left{left:0}.viewer-right{right:0}.viewer-left.open,.viewer-right.open{display:flex}.drawer-backdrop.show{display:block;position:absolute;top:0;right:0;bottom:0;left:0;z-index:20;background:color-mix(in srgb,var(--color-neutral-900) 35%,transparent)}.panel-toggles{display:flex;gap:6px;position:absolute;top:calc(var(--toolbar-h) + 8px);left:8px;z-index:15}.panel-toggle{font-family:var(--font-heading);font-weight:600;font-size:11px;background:var(--color-bg);color:var(--color-text);border:1px solid var(--color-divider);padding:5px 10px;cursor:pointer}.toolbar{overflow-x:auto}}.side-label{font-size:11px;text-transform:uppercase;letter-spacing:.08em;opacity:.6}.toolbar{display:flex;align-items:center;gap:8px;padding:10px 16px;border-bottom:1px solid var(--color-divider);flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden}.toolbar>button,.toolbar>.tool-seg,.toolbar>.tool-menu,.toolbar>.toolbar-divider{flex:none}.toolbar button{white-space:nowrap}.showing-counter{white-space:nowrap;flex:none}.tool-btn{font-family:var(--font-heading);font-weight:600;font-size:13px;background:transparent;color:var(--color-text);border:1px solid var(--color-divider);padding:7px 13px;cursor:pointer}.tool-btn.active{background:var(--color-accent);color:var(--color-bg);border-color:var(--color-accent)}.tool-btn:not(.active):hover{background:color-mix(in srgb,var(--color-text) 7%,transparent)}.showing-counter{margin-left:auto;font-size:11px;font-family:monospace;opacity:.55}.toolbar-divider{width:1px;align-self:stretch;background:var(--color-divider);margin:0 2px}.tool-seg{display:inline-flex;border:1px solid var(--color-divider)}.tool-seg .tool-btn{border:none}.tool-seg .tool-btn+.tool-btn{border-left:1px solid var(--color-divider)}.tool-menu{position:relative;display:inline-flex}.menu-trigger .caret{font-size:9px;opacity:.6;margin-left:2px}.tool-menu.open .menu-trigger{background:var(--color-accent);color:var(--color-bg);border-color:var(--color-accent)}.tool-menu.open .menu-trigger .caret{opacity:.9}.menu-panel{display:none;position:fixed;z-index:60;min-width:160px;flex-direction:column;background:var(--color-bg);border:1px solid var(--color-divider);box-shadow:0 2px 8px color-mix(in srgb,var(--color-text) 18%,transparent)}.tool-menu.open .menu-panel{display:flex}.menu-item{font-family:var(--font-body);font-size:12px;text-align:left;background:transparent;color:var(--color-text);border:none;padding:7px 12px;cursor:pointer;white-space:nowrap}.menu-item:hover:not(:disabled){background:color-mix(in srgb,var(--color-accent) 12%,transparent)}.menu-item:disabled{opacity:.4;cursor:default}.menu-item.on{border-left:3px solid var(--color-accent);padding-left:9px;font-weight:600}.viewport{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;background-color:var(--color-bg)}.viewport.bg-grid{background-color:var(--color-surface);background-image:repeating-linear-gradient(135deg,color-mix(in srgb,var(--color-text) 5%,transparent) 0px,color-mix(in srgb,var(--color-text) 5%,transparent) 1px,transparent 1px,transparent 14px)}.viewport.bg-dark{background-color:var(--viewport-dark)}.viewport.placing{cursor:crosshair}.pdf-pane{width:380px;display:flex;flex-direction:column;min-height:0;border-left:1px solid var(--glass-border)}.pdf-bar{display:flex;align-items:center;gap:6px;padding:8px 10px;border-bottom:1px solid var(--color-divider)}.pdf-bar .filter-select{flex:1;min-width:0}.pdf-page{font-family:monospace;font-size:11px;opacity:.7;white-space:nowrap}.pdf-scroll{flex:1;min-height:0;overflow:auto;padding:8px;background:var(--color-surface)}.pdf-canvas{display:block;margin:0 auto;border:1px solid var(--color-divider);background:#fff}@media(max-width:1100px){.pdf-pane{width:300px}}.grid-label{position:absolute;transform:translate(-50%,-50%);font-family:var(--font-heading);font-weight:600;font-size:10px;color:var(--color-neutral-700);background:var(--color-bg);border:1px solid var(--color-divider);border-radius:50%;min-width:18px;height:18px;line-height:16px;text-align:center;padding:0 3px;white-space:nowrap;pointer-events:none}.zoom-band{position:absolute;z-index:12;pointer-events:none;border:1px dashed var(--color-accent);background:color-mix(in srgb,var(--color-accent) 12%,transparent)}.select-band{border-style:solid}.viewport canvas{display:block}.viewport-hint{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;gap:14px;align-items:center;justify-content:center;text-align:center;pointer-events:none}.viewport-hint .hint-text{font-family:monospace;font-size:12px;opacity:.4;letter-spacing:.04em}.viewport-hint .btn{pointer-events:auto}.viewport.drag-over{outline:2px dashed var(--color-accent);outline-offset:-6px}.pin{position:absolute;transform:translate(-50%,-50%);width:26px;height:26px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600;cursor:pointer;color:#fff;background:var(--color-accent);border:2px solid transparent;box-shadow:0 1px 4px color-mix(in srgb,#000 25%,transparent)}.pin.resolved{background:var(--color-neutral-600)}.pin.active{border-color:#fff;box-shadow:0 0 0 2px var(--color-accent)}.pin-draft{position:absolute;transform:translate(-50%,-50%);width:22px;height:22px;border-radius:50%;border:2px dashed var(--color-accent);pointer-events:none}.composer{position:absolute;bottom:16px;left:16px;width:320px;border:1px solid var(--glass-border);padding:14px;display:flex;flex-direction:column;gap:8px;box-shadow:var(--shadow-lg)}.composer-title{font-size:12px;font-weight:600}.composer-actions{display:flex;gap:8px;justify-content:flex-end}.measure-panel{position:absolute;top:12px;left:50%;transform:translate(-50%);z-index:15;display:flex;align-items:center;gap:8px;padding:6px 10px;border:1px solid var(--glass-border)}.measure-panel .measure-hint{font-size:11px;opacity:.6}.measure-panel .measure-snap-label{font-size:10px;text-transform:uppercase;letter-spacing:.06em;opacity:.55}.measure-panel .section-axisbar button{padding:4px 8px;font-size:11px}.measure-panel .measure-count{font-family:monospace;font-size:11px;opacity:.7}.measure-panel .measure-breakdown{font-family:monospace;font-size:11px;color:var(--color-accent-800);border-left:1px solid var(--color-divider);padding-left:8px}.measure-label{position:absolute;transform:translate(-50%,-50%);display:flex;align-items:center;gap:4px;background:var(--color-accent);color:var(--color-bg);font-family:monospace;font-size:11px;padding:2px 4px 2px 7px;white-space:nowrap;pointer-events:auto;cursor:pointer;border:1px solid transparent}.measure-label:hover{background:var(--color-accent-600)}.measure-label.selected{background:var(--color-accent-800);border-color:var(--color-bg)}.measure-label .measure-del{display:none;background:transparent;border:none;color:inherit;font-size:13px;line-height:1;padding:0 3px;cursor:pointer}.measure-label.selected .measure-del{display:block}.measure-label.measure-axis{background:var(--axis-color, var(--color-accent));font-size:10px;padding:1px 5px;opacity:.95}.section-panel{position:absolute;bottom:14px;left:50%;transform:translate(-50%);z-index:15;display:flex;flex-direction:column;align-items:center;gap:6px;padding:8px 10px;border:1px solid var(--glass-border)}.section-panel .section-body{display:flex;flex-direction:column;align-items:center;gap:5px}.section-slider{width:220px;accent-color:var(--color-accent)}.section-angle-row{display:flex;align-items:center;gap:6px}.section-angle-row input[type=range]{width:120px;accent-color:var(--color-accent)}.section-angle-row input[type=number]{width:54px;font-family:monospace;font-size:11px;background:var(--color-bg);color:var(--color-text);border:1px solid var(--color-divider);padding:2px 4px}.section-box-row{display:flex;align-items:center;gap:6px}.section-box-row input[type=range]{width:90px;accent-color:var(--color-accent)}.section-box-axis{font-family:var(--font-heading);font-weight:600;font-size:11px;width:12px;text-align:center;opacity:.7}.section-box-reset{margin-top:2px}.viewport-tools{position:absolute;top:calc(var(--toolbar-h) + 12px);right:336px;z-index:15;display:flex;flex-direction:column;align-items:flex-end;gap:8px}.viewer:has(.pdf-pane) .viewport-tools{right:716px}.view-buttons{display:flex;flex-direction:column;border:1px solid var(--color-divider)}.view-buttons button{font-family:var(--font-heading);font-weight:600;font-size:11px;background:transparent;color:var(--color-text);border:none;padding:6px 10px;cursor:pointer;text-align:right}.view-buttons button+button{border-top:1px solid var(--color-divider)}.view-buttons button:hover{background:color-mix(in srgb,var(--color-accent) 12%,transparent)}.bg-buttons{display:inline-flex;border:1px solid var(--color-divider)}.bg-buttons button{font-family:var(--font-heading);font-weight:600;font-size:11px;background:transparent;color:var(--color-text);border:none;padding:5px 9px;cursor:pointer;display:inline-flex;align-items:center;gap:var(--space-1)}.bg-buttons button+button{border-left:1px solid var(--color-divider)}.bg-buttons button:hover{background:color-mix(in srgb,var(--color-accent) 12%,transparent)}.bg-buttons button.active{background:var(--color-accent);color:var(--color-bg)}.section-axisbar{display:inline-flex;border:1px solid var(--color-divider);background:var(--color-bg)}.section-axisbar button{font-family:var(--font-heading);font-weight:600;font-size:12px;background:transparent;color:var(--color-text);border:none;padding:5px 12px;cursor:pointer}.section-axisbar button+button{border-left:1px solid var(--color-divider)}.section-axisbar button.active{background:var(--color-accent);color:var(--color-bg)}.section-axisbar button:not(.active):hover{background:color-mix(in srgb,var(--color-text) 7%,transparent)}.comment-card{border:1px solid var(--color-divider);border-left:3px solid var(--color-accent);padding:12px;display:flex;flex-direction:column;gap:8px;cursor:pointer}.comment-card.resolved{border-left-color:var(--color-neutral-600)}.comment-card.active{background:color-mix(in srgb,var(--color-accent) 8%,transparent)}.comment-head{display:flex;align-items:center;gap:8px}.comment-dot{width:20px;height:20px;border-radius:50%;flex:none;background:var(--color-accent);color:#fff;font-size:11px;font-weight:600;display:flex;align-items:center;justify-content:center}.comment-card.resolved .comment-dot{background:var(--color-neutral-600)}.comment-author{font-size:13px;font-weight:500}.comment-time{margin-left:auto;font-size:11px;opacity:.5}.comment-text{font-size:13px;line-height:1.5}.comment-foot{display:flex;align-items:center;justify-content:space-between}.comment-toggle{font-family:var(--font-heading);font-weight:600;font-size:12px;color:var(--color-accent);background:transparent;border:none;cursor:pointer;padding:2px}.empty-note{font-size:13px;opacity:.55;padding:8px 2px}.comment-snapshot{width:100%;display:block;border:1px solid var(--color-divider);border-radius:0;cursor:pointer}.error-note{font-size:13px;font-weight:600;padding:8px 10px;border-left:3px solid var(--color-accent-700);background:color-mix(in srgb,var(--color-text) 5%,transparent)}.selset-new{display:flex;gap:6px}.selset-new input{flex:1;min-width:0;font-family:var(--font-body);font-size:12px;background:var(--color-bg);color:var(--color-text);border:1px solid var(--color-divider);padding:5px 8px}.selset-new input:disabled{opacity:.5}.selset-list{display:flex;flex-direction:column;gap:8px}.selset-card{border:1px solid var(--color-divider);border-left:3px solid var(--color-accent);padding:10px;display:flex;flex-direction:column;gap:8px}.selset-head{display:flex;align-items:baseline;gap:8px}.selset-name{font-family:var(--font-heading);font-weight:600;font-size:13px;flex:1;word-break:break-word}.selset-count{font-family:monospace;font-size:11px;opacity:.55}.selset-actions{display:flex;flex-wrap:wrap;gap:4px}.rename-input{flex:1;min-width:0;font-family:var(--font-heading);font-weight:600;font-size:13px;background:var(--color-bg);color:var(--color-text);border:1px solid var(--color-accent);padding:2px 5px}.legend-list{max-height:40vh;overflow-y:auto;border:1px solid var(--color-divider);padding:6px;display:flex;flex-direction:column;gap:3px}.legend-row{display:flex;align-items:center;gap:8px;font-size:12px}.legend-swatch{width:14px;height:14px;flex:none;border:1px solid var(--color-divider)}.legend-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.legend-count{font-family:monospace;font-size:11px;opacity:.6}.folder-trail{display:flex;align-items:center;gap:6px;flex-wrap:wrap;font-size:13px}.folder-trail .crumb{background:transparent;border:none;padding:2px 0;cursor:pointer;color:var(--color-accent);font-family:var(--font-body);font-size:13px}.folder-trail .crumb:hover{text-decoration:underline}.folder-trail .crumb-sep{opacity:.4}.folder-row{font-weight:600}.row-ignored{opacity:.5}.row-ignored td:nth-child(3){text-decoration:line-through}.file-search-box{margin-left:auto;display:inline-flex;align-items:center;gap:var(--space-2);border:1px solid var(--color-divider);background:var(--color-bg);padding:3px var(--space-2);color:var(--color-neutral-600)}.file-search-box:focus-within{border-color:var(--color-accent);color:var(--color-accent-700)}.file-search{border:none;background:transparent;outline:none;font-family:var(--font-body);font-size:12px;color:var(--color-text);width:210px}.folder-trail .crumb-search{font-family:var(--font-body);font-size:13px;opacity:.7}.row-path{font-size:11px;opacity:.55;margin-left:var(--space-2)}.row-icon{display:inline-flex;vertical-align:-3px;margin-right:var(--space-2);color:var(--color-accent-700)}.folder-row .row-icon{color:var(--color-accent)}.move-select{max-width:120px;font-size:11px;padding:3px 4px}.qto-scroll{max-height:55vh;overflow:auto;border:1px solid var(--color-divider)}.qto-table{width:100%;font-size:12px}.qto-table thead th{position:sticky;top:0;background:var(--color-bg);z-index:1;border-bottom:1px solid var(--color-divider)}.qto-table tfoot td{position:sticky;bottom:0;background:var(--color-bg);font-weight:600;border-top:1px solid var(--color-divider)}.filter-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.filter-col{display:flex;flex-direction:column;gap:6px;min-width:0}.filter-list{max-height:190px;overflow-y:auto;border:1px solid var(--color-divider);padding:6px;display:flex;flex-direction:column;gap:3px}.filter-item{display:flex;align-items:center;gap:6px;font-size:12px;cursor:pointer}.filter-item input{accent-color:var(--color-accent)}.filter-prop-row{display:flex;gap:6px;align-items:center}.filter-select{flex:1;min-width:0;font-family:var(--font-body);font-size:12px;background:var(--color-bg);color:var(--color-text);border:1px solid var(--color-divider);padding:5px 6px}.filter-status{min-height:18px;font-size:12px;font-family:monospace;opacity:.75}@media(max-width:560px){.filter-grid{grid-template-columns:1fr}}.view-list{display:flex;flex-direction:column;gap:8px}.view-card{border:1px solid var(--color-divider);border-left:3px solid var(--color-accent);padding:10px;display:flex;flex-direction:column;gap:8px}.view-card.active{background:color-mix(in srgb,var(--color-accent) 8%,transparent)}.view-thumb{width:100%;display:block;border:1px solid var(--color-divider);background:var(--color-surface)}.view-head{display:flex;align-items:baseline;gap:8px}.view-name{font-family:var(--font-heading);font-weight:600;font-size:13px;flex:1;word-break:break-word}.view-time{font-size:11px;opacity:.55;white-space:nowrap}.right-tabs{display:flex;border:1px solid var(--color-divider)}.right-tabs button{flex:1;min-width:0;font-family:var(--font-heading);font-weight:600;font-size:11px;background:transparent;color:var(--color-text);border:none;padding:6px 2px;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.right-tabs button>.icon{opacity:.75}.right-tabs button.active>.icon{opacity:1}.right-tabs button.active{background:var(--color-accent);color:var(--color-bg)}.props-table{width:100%;border-collapse:collapse;font-size:12px}.props-table td{padding:5px 6px;vertical-align:top;border-bottom:1px solid color-mix(in srgb,var(--color-text) 8%,transparent);word-break:break-word}.props-table td:first-child{opacity:.6;width:45%}.props-group{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--color-accent-700);padding-top:10px}.tree-model-heading{display:flex;align-items:center;gap:6px;cursor:pointer;font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--color-accent-700);margin:10px 0 4px;padding-bottom:3px;border-bottom:1px solid var(--color-divider)}.tree-model-heading input{accent-color:var(--color-accent);flex:none}.tree-model-heading span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tree-floor-row{display:flex;align-items:center;gap:6px;padding:5px 4px}.tree-chevron{cursor:pointer;width:12px;text-align:center;font-size:10px;opacity:.6}.tree-floor-name{font-size:13px;font-weight:500;cursor:pointer;flex:1}.tree-cats{padding-left:26px;display:flex;flex-direction:column;gap:5px;margin:4px 0 8px}.tree-cat{display:flex;align-items:center;gap:8px;font-size:13px;opacity:.85}.tree-cat-name{flex:1;cursor:pointer}.tree-cat-name:hover{color:var(--color-accent-700)}.tree-cat.active{opacity:1}.tree-cat.active .tree-cat-name{color:var(--color-accent-700);font-weight:600}.tree-search{margin-bottom:10px;font-size:13px}.tree input[type=checkbox]{accent-color:var(--color-accent);cursor:pointer}.version-dialog{width:min(560px,100%)}
