:root{padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px)}body{margin:0;font:14px/1.4 system-ui,sans-serif}:root{--bg:#FAF9FB;--surface:#FFFFFF;--panel:#F4F2F5;--panel-2:#EAE6ED;--line:#E3DEE6;--ink:#303030;--muted:#655F6B;--primary:#B8457F;--primary-hover:#A33A70;--on-primary:#FFFFFF;--teal:#2B7773;--teal-soft:#E2F0EF;--stage:#ECE9EE;--focus:#38938E;--warn-bg:#FFF3DD;--warn-ink:#7A4A00;--bad-bg:#FCE8E8;--bad-ink:#A12B2B;--ok-bg:#E2F0EF;--ok-ink:#1F6460;--scrim:rgba(20,16,24,.42);--shadow:0 10px 30px rgba(40,20,40,.14), 0 2px 6px rgba(40,20,40,.08);--radius:14px;--tabbar-h:64px;color-scheme:light}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--bg:#18161A;--surface:#221F25;--panel:#2A262D;--panel-2:#332E37;--line:#3A353E;--ink:#EEEAF0;--muted:#B4ABB9;--primary:#B8457F;--primary-hover:#C9558F;--on-primary:#FFFFFF;--teal:#6CC3BD;--teal-soft:#1B3331;--stage:#121013;--focus:#6CC3BD;--warn-bg:#3A2B10;--warn-ink:#F2C374;--bad-bg:#3B1B1E;--bad-ink:#F4A3A3;--ok-bg:#1B3331;--ok-ink:#8AD3CD;--scrim:rgba(0,0,0,.6);--shadow:0 10px 30px rgba(0,0,0,.5), 0 2px 6px rgba(0,0,0,.4);color-scheme:dark}}:root[data-theme=dark]{--bg:#18161A;--surface:#221F25;--panel:#2A262D;--panel-2:#332E37;--line:#3A353E;--ink:#EEEAF0;--muted:#B4ABB9;--primary:#B8457F;--primary-hover:#C9558F;--on-primary:#FFFFFF;--teal:#6CC3BD;--teal-soft:#1B3331;--stage:#121013;--focus:#6CC3BD;--warn-bg:#3A2B10;--warn-ink:#F2C374;--bad-bg:#3B1B1E;--bad-ink:#F4A3A3;--ok-bg:#1B3331;--ok-ink:#8AD3CD;--scrim:rgba(0,0,0,.6);--shadow:0 10px 30px rgba(0,0,0,.5), 0 2px 6px rgba(0,0,0,.4);color-scheme:dark}*,*:before,*:after{box-sizing:border-box}[hidden]{display:none!important}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--bg);color:var(--ink);font-family:Jost,system-ui,-apple-system,Segoe UI,sans-serif;font-size:16px;line-height:1.45;overflow-x:hidden}body:before{content:"";position:fixed;inset:0 0 auto;height:env(safe-area-inset-top,0px);z-index:10;background:var(--surface)}img{max-width:100%}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}:focus-visible{outline:3px solid var(--focus);outline-offset:2px}.vh{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}svg.i{width:20px;height:20px;flex-shrink:0;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.top{position:sticky;top:env(safe-area-inset-top,0px);z-index:20;background:var(--surface);border-bottom:1px solid var(--line);padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px));padding-block:8px}.top-in{display:flex;align-items:center;gap:8px;max-width:1400px;margin:0 auto;min-height:44px}.brand{display:flex;align-items:center;gap:10px;min-width:0;flex:1}.brand-mark{width:34px;height:34px;border-radius:10px;background:var(--ink);flex-shrink:0;background-image:repeating-linear-gradient(115deg,var(--surface) 0 3px,transparent 3px 8px);border:2px solid var(--ink)}.brand-txt{min-width:0}.brand-name{font-weight:600;font-size:15px;line-height:1.1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.save{font-size:12.5px;color:var(--muted);display:flex;align-items:center;gap:5px;white-space:nowrap}.save .dot{width:7px;height:7px;border-radius:50%;background:var(--teal)}.save[data-state=saving] .dot{background:var(--warn-ink);animation:pulse 1s infinite}.save[data-state=off] .dot{background:var(--bad-ink)}@keyframes pulse{50%{opacity:.3}}.iconbtn{width:44px;height:44px;border-radius:12px;border:1px solid transparent;background:transparent;display:inline-grid;place-items:center;color:var(--ink)}.iconbtn:hover:not(:disabled){background:var(--panel)}.iconbtn:disabled{opacity:.35;cursor:default}.btn{min-height:44px;border-radius:12px;padding:0 16px;border:1px solid var(--line);background:var(--surface);display:inline-flex;align-items:center;justify-content:center;gap:8px;font-weight:500;text-decoration:none;white-space:nowrap}.btn:hover:not(:disabled){background:var(--panel)}.btn:disabled{opacity:.45;cursor:default}.btn.primary{background:var(--primary);border-color:var(--primary);color:var(--on-primary)}.btn.primary:hover:not(:disabled){background:var(--primary-hover);border-color:var(--primary-hover)}.btn.teal{border-color:var(--teal);color:var(--teal);background:transparent}.btn.teal:hover:not(:disabled){background:var(--teal-soft)}.btn.ghost{border-color:transparent;background:transparent}.btn.danger{color:var(--bad-ink);border-color:var(--bad-ink);background:transparent}.btn.small{min-height:36px;padding:0 12px;font-size:14px;border-radius:10px}.btn.block{width:100%}.btn.lg{min-height:52px;font-size:17px;padding:0 22px}.app{max-width:1400px;margin:0 auto;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px));padding-block:12px calc(var(--tabbar-h) + 24px + env(safe-area-inset-bottom,0px))}.preview-col{min-width:0;display:flex;flex-direction:column;gap:10px}.banner{border-radius:var(--radius);padding:14px;background:var(--panel);display:flex;flex-direction:column;gap:10px}.banner h2{margin:0;font-size:19px;font-weight:600;line-height:1.25}.banner p{margin:0;color:var(--muted);font-size:14.5px}.banner .row{display:flex;gap:8px;flex-wrap:wrap}.banner.restore{background:var(--ok-bg);color:var(--ok-ink);flex-direction:row;align-items:center;flex-wrap:wrap}.banner.restore p{color:inherit;flex:1;min-width:180px}.progress{display:flex;align-items:center;gap:10px;min-height:44px;padding:6px 12px;border-radius:12px;border:1px solid var(--line);background:var(--surface);text-align:left;width:100%}.progress .bar{flex:0 0 72px;height:6px;border-radius:3px;background:var(--panel-2);overflow:hidden}.progress .bar i{display:block;height:100%;background:var(--teal);width:0;transition:width .3s}.progress .txt{flex:1;font-size:14px;min-width:0}.progress .go{font-size:13px;color:var(--teal);font-weight:500;white-space:nowrap}.stage-wrap{position:relative;background:var(--stage);border-radius:var(--radius);padding:12px;display:flex;justify-content:center;touch-action:pan-y}.stage{position:relative;box-shadow:0 6px 24px #0000002e;background:#fff;overflow:hidden;flex-shrink:0}.stage>.pagebox{position:absolute;left:0;top:0;transform-origin:0 0}.slot-sel{position:absolute;pointer-events:none;outline:3px solid #DC67A3;outline-offset:-3px;box-shadow:0 0 0 2px #ffffffe6 inset;z-index:2;transition:all .15s}.slot-drop{position:absolute;pointer-events:none;outline:3px dashed #DC67A3;outline-offset:-3px;background:#dc67a32e;z-index:2}.stage.drop-hover{outline:4px dashed var(--primary);outline-offset:4px}.busy{position:absolute;inset:0;display:none;place-items:center;background:#ffffff8c;z-index:3;border-radius:var(--radius)}.busy.on{display:grid}.spinner{width:36px;height:36px;border-radius:50%;border:4px solid rgba(0,0,0,.15);border-top-color:var(--primary);animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.pager{display:flex;align-items:center;justify-content:space-between;gap:8px}.pager .label{font-weight:600;font-size:16px;text-align:center;flex:1}.pager .label small{display:block;font-weight:400;font-size:12.5px;color:var(--muted)}.strip{display:flex;gap:8px;overflow-x:auto;padding:4px 2px 8px;scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch;scrollbar-width:thin}.thumb{flex:0 0 auto;scroll-snap-align:center;border:2px solid transparent;border-radius:8px;padding:3px;background:transparent;display:flex;flex-direction:column;align-items:center;gap:3px;min-width:56px}.thumb[aria-current=true]{border-color:var(--primary)}.thumb .tp{width:50px;height:71px;position:relative;overflow:hidden;background:#fff;border-radius:2px;box-shadow:0 1px 3px #00000040}.thumb .tp>.pagebox{position:absolute;left:0;top:0;transform-origin:0 0}.thumb .tl{font-size:12px;display:flex;align-items:center;gap:4px;color:var(--muted)}.thumb .tl .need{width:6px;height:6px;border-radius:50%;background:var(--warn-ink)}.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:30;background:var(--surface);border-top:1px solid var(--line);display:grid;grid-template-columns:repeat(4,1fr);padding-bottom:env(safe-area-inset-bottom,0px);padding-left:env(safe-area-inset-left,0px);padding-right:env(safe-area-inset-right,0px)}.tab{min-height:var(--tabbar-h);border:0;background:transparent;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-size:12.5px;color:var(--muted);position:relative}.tab[aria-selected=true]{color:var(--primary);font-weight:600}.tab[aria-selected=true]:after{content:"";position:absolute;top:0;left:25%;right:25%;height:3px;border-radius:0 0 3px 3px;background:var(--primary)}.panel{position:fixed;left:0;right:0;bottom:calc(var(--tabbar-h) + env(safe-area-inset-bottom,0px));z-index:25;max-height:min(55vh,560px);background:var(--surface);border-radius:18px 18px 0 0;box-shadow:var(--shadow);transform:translateY(calc(100% + var(--tabbar-h) + 40px));transition:transform .28s cubic-bezier(.2,.8,.2,1);display:flex;flex-direction:column;padding-left:env(safe-area-inset-left,0px);padding-right:env(safe-area-inset-right,0px)}.panel.open{transform:none}.panel-head{display:flex;align-items:center;justify-content:space-between;padding:6px 8px 0 16px}.panel-head h2{margin:0;font-size:17px;font-weight:600}.grab{width:40px;height:4px;border-radius:2px;background:var(--line);margin:8px auto 0}.panel-body{overflow-y:auto;padding:8px 16px 20px;overscroll-behavior:contain}.sec{display:flex;flex-direction:column;gap:10px;padding:12px 0;border-bottom:1px solid var(--line)}.sec:last-child{border-bottom:0}.sec h3{margin:0;font-size:15px;font-weight:600}.hint{font-size:13.5px;color:var(--muted);margin:0}.field{display:flex;flex-direction:column;gap:4px}.field label,.lbl{font-size:14px;font-weight:500}.field .meta{display:flex;justify-content:space-between;font-size:12px;color:var(--muted)}.inp{min-height:44px;border-radius:10px;border:1px solid var(--line);background:var(--surface);padding:8px 12px;width:100%}.inp:focus{border-color:var(--focus)}.row2{display:grid;grid-template-columns:1fr 1fr;gap:8px}.row3{display:grid;grid-template-columns:1fr 1.4fr 1fr;gap:8px}.check{display:flex;align-items:center;gap:10px;min-height:44px;font-size:15px}.check input{width:22px;height:22px;accent-color:var(--primary)}.selected-slot{font-size:14px;padding:10px 12px;border-radius:10px;background:var(--teal-soft);color:var(--ok-ink);display:flex;gap:8px;align-items:center;justify-content:space-between}.tray{display:grid;grid-template-columns:repeat(auto-fill,minmax(84px,1fr));gap:8px}.ph{position:relative;aspect-ratio:1;border-radius:10px;overflow:hidden;background:var(--panel-2);border:2px solid transparent;padding:0}.ph img{width:100%;height:100%;object-fit:cover;display:block;pointer-events:none}.ph .badge{position:absolute;left:4px;bottom:4px;font-size:11px;font-weight:600;background:#141018c7;color:#fff;border-radius:6px;padding:1px 5px;max-width:calc(100% - 8px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ph .badge.free{background:var(--primary)}.ph .sample{position:absolute;right:4px;top:4px;font-size:10px;font-weight:600;background:#ffffffe0;color:#303030;border-radius:5px;padding:0 4px}.ph.skel{background:linear-gradient(90deg,var(--panel-2),var(--panel),var(--panel-2));background-size:200% 100%;animation:shimmer 1.2s infinite}@keyframes shimmer{to{background-position:-200% 0}}.ph-wrap{position:relative}.ph-del{position:absolute;top:2px;right:2px;width:30px;height:30px;border-radius:50%;border:0;background:#141018b3;color:#fff;display:grid;place-items:center}.ph-del svg{width:14px;height:14px}.tmpl-list{display:grid;grid-template-columns:1fr 1fr;gap:10px}.tmpl{border:2px solid var(--line);border-radius:12px;background:var(--surface);padding:8px;display:flex;flex-direction:column;gap:6px;align-items:center;font-weight:500;font-size:14px}.tmpl[aria-pressed=true]{border-color:var(--primary)}.tmpl .tp{width:100%;aspect-ratio:1123/1587;position:relative;overflow:hidden;background:#fff;box-shadow:0 1px 4px #0003}.tmpl .tp>.pagebox{position:absolute;left:0;top:0;transform-origin:0 0}.swatches{display:flex;gap:10px;flex-wrap:wrap}.sw{width:44px;height:44px;border-radius:50%;border:3px solid var(--surface);box-shadow:0 0 0 2px var(--line);padding:0}.sw[aria-pressed=true]{box-shadow:0 0 0 3px var(--ink)}.sw.none{background:conic-gradient(var(--panel-2) 0 25%,var(--surface) 0 50%,var(--panel-2) 0 75%,var(--surface) 0);display:grid;place-items:center;font-size:11px}.evlist{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.ev{display:flex;align-items:center;gap:10px;padding:6px 6px 6px 10px;border-radius:10px;background:var(--panel)}.ev .ic{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;color:#fff;flex-shrink:0}.ev .ic svg{width:16px;height:16px}.ev .tx{flex:1;min-width:0}.ev .nm{display:block;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ev .dt{display:block;font-size:13px;color:var(--muted)}.empty{font-size:14px;color:var(--muted);padding:10px;border:1px dashed var(--line);border-radius:10px;text-align:center}.modal{position:fixed;inset:0;z-index:60;display:flex;align-items:flex-end;justify-content:center;background:var(--scrim);opacity:0;pointer-events:none;transition:opacity .2s}.modal.open{opacity:1;pointer-events:auto}.sheet{width:100%;max-width:640px;max-height:calc(100dvh - 24px - env(safe-area-inset-top,0px));background:var(--surface);border-radius:20px 20px 0 0;display:flex;flex-direction:column;transform:translateY(40px);transition:transform .25s cubic-bezier(.2,.8,.2,1);padding-bottom:env(safe-area-inset-bottom,0px);box-shadow:var(--shadow)}.modal.open .sheet{transform:none}.sheet-head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 8px 4px 16px}.sheet-head h2{margin:0;font-size:18px;font-weight:600;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sheet-body{overflow-y:auto;padding:4px 16px 16px;display:flex;flex-direction:column;gap:12px;overscroll-behavior:contain}.sheet-foot{display:flex;gap:8px;padding:10px 16px 14px;border-top:1px solid var(--line);flex-wrap:wrap}.sheet-foot .grow{flex:1}.crop-stage{position:relative;background:#141216;border-radius:12px;overflow:hidden;touch-action:none;user-select:none;-webkit-user-select:none;height:min(46vh,420px)}.crop-frame{position:absolute;overflow:hidden;box-shadow:0 0 0 9999px #1412169e;outline:2px solid #fff;touch-action:none;cursor:grab;background:#2a262d}.crop-frame.dragging{cursor:grabbing}.crop-frame img{pointer-events:none;user-select:none;-webkit-user-drag:none}.crop-grid{position:absolute;pointer-events:none;z-index:3;background:linear-gradient(90deg,transparent calc(33.33% - .5px),rgba(255,255,255,.4) calc(33.33% - .5px) calc(33.33% + .5px),transparent 0,transparent calc(66.66% - .5px),rgba(255,255,255,.4) calc(66.66% - .5px) calc(66.66% + .5px),transparent 0),linear-gradient(180deg,transparent calc(33.33% - .5px),rgba(255,255,255,.4) calc(33.33% - .5px) calc(33.33% + .5px),transparent 0,transparent calc(66.66% - .5px),rgba(255,255,255,.4) calc(66.66% - .5px) calc(66.66% + .5px),transparent 0)}.crop-tools{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.crop-tools input[type=range]{flex:1;min-width:140px;height:44px;accent-color:var(--primary)}.q{display:inline-flex;align-items:center;gap:6px;font-size:13.5px;font-weight:500;padding:6px 10px;border-radius:999px}.q.good{background:var(--ok-bg);color:var(--ok-ink)}.q.ok{background:var(--warn-bg);color:var(--warn-ink)}.q.bad{background:var(--bad-bg);color:var(--bad-ink)}.chips{display:flex;flex-wrap:wrap;gap:6px}.chip{min-height:40px;border-radius:999px;border:1px solid var(--line);background:var(--surface);padding:0 12px;display:inline-flex;align-items:center;gap:6px;font-size:14px}.chip[aria-pressed=true]{border-color:var(--primary);background:var(--primary);color:var(--on-primary)}.chip svg{width:16px;height:16px}.err{background:var(--bad-bg);color:var(--bad-ink);border-radius:10px;padding:10px 12px;font-size:14px}.day-events{display:flex;flex-direction:column;gap:6px}.review{position:fixed;inset:0;z-index:50;background:var(--bg);display:none;flex-direction:column}.review.open{display:flex}.review-head{display:flex;align-items:center;gap:8px;padding:calc(8px + env(safe-area-inset-top,0px)) max(16px,env(safe-area-inset-right,0px)) 8px max(16px,env(safe-area-inset-left,0px));border-bottom:1px solid var(--line);background:var(--surface)}.review-head h2{margin:0;font-size:18px;flex:1}.review-body{flex:1;overflow-y:auto;padding:16px max(16px,env(safe-area-inset-right,0px)) 24px max(16px,env(safe-area-inset-left,0px))}.review-in{max-width:1200px;margin:0 auto;display:flex;flex-direction:column;gap:18px}.rgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:14px}.rp{border:0;background:transparent;padding:0;display:flex;flex-direction:column;gap:6px;text-align:left}.rp .tp{width:100%;aspect-ratio:1123/1587;position:relative;overflow:hidden;background:#fff;box-shadow:0 2px 8px #0003}.rp .tp>.pagebox{position:absolute;left:0;top:0;transform-origin:0 0}.rp .cap{font-size:14px;font-weight:500;display:flex;gap:6px;align-items:center}.issues{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.issue{display:flex;align-items:center;gap:10px;padding:8px 8px 8px 12px;border-radius:10px;font-size:14.5px}.issue.bad{background:var(--bad-bg);color:var(--bad-ink)}.issue.warn{background:var(--warn-bg);color:var(--warn-ink)}.issue.good{background:var(--ok-bg);color:var(--ok-ink)}.issue span{flex:1}.issue .btn{color:inherit;border-color:currentColor;background:transparent}.review-foot{border-top:1px solid var(--line);background:var(--surface);padding:12px max(16px,env(safe-area-inset-right,0px)) calc(12px + env(safe-area-inset-bottom,0px)) max(16px,env(safe-area-inset-left,0px))}.review-foot-in{max-width:1200px;margin:0 auto;display:flex;gap:10px;align-items:center;flex-wrap:wrap}.review-foot .note{flex:1;min-width:200px;font-size:14px;color:var(--muted)}.basket-note{background:var(--teal-soft);color:var(--ok-ink);border-radius:10px;padding:10px 12px;font-size:14.5px}.toast-host{position:fixed;left:50%;transform:translate(-50%);bottom:calc(var(--tabbar-h) + 16px + env(safe-area-inset-bottom,0px));z-index:80;display:flex;flex-direction:column;gap:6px;width:min(92vw,460px);pointer-events:none}.toast{background:#2a262d;color:#fff;border-radius:12px;padding:10px 14px;font-size:14.5px;box-shadow:var(--shadow);pointer-events:auto;animation:tin .2s ease-out}.toast.bad{background:#8e2424}@keyframes tin{0%{opacity:0;transform:translateY(8px)}}.measure{position:fixed;left:-20000px;top:0;visibility:hidden;pointer-events:none}@media (min-width:960px){.app{display:grid;grid-template-columns:minmax(0,1fr) 400px;grid-template-rows:auto 1fr;column-gap:20px;row-gap:0;align-items:start;padding-bottom:24px}.tabbar{position:sticky;top:calc(68px + env(safe-area-inset-top,0px));grid-column:2;grid-row:1;border:1px solid var(--line);border-radius:14px 14px 0 0;padding:0;z-index:5}.panel{position:sticky;top:calc(132px + env(safe-area-inset-top,0px));grid-column:2;grid-row:2;transform:none;transition:none;max-height:calc(100vh - 150px);border-radius:0 0 14px 14px;box-shadow:none;border:1px solid var(--line);border-top:0;z-index:4}.preview-col{grid-column:1;grid-row:1 / span 2}.panel .grab,.panel .panel-close{display:none}.modal{align-items:center}.sheet{border-radius:20px;max-height:calc(100vh - 48px)}.toast-host{bottom:24px}.panel{align-self:start}.crop-stage{height:min(52vh,460px)}}body.modal-open .toast-host{bottom:auto;top:calc(12px + env(safe-area-inset-top,0px))}@media (prefers-reduced-motion: reduce){*,*:before,*:after{transition:none!important;animation:none!important}}.pagebox{color-scheme:light}.ev-day{display:flex;align-items:center;gap:8px;padding:6px 6px 6px 10px;border-radius:10px;background:var(--panel)}.ev-day .nm{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:500}.warnline{font-size:13px;color:var(--warn-ink);background:var(--warn-bg);border-radius:8px;padding:6px 10px}.toast .tb{background:transparent;border:1px solid rgba(255,255,255,.6);color:#fff;border-radius:8px;min-height:32px;padding:0 10px;margin-left:10px}.toast{display:flex;align-items:center;justify-content:space-between}
