:root{font-family:Inter,Noto Sans SC,Microsoft YaHei,system-ui,sans-serif;color:#17324d;background:#f0f5ff;font-synthesis:none;text-rendering:geometricPrecision;--ink: #17324d;--navy: #0d47a1;--muted: #61758a;--line: #d6e4ff;--paper: #ffffff;--accent: #1677ff;--accent-dark: #0958d9;--blue-soft: #e6f4ff;--panel: #d6e4ff;--selection: #ff8a00;--selection-soft: rgba(255, 138, 0, .2);--green: #19734c;--red: #b53838}*{box-sizing:border-box}html,body,#app{width:100vw;height:100vh;margin:0;overflow:hidden}body{min-width:320px;background:#f0f5ff}button,input,select{font:inherit}button{color:inherit}.app-shell{width:100vw;height:100vh;overflow:hidden;background:#f0f5ff}.app-header{height:7vh;display:flex;align-items:center;gap:.8vw;padding:0 1.5vw;color:#fff;background:linear-gradient(90deg,#0958d9,#1677ff);border-bottom:.3vh solid #69b1ff;box-shadow:0 .2vh .8vh #1677ff38}.brand-mark{width:2.5vw;height:4.2vh;min-width:32px;display:grid;grid-template-columns:repeat(3,1fr);align-items:end;gap:.2vw;padding:.55vh .4vw;border:1px solid rgba(255,255,255,.45);background:#ffffff0f}.brand-mark span{display:block;background:#fff}.brand-mark span:nth-child(1){height:1.7vh}.brand-mark span:nth-child(2){height:2.6vh;background:#91caff}.brand-mark span:nth-child(3){height:1.2vh}.app-header h1{margin:.1vh 0 0;font-size:clamp(15px,1.25vw,21px);font-weight:650;letter-spacing:.02em}.eyebrow{margin:0;color:var(--accent);font-size:clamp(8px,.58vw,10px);font-weight:750;letter-spacing:.16em}.app-header .eyebrow{color:#e6f4ff}.header-note{margin-left:auto;display:flex;align-items:center;gap:.5vw;color:#e4f1fb;font-size:clamp(10px,.78vw,13px)}.privacy-dot{width:.52vw;height:.52vw;min-width:7px;min-height:7px;border-radius:50%;background:#63d69a;box-shadow:0 0 0 .25vw #63d69a29}main{width:100vw;height:93vh;padding:1vh 1vw;overflow:hidden}.upload-hero{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;border:1px solid var(--line);background:radial-gradient(circle at 50% 30%,#fff 0,#f0f7ff 48%,#d6e9ff);transition:border-color .2s,transform .2s}.upload-hero.dragging{border:2px solid var(--accent);transform:scale(.997)}.upload-hero h2{margin:1.2vh 0 1vh;max-width:50vw;color:var(--navy);font-size:clamp(28px,3.8vw,58px);line-height:1.06;letter-spacing:-.04em}.hero-copy{max-width:42vw;margin:0 1vw 2.8vh;color:var(--muted);font-size:clamp(12px,.9vw,15px);line-height:1.8}.drop-hint{color:#7890a7;font-size:clamp(10px,.72vw,12px)}.upload-orbit{width:8vw;height:8vw;min-width:106px;min-height:106px;display:grid;place-items:center;margin-bottom:1.6vh;border:1px solid #b9d2e8;border-radius:50%;position:relative}.upload-orbit:before,.upload-orbit:after{content:"";position:absolute;border:1px solid #d2e3f2;border-radius:50%}.upload-orbit:before{top:.8vw;right:.8vw;bottom:.8vw;left:.8vw}.upload-orbit:after{width:9.8vw;height:3.8vw;transform:rotate(-20deg)}.paper-icon{width:3.2vw;height:4.3vw;min-width:45px;min-height:58px;border:2px solid var(--navy);background:#fff;position:relative;z-index:1;transform:rotate(-4deg);box-shadow:.55vw .5vw #1677ff29}.paper-icon:after{content:"";position:absolute;right:-2px;top:-2px;width:1vw;height:1vw;border-left:2px solid var(--navy);border-bottom:2px solid var(--navy);background:#f0f5ff}.paper-icon i{display:block;width:1.7vw;margin:.6vh 0 0 .55vw;border-top:2px solid var(--accent)}.paper-icon i:first-child{margin-top:1.9vw}button{border:0;cursor:pointer;transition:background .15s,border-color .15s,opacity .15s,transform .15s}button:active:not(:disabled){transform:translateY(1px)}button:disabled{cursor:not-allowed;opacity:.45}.primary-button,.secondary-button,.ghost-button{min-height:3.6vh;padding:0 .9vw;font-weight:650;font-size:clamp(10px,.75vw,13px);white-space:nowrap}.primary-button{color:#fff;background:var(--accent);box-shadow:inset 0 -2px #0000001f}.primary-button:hover:not(:disabled){background:var(--accent-dark)}.primary-button.large{min-width:13vw;height:4.8vh;font-size:clamp(12px,.82vw,14px)}.primary-button.full{width:100%;margin-top:.6vh}.secondary-button{color:#fff;background:#4096ff}.secondary-button:hover:not(:disabled){background:#1677ff}.ghost-button{border:1px solid #b9ccde;background:#fff}.ghost-button:hover:not(:disabled){color:var(--accent-dark);border-color:var(--accent);background:#f3f8fd}.file-bar{height:7vh;min-height:0;display:flex;align-items:center;gap:1.2vw;padding:.6vh .8vw;margin-bottom:1vh;overflow:hidden;border:1px solid var(--line);background:var(--paper);box-shadow:0 .2vh .7vh #204e7812}.file-identity{min-width:0;display:flex;align-items:center;gap:.7vw}.file-badge{flex:0 0 auto;width:2.7vw;height:4.5vh;min-width:38px;display:grid;place-items:center;color:#fff;background:var(--navy);font-size:9px;font-weight:750;letter-spacing:.08em}.file-identity div:last-child{min-width:0;display:flex;flex-direction:column;gap:.25vh}.file-identity strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:clamp(11px,.82vw,14px)}.file-identity span{overflow:hidden;color:var(--muted);font-size:clamp(9px,.65vw,11px);white-space:nowrap;text-overflow:ellipsis}.file-actions{margin-left:auto;display:flex;flex:0 0 auto;justify-content:flex-end;gap:.5vw}.workspace-grid{height:calc(100% - 8vh);min-height:0;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(270px,.72fr);gap:.8vw;align-items:stretch;overflow:hidden}.workspace-card,.side-card{border:1px solid var(--line);background:var(--paper);box-shadow:0 .25vh .8vh #204e7812}.workspace-card{min-width:0}.visual-card{height:100%;min-height:0;display:flex;flex-direction:column;overflow:hidden}.card-heading,.side-heading{display:flex;align-items:center;justify-content:space-between;gap:1vw;padding:1.15vh 1vw;border-bottom:1px solid var(--line);background:#f8fbff}.card-heading h2,.side-heading h2{margin:.3vh 0 0;color:var(--navy);font-size:clamp(13px,.95vw,16px);font-weight:680;letter-spacing:-.01em}.metric-pill,.status-chip{flex:0 0 auto;padding:.45vh .5vw;border:1px solid #bfd1e2;color:var(--muted);background:#edf5fc;font-size:clamp(8px,.58vw,10px);font-weight:750;letter-spacing:.05em;text-transform:uppercase}.metric-pill.accent{color:var(--accent-dark);border-color:#9cc5e8;background:#e9f4fe}.plan-stage{min-height:0;flex:1;display:flex;flex-direction:column;padding:1.1vh .9vw .8vh}.plan-svg{width:100%;min-height:0;flex:1;overflow:visible;background-color:#f8fbff;background-image:linear-gradient(#dce8f3 1px,transparent 1px),linear-gradient(90deg,#dce8f3 1px,transparent 1px);background-size:1.4vw 1.4vw}.plan-panel{fill:var(--panel);stroke:#91caff;stroke-width:.8;cursor:pointer;transition:fill .15s,stroke .15s,opacity .15s;vector-effect:non-scaling-stroke}.plan-panel:hover{fill:#bae0ff;stroke:var(--accent)}.plan-panel.selected{fill:var(--selection);stroke:#bd5f00;stroke-width:2.4;vector-effect:non-scaling-stroke}.panel-label-layer{pointer-events:none}.plan-panel-label{fill:#173f68;font-weight:700;text-anchor:middle;dominant-baseline:central;paint-order:stroke;stroke:#ffffffeb;stroke-width:3px;stroke-linejoin:round}.plan-panel-label.selected{fill:#fff;stroke:#74350073}.cut-line,.fold-line{fill:none;stroke-width:1.5;vector-effect:non-scaling-stroke;pointer-events:none}.cut-line{stroke:#d13d3d}.fold-line{stroke:#1677ff;stroke-dasharray:7 5}.plan-legend{display:flex;gap:1vw;padding-top:.8vh;color:var(--muted);font-size:clamp(9px,.65vw,11px)}.plan-legend span{display:flex;align-items:center;gap:.4vw}.plan-legend i{width:1.2vw;display:inline-block;border-top:2px solid}.legend-cut{border-color:#d13d3d!important}.legend-fold{border-color:#1677ff!important;border-style:dashed}.legend-panel{height:.8vh;border:1px solid #91caff!important;background:var(--panel)}.fold-preview{min-height:0;flex:1;position:relative;overflow:hidden;background:#f4f8ff}.fold-preview canvas{display:block;width:100%;height:100%}.fold-engine-badge{position:absolute;z-index:2;left:.8vw;top:.8vh;padding:.45vh .5vw;color:#15568e;border:1px solid #9bc3e6;background:#ebf6fff0;font-size:clamp(8px,.52vw,9px);font-weight:750;letter-spacing:.05em;pointer-events:none}.fold-selected-panel{position:absolute;z-index:2;right:.8vw;top:.8vh;max-width:45%;overflow:hidden;padding:.45vh .55vw;color:#fff;background:var(--selection);box-shadow:0 .2vh .5vh #89440029;font-size:clamp(8px,.58vw,10px);font-weight:750;text-overflow:ellipsis;white-space:nowrap;pointer-events:none}.fold-angle-badge{position:absolute;z-index:2;right:.8vw;top:4.1vh;padding:.4vh .5vw;color:#744000;border:1px solid #ffc069;background:#fff7e6f5;box-shadow:0 .15vh .4vh #8944001a;font-size:clamp(8px,.55vw,10px);font-weight:700;pointer-events:none}.progress-control{display:grid;grid-template-columns:2.1vw auto 1fr auto;align-items:center;gap:.65vw;padding:.9vh 1vw 1.1vh;border-top:1px solid var(--line);color:var(--muted);background:#f8fbff;font-size:clamp(9px,.65vw,11px)}.playback-button{width:2.1vw;height:2.1vw;min-width:28px;min-height:28px;display:grid;place-items:center;padding:0;color:#fff;background:var(--accent);border-radius:50%;box-shadow:0 .2vh .45vh #1677ff38}.playback-button:hover:not(:disabled){background:var(--accent-dark)}.playback-button svg{width:58%;height:58%;fill:currentColor}input[type=range]{accent-color:var(--accent);cursor:ew-resize}.editor-column{min-width:0;height:100%;display:flex;flex-direction:column;gap:.8vw;overflow-x:hidden;overflow-y:auto;scrollbar-width:thin;scrollbar-color:#91caff #f0f5ff}.side-card{flex:0 0 auto}.side-heading.compact{padding-bottom:.9vh}.status-chip.pass{color:var(--green);border-color:#9fcdb8;background:#edf8f3}.status-chip.blocked{color:var(--red);border-color:#e0aeae;background:#fff1f1}.stats-row{display:grid;grid-template-columns:repeat(3,1fr);border-bottom:1px solid var(--line)}.stats-row div{padding:1vh .5vw;display:flex;flex-direction:column;text-align:center;border-right:1px solid var(--line)}.stats-row div:last-child{border-right:0}.stats-row strong{color:var(--navy);font-size:clamp(17px,1.35vw,22px);line-height:1}.stats-row span{margin-top:.4vh;color:var(--muted);font-size:clamp(8px,.58vw,10px)}.issue-list{max-height:14vh;overflow:auto;margin:0;padding:1vh 1vw 1vh 2vw;font-size:clamp(9px,.65vw,11px);line-height:1.5}.issue-list li+li{margin-top:.5vh}.issue-list .error{color:var(--red)}.issue-list .warning{color:#8a5d12}.recovery-note{padding:.9vh .9vw;color:#75500f;border-bottom:1px solid #eadcb9;background:#fff9e8;font-size:clamp(8px,.58vw,10px);line-height:1.5}.all-clear,.roundtrip-pass{padding:.9vh .9vw;color:var(--green);background:#f3fbf7;font-size:clamp(9px,.65vw,11px)}.roundtrip-pass{border-top:1px solid #d5eadf;font-weight:650}.field-select,.field-input{width:calc(100% - 1.8vw);min-height:3.5vh;margin:1vh .9vw 0;padding:0 .6vw;border:1px solid #b8cce0;border-radius:0;color:var(--ink);background:#fff;outline:none;font-size:clamp(10px,.7vw,12px)}.field-select:focus,.field-input:focus{border-color:var(--accent);box-shadow:0 0 0 2px #1677ff1f}.field-help{margin:.7vh .9vw 1vh;color:var(--muted);font-size:clamp(8px,.58vw,10px);line-height:1.5}.field-label{display:block;margin-top:1vh;padding:0 .9vw;color:var(--muted);font-size:clamp(9px,.65vw,11px)}.field-label .field-input,.field-label .field-select{width:100%;margin:.5vh 0 0}.publish-card .primary-button{width:calc(100% - 1.8vw);margin-left:.9vw;margin-right:.9vw}.upload-success{margin:.8vh .9vw 1vh;padding:.8vh .6vw;color:var(--green);background:#edf8f3;font-size:clamp(8px,.58vw,10px);word-break:break-all}.step-list{list-style:none;margin:0;padding:0}.step-editor-help{margin:0;padding:.7vh .9vw .8vh;color:var(--muted);background:#f8fbff;font-size:clamp(8px,.58vw,10px);line-height:1.5;border-bottom:1px solid var(--line)}.step-list li{display:grid;grid-template-columns:2.55vw minmax(0,1fr);align-items:start;gap:.45vw;padding:.55vh .6vw;border-bottom:1px solid #d9e5f0;position:relative;cursor:pointer;transition:background .15s,box-shadow .15s}.step-list li:last-child{border-bottom:0}.step-list li:hover{background:#f5f9ff}.step-list li.active{background:#eef6ff;box-shadow:inset .22vw 0 0 var(--selection)}.step-list li.expanded{padding-top:.7vh;padding-bottom:.8vh;background:#f8fbff}.step-list li.dragging{opacity:.42}.step-list li.drag-over-before:before,.step-list li.drag-over-after:after{content:"";position:absolute;z-index:2;right:.45vw;left:.45vw;height:3px;background:var(--accent);box-shadow:0 0 0 2px #1677ff24;pointer-events:none}.step-list li.drag-over-before:before{top:-2px}.step-list li.drag-over-after:after{bottom:-2px}.step-position{min-width:0;min-height:2.8vh;display:flex;align-items:center;gap:.25vw}.step-drag-handle{width:1.05vw;min-width:14px;padding:.3vh 0;overflow:hidden;color:#6f8eac;border-radius:2px;outline:none;font-size:14px;font-weight:800;line-height:1;letter-spacing:-4px;cursor:grab;-webkit-user-select:none;user-select:none}.step-drag-handle:hover,.step-drag-handle:focus-visible{color:var(--accent);background:#e6f4ff;box-shadow:0 0 0 2px #1677ff29}.step-drag-handle:active{cursor:grabbing}.step-index{color:var(--accent);font-size:clamp(9px,.65vw,11px);font-weight:750;letter-spacing:.04em}.step-content{min-width:0}.step-summary{width:100%;min-height:2.8vh;display:grid;grid-template-columns:minmax(0,1fr) auto 1.1vw;align-items:center;gap:.45vw;padding:0;color:var(--ink);background:transparent;text-align:left}.step-title{min-width:0;display:flex;flex-direction:column;gap:.15vh}.step-title strong,.step-title small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.step-title strong{font-size:clamp(10px,.7vw,12px)}.step-title small{color:var(--muted);font-size:clamp(8px,.52vw,9px)}.step-angle-summary{min-width:3.25vw;padding:.28vh .35vw;color:#0958d9;border:1px solid #91caff;background:#e6f4ff;text-align:center;font-size:clamp(8px,.56vw,10px);font-weight:700;white-space:nowrap}.step-angle-summary.locked{min-width:4.2vw;color:#52677b;border-color:#c7d6e4;background:#edf3f8}.step-chevron{color:#67839d;font-size:15px;line-height:1;text-align:center;transition:transform .15s}.step-chevron.expanded{transform:rotate(180deg)}.step-editor{display:grid;gap:.65vh;margin-top:.7vh;padding:.7vh .55vw;border:1px solid #c9dcf0;background:#fff;cursor:default}.step-control-group{min-width:0}.step-control-group+.step-control-group{padding-top:.65vh;border-top:1px solid #e3edf6}.step-control-heading{display:flex;align-items:center;justify-content:space-between;gap:.5vw;margin-bottom:.5vh;color:#3e5f7e;font-size:clamp(8px,.58vw,10px);font-weight:700}.step-control-heading small{color:var(--muted);font-size:clamp(8px,.52vw,9px);font-weight:500}.direction-button{padding:.25vh .4vw;color:#0958d9;border:1px solid #91caff;background:#f0f7ff;font-size:clamp(8px,.52vw,9px)}.direction-button:hover:not(:disabled){color:#fff;border-color:var(--accent);background:var(--accent)}.angle-field{display:grid;grid-template-columns:1.65vw minmax(54px,1fr) 1.65vw minmax(50px,3.5vw);align-items:center;gap:.3vw}.angle-field input[type=range]{width:100%;min-width:0}.angle-field>button{width:1.65vw;height:1.65vw;min-width:23px;min-height:23px;color:#0958d9;border:1px solid #b8cce0;background:#fff;font-size:12px}.angle-field>button:hover{color:#fff;border-color:var(--accent);background:var(--accent)}.angle-number-wrap{min-width:50px;height:2.5vh;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;padding-right:.3vw;border:1px solid #b8cce0;background:#fff}.angle-number-wrap:focus-within{border-color:var(--accent);box-shadow:0 0 0 2px #1677ff1f}.angle-number{width:100%;min-width:0;height:100%;padding:0 .15vw 0 .25vw;border:0;outline:none;background:transparent;font-size:clamp(9px,.62vw,11px);text-align:right}.angle-number-wrap span{color:var(--muted);font-size:9px}.angle-presets{display:flex;align-items:center;flex-wrap:wrap;gap:.25vw;margin-top:.5vh}.angle-presets>span{margin-right:.1vw;color:var(--muted);font-size:clamp(8px,.52vw,9px)}.angle-presets button{min-height:2.2vh;padding:0 .38vw;color:#476581;border:1px solid #c1d3e4;background:#f8fbff;font-size:clamp(8px,.52vw,9px)}.angle-presets button:hover,.angle-presets button.active{color:#fff;border-color:var(--accent);background:var(--accent)}.angle-policy{margin:.45vh 0 0;color:#745216;font-size:clamp(8px,.52vw,9px);line-height:1.4;white-space:normal}.angle-policy.locked{padding:.5vh .4vw;color:#52677b;background:#edf3f8;border-left:2px solid #8caac5}.order-editor-row{display:flex;align-items:center;justify-content:space-between;gap:.5vw}.step-order-control{display:flex;align-items:center;gap:.25vw;color:var(--muted);font-size:clamp(8px,.56vw,10px)}.step-order-input{width:2.6vw;min-width:38px;height:2.5vh;padding:0 .2vw;border:1px solid #b8cce0;color:var(--ink);background:#fff;text-align:center;outline:none}.step-order-input:focus{border-color:var(--accent);box-shadow:0 0 0 2px #1677ff1f}.step-buttons{display:grid;grid-template-columns:repeat(4,1.65vw);gap:.18vw}.step-buttons button{width:1.65vw;height:1.65vw;min-width:23px;min-height:23px;border:1px solid #b8cce0;background:#fff;font-size:10px}.step-buttons button:hover:not(:disabled){color:#fff;border-color:var(--accent);background:var(--accent)}.empty-mini{padding:2vh .9vw;color:var(--muted);text-align:center;font-size:clamp(9px,.65vw,11px)}.toast{position:fixed;z-index:20;top:1vh;left:50%;width:min(45vw,98vw);display:flex;align-items:flex-start;gap:.8vw;transform:translate(-50%);padding:1vh .8vw 1vh 1vw;color:#fff;background:var(--navy);box-shadow:0 .8vh 2.4vh #092f573d;font-size:clamp(10px,.72vw,12px);line-height:1.5}.toast.success{border-left:4px solid #63d69a}.toast.warning{border-left:4px solid #f1b940}.toast.error{border-left:4px solid #ee6565}.toast span{flex:1}.toast button{color:#fff;background:transparent;font-size:20px;line-height:1}.visually-hidden{position:fixed;left:-10000px;width:1px;height:1px;opacity:0}@media(max-width:800px){.header-note,.file-identity span{display:none}.workspace-grid{grid-template-columns:minmax(280px,1fr) minmax(280px,1fr) minmax(280px,.8fr);overflow-x:auto;overflow-y:hidden}.toast{width:96vw}}
