:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;font-synthesis:none;text-rendering:optimizelegibility;--bg:#07111f;--bg-deep:#030913;--panel:#0e1b2d;--panel-raised:#14243a;--panel-glass:#0e1b2ddb;--border:#29415f;--border-soft:#4b719947;--text:#f4f7fb;--muted:#9eb0c6;--faint:#657c97;--action:#38bdf8;--action-deep:#0284c7;--brand-warm:#f4a261;--brand-gold:#ffd08a;--success:#5ee1a2;--danger:#fb7185;--radius:14px;--radius-small:9px;--shadow:0 22px 70px #00000057;--focus:0 0 0 3px #38bdf847;font-family:Microsoft JhengHei UI,PingFang TC,Noto Sans TC,sans-serif}*{box-sizing:border-box}html{background:var(--bg-deep);min-width:320px}body{background:var(--bg-deep);min-width:320px;min-height:100vh;color:var(--text);margin:0}button,input{font:inherit}button,a,input{-webkit-tap-highlight-color:transparent}button:focus-visible,a:focus-visible,input:focus-visible{box-shadow:var(--focus);outline:none}button:disabled,input:disabled{cursor:not-allowed;opacity:.48}.visually-hidden{clip:rect(0, 0, 0, 0)!important;white-space:nowrap!important;border:0!important;width:1px!important;height:1px!important;margin:-1px!important;padding:0!important;position:absolute!important;overflow:hidden!important}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}#root{min-height:100vh}.app-shell{background:radial-gradient(circle at 78% 10%, #38bdf81f, transparent 27rem), radial-gradient(circle at 10% 46%, #f4a26112, transparent 25rem), linear-gradient(155deg, var(--bg-deep), var(--bg) 42%, #09182a);min-height:100vh;position:relative;overflow:hidden}.ambient-grid{pointer-events:none;opacity:.2;background-image:linear-gradient(#52779c2e 1px,#0000 1px),linear-gradient(90deg,#52779c2e 1px,#0000 1px);background-size:64px 64px;position:fixed;inset:0;-webkit-mask-image:linear-gradient(#000,#0000 82%);mask-image:linear-gradient(#000,#0000 82%)}.app-header,.app-shell>main,.brand-footer{z-index:1;width:min(1600px,100% - 48px);margin-inline:auto;position:relative}.app-header{border-bottom:1px solid var(--border-soft);justify-content:space-between;align-items:center;min-height:110px;display:flex}.brand-lockup,.privacy-badge,.panel-heading,.export-summary,.export-actions,.brand-footer>div{align-items:center;display:flex}.brand-lockup{gap:16px}.brand-mark{background:linear-gradient(145deg,#f4a26133,#38bdf814);border:1px solid #f4a2618c;border-radius:15px 4px;place-items:center;width:50px;height:50px;display:grid;box-shadow:0 10px 35px #f4a26121}.brand-mark svg{fill:none;width:34px;stroke:var(--brand-warm);stroke-width:2px;stroke-linejoin:round;stroke-linecap:round}.brand-mark .brand-mark-light{stroke:var(--action);stroke-width:3px}.eyebrow,.section-number{color:var(--brand-warm);letter-spacing:.18em;margin:0 0 4px;font-family:Aptos Mono,Cascadia Mono,monospace;font-size:.68rem;font-weight:700}.app-header h1{letter-spacing:.02em;margin:0;font-family:Aptos Display,Microsoft JhengHei UI,sans-serif;font-size:clamp(1.45rem,2vw,2rem);line-height:1.1}.privacy-badge{color:#c9f8e0;background:#18483f3d;border:1px solid #5ee1a23d;border-radius:999px;gap:10px;padding:10px 15px;font-size:.82rem}.privacy-dot{background:var(--success);border-radius:50%;width:8px;height:8px;box-shadow:0 0 0 5px #5ee1a21a,0 0 18px #5ee1a273}.app-shell>main{padding:24px 0 0}.pwa-update{z-index:3;color:#ffe0b7;background:#54351beb;border:1px solid #f4a26159;border-radius:9px;justify-content:space-between;align-items:center;gap:14px;width:min(760px,100% - 24px);margin:10px auto -8px;padding:9px 12px;font-size:.72rem;display:flex;position:relative}.pwa-update button{background:var(--brand-warm);color:#271406;cursor:pointer;border:0;border-radius:6px;padding:5px 9px;font-weight:700}.import-panel{border-radius:var(--radius);min-height:116px;box-shadow:var(--shadow);background:linear-gradient(105deg,#14243ae6,#0a1a2bd1),repeating-linear-gradient(135deg,#0000 0 12px,#ffffff05 12px 13px);border:1px dashed #436684;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:18px;padding:20px 22px;transition:border-color .18s,transform .18s,background .18s;display:grid}.import-panel.is-dragging{border-color:var(--action);background:#12415bd6;transform:translateY(-2px)}.import-icon{width:58px;height:58px;color:var(--action);background:#38bdf81a;border-radius:50%;place-items:center;display:grid}.import-icon svg{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round;width:28px}.import-panel h2,.panel-heading h2,.export-summary h2{letter-spacing:.02em;margin:0;font-size:1rem}.import-panel p{color:var(--muted);margin:6px 0 0;font-size:.83rem}.import-panel .import-limits{letter-spacing:.05em;grid-column:2/4;margin-top:-10px;font-family:Aptos Mono,Cascadia Mono,monospace;font-size:.68rem}.button{border-radius:var(--radius-small);cursor:pointer;border:1px solid #0000;min-height:42px;padding:10px 18px;font-weight:700;transition:transform .15s,background .15s,border-color .15s}.button:not(:disabled):hover{transform:translateY(-1px)}.button-primary{background:linear-gradient(135deg, var(--action), #1da5e2);color:#021321;box-shadow:0 12px 28px #38bdf833}.button-secondary{border-color:var(--border);color:var(--text);background:#0f2339e0}.button-danger{color:#ffd5dc;background:#7a263759;border-color:#fb718573}.status-notice{border-left:3px solid var(--brand-warm);border-radius:6px var(--radius-small) var(--radius-small) 6px;color:#ffe0b7;background:#55351b52;margin-top:14px;padding:14px 18px;font-size:.82rem}.status-notice ul{margin:6px 0 0;padding-left:20px}.workspace-grid{grid-template-columns:minmax(220px,260px) minmax(420px,1fr) minmax(285px,320px);gap:14px;min-height:570px;margin-top:14px;display:grid}.photo-list-panel,.preview-panel,.adjustment-panel{border:1px solid var(--border-soft);border-radius:var(--radius);background:var(--panel-glass);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);min-width:0;overflow:hidden;box-shadow:0 18px 54px #0003}.photo-list-panel,.adjustment-panel{padding:18px}.preview-panel{background:linear-gradient(145deg,#0c192af5,#091321eb);padding:18px}.panel-heading{justify-content:space-between;min-height:48px;margin-bottom:14px}.panel-heading.compact{min-height:40px}.count-pill,.dimension-label{border:1px solid var(--border);color:var(--muted);border-radius:99px;padding:5px 9px;font-family:Aptos Mono,Cascadia Mono,monospace;font-size:.68rem}.list-empty{color:var(--faint);margin:30px 8px;font-size:.8rem;line-height:1.65}.photo-list{scrollbar-color:var(--border) transparent;gap:9px;max-height:472px;margin:0;padding:0 4px 0 0;list-style:none;display:grid;overflow:auto}.photo-item{background:#ffffff06;border:1px solid #0000;border-radius:11px;padding:7px;position:relative}.photo-item.is-selected{background:#38bdf813;border-color:#38bdf88c}.photo-select{width:100%;color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;grid-template-columns:22px 58px minmax(0,1fr);align-items:center;padding:0;display:grid}.photo-select img,.photo-placeholder{object-fit:cover;background:#17283c;border-radius:6px;width:52px;height:45px}.photo-index{color:var(--faint);align-self:start;padding-top:4px;font-family:Aptos Mono,monospace;font-size:.62rem}.photo-meta{gap:2px;min-width:0;padding-left:7px;display:grid}.photo-meta strong{text-overflow:ellipsis;white-space:nowrap;font-size:.72rem;overflow:hidden}.photo-meta small{color:var(--faint);font-size:.62rem}.status{color:var(--muted);justify-self:start;font-size:.62rem}.status-completed,.status-ready{color:var(--success)}.status-failed{color:var(--danger)}.photo-actions{justify-content:flex-end;gap:10px;margin-top:5px;display:flex}.photo-actions button,.text-button{color:var(--muted);cursor:pointer;background:0 0;border:0;padding:2px;font-size:.65rem}.photo-actions button:hover,.text-button:hover{color:var(--action)}.photo-error{color:#ffafbd;margin:6px 0 0;font-size:.64rem}.preview-empty,.preview-pending{min-height:440px;color:var(--muted);text-align:center;background:#081321;border:1px solid #4f709333;border-radius:10px;align-content:center;place-items:center;display:grid}.preview-empty p{max-width:300px;color:var(--faint);margin:8px auto 0;font-size:.78rem}.room-lines{perspective:240px;border-bottom:1px solid #36506b;border-left:1px solid #36506b;border-right:1px solid #36506b;width:170px;height:105px;margin-bottom:26px;position:relative}.room-lines:before,.room-lines:after,.room-lines span{content:"";background:#36506b;position:absolute}.room-lines:before{width:1px;height:122px;top:-15px;left:50%;transform:rotate(55deg)}.room-lines:after{width:1px;height:122px;top:-15px;left:50%;transform:rotate(-55deg)}.room-lines span:first-child{width:58px;height:1px;top:40px;left:55px;box-shadow:0 28px #36506b}.room-lines span:nth-child(2){width:1px;height:58px;top:40px;left:55px}.room-lines span:nth-child(3){width:1px;height:58px;top:40px;right:56px}.comparison-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.comparison-grid figure{min-width:0;margin:0}.comparison-grid figcaption{color:var(--muted);justify-content:space-between;margin-bottom:7px;font-size:.68rem;display:flex}.comparison-grid figcaption span{color:var(--brand-warm);letter-spacing:.12em;font-family:Aptos Mono,monospace}.comparison-grid img,.comparison-grid .preview-pending{object-fit:contain;background:#050b13;border:1px solid #5f81a633;border-radius:9px;width:100%;height:min(430px,46vh);min-height:350px;display:block}.preview-pending{font-size:.76rem;position:relative;overflow:hidden}.scan-line{background:linear-gradient(90deg, transparent, var(--action), transparent);height:1px;box-shadow:0 0 16px var(--action);animation:2.2s ease-in-out infinite scan;position:absolute;top:0;left:0;right:0}@keyframes scan{0%,to{opacity:0;transform:translateY(20px)}20%,80%{opacity:1}50%{transform:translateY(380px)}}.preview-download{margin-top:12px}.auto-toggle{cursor:pointer;background:#38bdf80e;border:1px solid #38bdf82e;border-radius:10px;align-items:center;gap:10px;padding:12px;display:flex}.auto-toggle input{opacity:0;position:absolute}.toggle-track{background:#31465e;border-radius:99px;flex:0 0 38px;height:22px;transition:background .15s;position:relative}.toggle-track span{background:#fff;border-radius:50%;width:16px;height:16px;transition:transform .15s;position:absolute;top:3px;left:3px}.auto-toggle input:checked+.toggle-track{background:var(--action-deep)}.auto-toggle input:checked+.toggle-track span{transform:translate(16px)}.auto-toggle input:focus-visible+.toggle-track{box-shadow:var(--focus)}.auto-toggle>span:last-child{gap:2px;display:grid}.auto-toggle strong{font-size:.76rem}.auto-toggle small{color:var(--muted);font-size:.64rem}.sliders{gap:16px;margin-top:18px;display:grid}.slider-field{gap:7px;display:grid}.slider-field>span:first-child,.range-scale{justify-content:space-between;display:flex}.slider-field strong{color:#dfe8f3;font-size:.72rem}.slider-field output{min-width:55px;color:var(--brand-gold);text-align:right;font-family:Aptos Mono,Cascadia Mono,monospace;font-size:.68rem}.slider-field input[type=range]{appearance:none;width:100%;height:4px;accent-color:var(--action);cursor:pointer;background:linear-gradient(90deg,#28415d,#4c7599);border-radius:99px;margin:3px 0}.slider-field input[type=range]::-webkit-slider-thumb{appearance:none;background:var(--action-deep);border:3px solid #d9f3ff;border-radius:50%;width:16px;height:16px;box-shadow:0 0 0 3px #38bdf821}.range-scale{color:var(--faint);font-family:Aptos Mono,monospace;font-size:.56rem}.export-bar{border-radius:var(--radius);box-shadow:var(--shadow);background:linear-gradient(110deg,#10273ef5,#081727f5);border:1px solid #38bdf840;grid-template-columns:minmax(220px,1fr) minmax(160px,.7fr) auto;align-items:center;gap:20px;margin-top:14px;padding:16px 18px;display:grid}.export-summary{gap:12px}.export-summary .section-number{margin:0;font-size:1.1rem}.export-summary p:not(.section-number){color:var(--muted);margin:5px 0 0;font-size:.7rem}.export-bar progress{background:#1d3148;border:0;border-radius:99px;width:100%;height:7px;overflow:hidden}.export-bar progress::-webkit-progress-bar{background:#1d3148}.export-bar progress::-webkit-progress-value{background:linear-gradient(90deg, var(--action-deep), var(--action))}.export-actions{flex-wrap:wrap;justify-content:flex-end;gap:8px}.zip-progress{color:var(--muted);text-align:right;flex-basis:100%;font-size:.65rem}.brand-footer{border-top:1px solid var(--border-soft);min-height:112px;color:var(--muted);grid-template-columns:1fr 1fr 2fr;align-items:center;gap:24px;margin-top:24px;padding:26px 4px 36px;font-size:.72rem;display:grid}.brand-footer>div{flex-direction:column;align-items:flex-start;gap:5px}.brand-footer strong{color:var(--brand-gold);font-size:.82rem}.brand-footer a{color:var(--action);font-family:Aptos Mono,monospace;font-size:.84rem;text-decoration:none}.brand-footer p{text-align:right;justify-self:end;max-width:430px;margin:0;line-height:1.7}@media (width<=1180px){.workspace-grid{grid-template-columns:230px minmax(380px,1fr)}.adjustment-panel{grid-column:1/-1}.sliders{grid-template-columns:repeat(4,minmax(150px,1fr))}}@media (width<=767px){.app-header,.app-shell>main,.brand-footer{width:min(100% - 24px,680px)}.app-header{gap:14px;padding:20px 0;display:grid}.brand-mark{width:44px;height:44px}.app-header h1{font-size:1.35rem}.privacy-badge{justify-self:start;font-size:.74rem}.app-shell>main{padding-top:12px}.import-panel{grid-template-columns:auto minmax(0,1fr);gap:13px;padding:17px}.import-icon{width:46px;height:46px}.import-panel .button{grid-column:1/-1;width:100%}.import-panel .import-limits{text-align:center;grid-column:1/-1;margin:0}.workspace-grid{grid-template-columns:minmax(0,1fr);min-height:0;display:grid}.photo-list-panel,.preview-panel,.adjustment-panel{grid-column:auto;padding:15px}.photo-list{max-height:310px}.comparison-grid{grid-template-columns:1fr}.comparison-grid img,.comparison-grid .preview-pending{height:auto;min-height:260px;max-height:55vh}.preview-empty{min-height:320px}.sliders{grid-template-columns:1fr}.export-bar{z-index:5;bottom:max(8px, env(safe-area-inset-bottom));grid-template-columns:1fr;gap:10px;margin-inline:-4px;padding:13px;position:sticky}.export-actions{grid-template-columns:1fr 1fr;display:grid}.export-actions .button{padding-inline:10px}.zip-progress{grid-column:1/-1}.brand-footer{padding-bottom:calc(34px + env(safe-area-inset-bottom));grid-template-columns:1fr;gap:16px}.brand-footer p{text-align:left;justify-self:start}}@media (width<=380px){.app-header,.app-shell>main,.brand-footer{width:calc(100% - 18px)}.brand-lockup{gap:10px}.app-header h1{font-size:1.18rem}.privacy-badge{border-radius:12px;align-items:flex-start}.photo-select{grid-template-columns:18px 52px minmax(0,1fr)}.export-actions{grid-template-columns:1fr}.zip-progress{grid-column:auto}}
