:root{--bg-base:#f0f4f8;--bg-gradient:radial-gradient(ellipse 90% 70% at 8% 15%, #7dd3fc73 0%, transparent 55%), radial-gradient(ellipse 80% 60% at 92% 8%, #c4b5fd66 0%, transparent 50%), radial-gradient(ellipse 70% 65% at 78% 88%, #a7f3d059 0%, transparent 55%), radial-gradient(ellipse 55% 45% at 18% 90%, #a5b4fc47 0%, transparent 50%), radial-gradient(ellipse 40% 35% at 50% 45%, #bae6fd40 0%, transparent 60%), linear-gradient(168deg, #f0f4f8 0%, #e8eef5 42%, #e4ecf4 100%);--glass-fill:#ffffff85;--glass-fill-strong:#ffffffa6;--glass-fill-soft:#fff6;--glass-fill-hover:#ffffffc7;--glass-border:#ffffffb8;--glass-border-strong:#ffffffe6;--glass-border-inner:#94a3b838;--glass-highlight:linear-gradient(125deg, #ffffffd9 0%, #ffffff59 28%, #7dd3fc1f 55%, transparent 75%);--glass-blur:28px;--glass-blur-lg:40px;--glass-blur-sm:16px;--glass-saturate:1.45;--glass-shadow:0 12px 40px #0f172a14, 0 4px 12px #0f172a0a, 0 0 0 1px #ffffff80;--glass-shadow-lg:0 24px 64px #0f172a1a, 0 8px 20px #0f172a0d, 0 0 40px #7dd3fc1f;--glass-inset:inset 0 1px 0 #ffffffe6, inset 0 -1px 0 #94a3b814, inset 1px 0 0 #ffffff80;--glass-fallback:#f0f4f8f5;--glass-fallback-strong:#fffffff7;--glass-fallback-soft:#e8eef5f0;--text-primary:#0f172a;--text-secondary:#334155c7;--text-muted:#64748bd9;--text-inverse:#f8fafc;--text-accent:#0891b2;--accent-teal:#14b8a6;--accent-teal-bright:#0d9488;--accent-teal-dim:#14b8a629;--accent-teal-glow:#14b8a659;--accent-cyan:#06b6d4;--accent-cyan-bright:#0891b2;--accent-cyan-glow:#06b6d459;--accent-violet:#8b5cf6;--beam-core:#fde047;--beam-mid:#eab308;--beam-edge:#eab30840;--beam-glow:#fde04773;--beam-fill:#facc1559;--beam-stroke:#fde047b3;--success:#059669;--success-dim:#0596691f;--danger:#dc2626;--danger-dim:#dc26261f;--warning:#d97706;--radius-xs:6px;--radius-sm:10px;--radius-md:14px;--radius-lg:20px;--radius-xl:28px;--radius-pill:999px;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--space-10:40px;--gap-cards:16px;--pad-card:20px;--pad-card-sm:14px;--font-sans:"Inter", "Noto Sans SC", "PingFang SC", "Microsoft YaHei", system-ui, sans-serif;--font-mono:"JetBrains Mono", "SF Mono", "Cascadia Code", ui-monospace, monospace;--fs-xs:11px;--fs-sm:12px;--fs-base:14px;--fs-md:15px;--fs-lg:17px;--fs-xl:20px;--fs-2xl:24px;--fs-3xl:30px;--lh-tight:1.25;--lh-normal:1.5;--fw-regular:400;--fw-medium:500;--fw-semibold:600;--fw-bold:700;--input-bg:#ffffffb8;--input-border:#94a3b866;--input-border-focus:#06b6d4b3;--input-height:36px;--slider-track:#94a3b859;--slider-fill:var(--accent-cyan);--slider-thumb:#fff;--slider-thumb-ring:#06b6d459;--slider-height:6px;--slider-thumb-size:18px;--btn-primary-bg:linear-gradient(135deg, #22d3ee 0%, #14b8a6 55%, #0d9488 100%);--btn-primary-text:#042f2e;--btn-primary-shadow:0 6px 28px #06b6d459, 0 0 40px #14b8a62e;--btn-secondary-bg:#ffffff8c;--btn-secondary-border:#94a3b859;--btn-secondary-text:var(--text-primary);--btn-height:40px;--btn-height-sm:32px;--shell-max:1280px;--topbar-height:56px;--sidebar-width:280px;--transition-fast:.15s ease;--transition-base:.22s ease;--badge-bg:linear-gradient(135deg, #06b6d424, #8b5cf61f);--badge-border:#06b6d459}[data-theme=light-glass]{--bg-base:#f0f4f8;--glass-fill:#ffffff85;--glass-fill-strong:#ffffffa6;--glass-fill-soft:#fff6;--glass-border:#ffffffb8;--glass-border-strong:#ffffffe6;--text-primary:#0f172a;--text-secondary:#334155c7;--text-muted:#64748bd9;--text-accent:#0891b2;--input-bg:#ffffffb8;--input-border:#94a3b866;--slider-track:#94a3b859;--btn-secondary-bg:#ffffff8c;--btn-secondary-border:#94a3b859;--btn-secondary-text:#0f172a}.glass{background:var(--glass-fill);-webkit-backdrop-filter:blur(var(--glass-blur)) saturate(var(--glass-saturate));border:1px solid var(--glass-border);border-radius:var(--radius-lg);box-shadow:var(--glass-shadow), var(--glass-inset)}.glass-strong{background:var(--glass-fill-strong);-webkit-backdrop-filter:blur(var(--glass-blur-lg)) saturate(var(--glass-saturate));border:1px solid var(--glass-border-strong);border-radius:var(--radius-lg);box-shadow:var(--glass-shadow-lg), var(--glass-inset)}.glass-soft{background:var(--glass-fill-soft);-webkit-backdrop-filter:blur(var(--glass-blur-sm)) saturate(var(--glass-saturate));border:1px solid var(--glass-border-inner);border-radius:var(--radius-md);box-shadow:var(--glass-inset)}@media (width<=768px),(prefers-reduced-transparency:reduce){.glass,.glass-strong,.glass-soft{-webkit-backdrop-filter:none}.glass{background:var(--glass-fallback)}.glass-strong{background:var(--glass-fallback-strong)}.glass-soft{background:var(--glass-fallback-soft)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body{min-height:100%}body{font-family:var(--font-sans);font-size:var(--fs-base);color:var(--text-primary);background:var(--bg-base);background-image:var(--bg-gradient);line-height:var(--lh-normal);-webkit-font-smoothing:antialiased;background-attachment:fixed}#app{min-height:100vh}.shell{max-width:var(--shell-max);padding:var(--space-4) var(--space-5) var(--space-8);margin:0 auto}.topbar{height:var(--topbar-height);padding:0 var(--space-5);margin-bottom:var(--gap-cards);justify-content:space-between;align-items:center;display:flex;position:relative;overflow:hidden}.topbar:before{content:"";background:var(--glass-highlight);pointer-events:none;opacity:.7;position:absolute;inset:0}.brand{z-index:1;flex-direction:column;gap:2px;display:flex;position:relative}.brand h1{font-size:var(--fs-xl);font-weight:var(--fw-semibold);letter-spacing:.02em;line-height:var(--lh-tight)}.brand .sub{font-size:var(--fs-xs);color:var(--text-muted);font-weight:var(--fw-regular)}.brand .sub a{color:var(--text-accent);text-decoration:none}.brand .sub a:hover{text-decoration:underline}.topbar-badge{z-index:1;font-size:var(--fs-xs);color:var(--text-accent);background:var(--badge-bg);border:1px solid var(--badge-border);border-radius:var(--radius-pill);padding:4px 12px;position:relative}.main{grid-template-columns:var(--sidebar-width) 1fr;gap:var(--gap-cards);align-items:start;display:grid}@media (width<=900px){.main{grid-template-columns:1fr}}.card{padding:var(--pad-card);position:relative;overflow:hidden}.card:before{content:"";background:var(--glass-highlight);pointer-events:none;opacity:.55;position:absolute;inset:0}.card>*{z-index:1;position:relative}.card-title{font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:var(--text-secondary);margin-bottom:var(--space-4);letter-spacing:.04em}.params{gap:var(--space-5);flex-direction:column;display:flex}.param{gap:var(--space-2);flex-direction:column;display:flex}.param-head{justify-content:space-between;align-items:baseline;gap:var(--space-2);display:flex}.param-label{font-size:var(--fs-sm);color:var(--text-secondary)}.param-hint{display:none}.param-value-wrap{align-items:center;gap:6px;display:flex}.param-input{width:72px;height:var(--input-height);background:var(--input-bg);border:1px solid var(--input-border);border-radius:var(--radius-sm);color:var(--text-primary);font-family:var(--font-mono);font-size:var(--fs-base);font-weight:var(--fw-medium);text-align:right;transition:border-color var(--transition-fast), box-shadow var(--transition-fast);-moz-appearance:textfield;outline:none;padding:0 8px}.param-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.param-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.param-input:focus{border-color:var(--input-border-focus);box-shadow:0 0 0 3px var(--accent-cyan-glow)}.param-unit{font-size:var(--fs-xs);color:var(--text-muted);min-width:1.5em}input[type=range]{appearance:none;width:100%;height:var(--slider-height);border-radius:var(--radius-pill);background:var(--slider-track);cursor:pointer;outline:none}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:var(--slider-thumb-size);height:var(--slider-thumb-size);background:var(--slider-thumb);border:2px solid var(--accent-cyan);box-shadow:0 0 0 3px var(--slider-thumb-ring), 0 2px 6px #0f172a1f;cursor:pointer;transition:transform var(--transition-fast);border-radius:50%}input[type=range]::-webkit-slider-thumb:hover{transform:scale(1.08)}input[type=range]::-moz-range-thumb{width:var(--slider-thumb-size);height:var(--slider-thumb-size);background:var(--slider-thumb);border:2px solid var(--accent-cyan);box-shadow:0 0 0 3px var(--slider-thumb-ring);cursor:pointer;border-radius:50%}input[type=range]::-moz-range-track{height:var(--slider-height);border-radius:var(--radius-pill);background:var(--slider-track)}.actions{gap:var(--space-3);margin-top:var(--space-2);padding-top:var(--space-4);border-top:1px solid var(--glass-border-inner);display:flex}.btn{height:var(--btn-height);border-radius:var(--radius-md);font-family:var(--font-sans);font-size:var(--fs-base);font-weight:var(--fw-semibold);cursor:pointer;transition:transform var(--transition-fast), box-shadow var(--transition-fast), background var(--transition-fast), filter var(--transition-fast);border:none;flex:1}.btn:active{transform:scale(.98)}.btn-secondary{background:var(--btn-secondary-bg);border:1px solid var(--btn-secondary-border);color:var(--btn-secondary-text)}.btn-secondary:hover{background:var(--glass-fill-hover)}.btn-primary{background:var(--btn-primary-bg);color:var(--btn-primary-text);box-shadow:var(--btn-primary-shadow)}.btn-primary:hover{filter:brightness(1.06)}.views{gap:var(--gap-cards);flex-direction:column;min-width:0;display:flex}.view-row{gap:var(--gap-cards);grid-template-columns:1.2fr .8fr;display:grid}@media (width<=720px){.view-row{grid-template-columns:1fr}}.view-canvas{border-radius:var(--radius-md);border:1px solid var(--glass-border-inner);background:#0f172a0a;justify-content:center;align-items:stretch;min-height:220px;display:flex;position:relative;overflow:hidden}.view-canvas.wall-combo{grid-template-columns:1.4fr .7fr;gap:0;min-height:400px;display:grid}@media (width<=720px){.view-canvas.wall-combo{grid-template-columns:1fr;min-height:640px}}.view-canvas canvas{width:100%;height:100%;min-height:200px;display:block}.wall-spot-pane{border-left:1px solid var(--glass-border-inner);min-height:360px}@media (width<=720px){.wall-spot-pane{border-left:none;border-top:1px solid var(--glass-border-inner);min-height:300px}}.floor-canvas{min-height:220px}.floor-canvas canvas{min-height:200px}.vert-canvas{min-height:220px}.vert-canvas canvas{min-height:200px}.results{gap:var(--space-4);padding:var(--pad-card-sm) var(--pad-card);grid-template-columns:auto 1fr 1fr;align-items:start;display:grid;position:relative;overflow:hidden}.results:before{content:"";background:var(--glass-highlight);pointer-events:none;opacity:.45;position:absolute;inset:0}.results>*{z-index:1;position:relative}@media (width<=720px){.results{grid-template-columns:1fr}}.results-label{font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:var(--accent-teal-bright);white-space:nowrap;padding-top:4px}.result-group{gap:var(--space-3) var(--space-5);flex-wrap:wrap;display:flex}.result-item{flex-direction:column;gap:2px;min-width:88px;display:flex}.result-item .k{font-size:var(--fs-xs);color:var(--text-muted)}.result-item .v{font-family:var(--font-mono);font-size:var(--fs-md);font-weight:var(--fw-semibold);color:var(--text-primary)}.result-item .v span{font-size:var(--fs-xs);font-weight:var(--fw-regular);color:var(--text-muted);margin-left:2px}.result-item.detail .v{font-size:var(--fs-base);font-weight:var(--fw-medium)}.footer-note{margin-top:var(--space-5);text-align:center;font-size:var(--fs-xs);color:var(--text-muted)}.footer-note a{color:var(--text-accent);text-decoration:none}.footer-note a:hover{text-decoration:underline}.glass{-webkit-backdrop-filter:blur(var(--glass-blur)) saturate(var(--glass-saturate));backdrop-filter:blur(var(--glass-blur)) saturate(var(--glass-saturate))}.glass-strong{-webkit-backdrop-filter:blur(var(--glass-blur-lg)) saturate(var(--glass-saturate));backdrop-filter:blur(var(--glass-blur-lg)) saturate(var(--glass-saturate))}.glass-soft{-webkit-backdrop-filter:blur(var(--glass-blur-sm)) saturate(var(--glass-saturate));backdrop-filter:blur(var(--glass-blur-sm)) saturate(var(--glass-saturate))}
