:root{--ground:#2a322c;--ground-deep:#1c221e;--raised:#333b34;--sheet:#1e241f;--sheet-ink:#e6e1d3;--sheet-dim:#a8b5a6;--sheet-day:#e8e3d3;--sheet-day-ink:#1b1f1b;--sheet-day-dim:#4a544c;--label:#d9a441;--label-ink:#1b1f1b;--print-red:#b4341f;--warn:#f08a6e;--plant:#6b7d63;--steel:#7c8a80;--ink:#e6e1d3;--dim:#a8b5a6;--line:#7c8a806b;--line-strong:#7c8a80b3;--s1:4px;--s2:8px;--s3:12px;--s4:16px;--s5:20px;--s6:32px;--s7:48px;--r:2px;--fs:1;--dur-pull:.12s;--dur-peel:.2s;--ease:cubic-bezier(.16,.84,.44,1)}*,:before,:after{box-sizing:border-box}html,body{height:100%;margin:0;padding:0}body{background:var(--ground);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,PingFang TC,Noto Sans TC,Microsoft JhengHei,sans-serif;font-size:calc(17px * var(--fs));-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;overscroll-behavior-y:none;line-height:1.75}::selection{background:var(--label);color:var(--label-ink)}*{caret-color:var(--label)}:focus-visible{outline:2px solid var(--label);outline-offset:2px}*{scrollbar-width:thin;scrollbar-color:var(--steel) transparent}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--steel);border:3px solid var(--ground);border-radius:0}::-webkit-scrollbar-track{background:0 0}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0;padding:0}.mono{font-variant-numeric:tabular-nums;font-family:ui-monospace,SF Mono,Noto Sans Mono,Consolas,monospace;font-size:calc(13px * var(--fs));letter-spacing:.02em}.dim{color:var(--dim)}.sr{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.app{flex-direction:column;max-width:100%;height:100dvh;display:flex}.topbar{align-items:center;gap:var(--s3);padding:var(--s3) var(--s4);border-bottom:1px solid var(--line);background:var(--ground);flex:none;display:flex}.brand{font-weight:700;font-size:calc(17px * var(--fs));letter-spacing:.04em}.topbar .grow{flex:1}.iconbtn{border-radius:var(--r);border:1px solid #0000;place-items:center;width:44px;height:44px;display:grid}.iconbtn:hover{border-color:var(--line)}.iconbtn[aria-pressed=true]{border-color:var(--label);color:var(--label)}.ico{stroke:currentColor;stroke-width:1.5px;fill:none;stroke-linecap:square;stroke-linejoin:miter;width:20px;height:20px}.banner{align-items:center;gap:var(--s3);background:var(--label);color:var(--label-ink);padding:var(--s3) var(--s4);font-weight:700;font-size:calc(15px * var(--fs));flex:none;min-height:44px;display:flex}.banner .mono{font-size:calc(13px * var(--fs))}.bgroup{align-items:baseline;gap:6px;display:inline-flex}.banner button{color:var(--label-ink);text-underline-offset:3px;min-height:44px;padding:0 var(--s1);font-weight:700;text-decoration:underline}.notice{align-items:center;gap:var(--s2);padding:var(--s2) var(--s4);background:var(--ground-deep);color:var(--dim);font-size:calc(13px * var(--fs));flex:none;display:flex}.notice.warn{color:var(--warn)}.nav{border-top:1px solid var(--line-strong);background:var(--ground-deep);padding-bottom:env(safe-area-inset-bottom);flex:none;grid-template-columns:repeat(3,1fr);display:grid}.nav button{padding:var(--s3) var(--s1);border-top:2px solid #0000;place-items:center;gap:2px;min-height:56px;display:grid}.nav button .n{font-size:calc(15px * var(--fs));font-weight:600}.nav button .sub{font-size:calc(11px * var(--fs));color:var(--dim);letter-spacing:.08em}.nav button[aria-current=page]{border-top-color:var(--label);background:var(--raised)}.nav button[aria-current=page] .n{color:var(--label)}.cabinet{gap:var(--s2);padding:var(--s3) var(--s4);background:var(--ground);border-bottom:1px solid var(--line);flex:none;display:flex;overflow-x:auto}.drawer{min-width:88px;min-height:56px;padding:var(--s2) var(--s3);text-align:left;white-space:nowrap;border:1px solid var(--line);border-radius:var(--r);background:var(--ground-deep);transition:transform var(--dur-pull) var(--ease),box-shadow var(--dur-pull) var(--ease);flex:none}.drawer:hover{transform:translateY(-2px);box-shadow:0 6px 12px #00000059}.drawer[aria-pressed=true]{background:var(--raised);border-color:var(--label)}.drawer[aria-pressed=true] .dn{color:var(--label)}.drawer .dn{font-weight:600;font-size:calc(15px * var(--fs));white-space:nowrap;display:block}.drawer .dc{color:var(--dim);display:block}.drawer.locked .dc{filter:blur(4px);-webkit-user-select:none;user-select:none}.sheetwrap{padding:var(--s5) var(--s4) calc(var(--s6) + 84px);background:var(--ground);flex:1;overflow-y:auto}.sheet{background:var(--sheet);color:var(--sheet-ink);padding:var(--s6) var(--s5);border:1px solid var(--line);max-width:70ch;margin:0 auto;box-shadow:inset 0 1px #ffffff0d,inset 0 -1px #0006,0 2px 6px #00000059}body[data-material=day] .sheet{background:var(--sheet-day);color:var(--sheet-day-ink)}body[data-material=day]{background:#3a423b}.sheet.due{box-shadow:inset 0 3px 0 var(--label), 0 2px 6px #00000059}.sheet.invalid{opacity:.92}.sheet h1{font-size:calc(24px * var(--fs));margin:0 0 var(--s3);font-weight:700;line-height:1.5}.sheet .spec{font-size:calc(17px * var(--fs));margin:0 0 var(--s4);line-height:1.75}.sheet .spec .sent{display:block}.sheet .body{font-size:calc(17px * var(--fs));margin:0 0 var(--s5);white-space:pre-wrap;line-height:1.75}body[data-material=day] .sheet .dim,body[data-material=day] .sheet .meta-k{color:var(--sheet-day-dim)}.sheettools{gap:var(--s2);margin:0 0 var(--s5);flex-wrap:wrap;display:flex}.btn{min-height:44px;padding:0 var(--s4);border:1px solid var(--line-strong);border-radius:var(--r);background:var(--ground-deep);color:var(--ink);font-size:calc(15px * var(--fs));align-items:center;gap:var(--s2);display:inline-flex}.btn:hover{border-color:var(--label)}.btn[disabled]{opacity:.45;cursor:not-allowed;border-style:dashed}.btn.primary{background:var(--label);color:var(--label-ink);border-color:var(--label);font-weight:700}.btn.primary[disabled]{color:var(--dim);border-color:var(--line);background:0 0}body[data-material=day] .sheet .btn{color:var(--sheet-day-ink);background:0 0;border-color:#1b1f1b59}body[data-material=day] .sheet .btn.primary{background:var(--label);color:var(--label-ink);border-color:var(--label)}.labelplate{margin-top:var(--s5);background:var(--label);color:var(--label-ink);padding:var(--s3) var(--s3) var(--s2);border-radius:var(--r);border:1px solid #1b1f1b73}.labelplate .lh{font-weight:700;font-size:calc(15px * var(--fs));justify-content:space-between;gap:var(--s3);display:flex}.labelplate .rows{margin-top:var(--s2);gap:2px var(--s3);grid-template-columns:auto 1fr;display:grid}.labelplate .meta-k{color:#1b1f1bb8;font-size:calc(13px * var(--fs))}.labelplate input,.labelplate select{width:100%;color:var(--label-ink);font:inherit;font-size:calc(13px * var(--fs));background:0 0;border:0;border-bottom:1px solid #1b1f1b66;border-radius:0;padding:2px 0}.labelplate input::placeholder{color:#1b1f1b8c}.labelplate .req{font-size:calc(13px * var(--fs));color:#1b1f1bb8;margin-top:var(--s2)}.labelplate.invalid{background:var(--ground-deep);color:var(--ink);border:1px dashed var(--warn)}.labelplate.invalid .meta-k{color:var(--dim)}.labelplate.invalid .lh{color:var(--warn)}.strings{margin-top:var(--s5)}.string .to.restricted{color:var(--steel);font-style:italic}.string[data-restricted=true]{border-bottom-style:dashed}.strings h2,.blockhead{font-size:calc(15px * var(--fs));margin:0 0 var(--s2);color:var(--ink);font-weight:700}.string{align-items:center;gap:var(--s3);border-bottom:1px solid var(--line);text-align:left;width:100%;min-height:44px;display:flex}.string:hover{color:var(--label)}.string .tag{border:1px solid var(--line-strong);padding:0 var(--s2);font-size:calc(11px * var(--fs));border-radius:var(--r);flex:none}.string .to{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.string .cnt{color:var(--dim)}.workbench{padding:var(--s5) var(--s4) calc(var(--s6) + 84px);flex:1;overflow-y:auto}.panel{border:1px solid var(--line);border-radius:var(--r);background:var(--ground-deep);padding:var(--s4);margin:0 auto var(--s4);max-width:70ch}.panel>h2{font-size:calc(15px * var(--fs));margin:0 0 var(--s3);justify-content:space-between;gap:var(--s3);font-weight:700;display:flex}.panel textarea{width:100%;min-height:calc(72px * var(--fs));background:var(--sheet);color:var(--sheet-ink);border:1px solid var(--line);border-radius:var(--r);padding:var(--s3);font:inherit;font-size:calc(17px * var(--fs));resize:vertical;line-height:1.75}body[data-material=day] .panel textarea{background:var(--sheet-day);color:var(--sheet-day-ink)}.counter{font-size:calc(13px * var(--fs))}.counter.over{color:var(--warn);font-weight:700}.hint{font-size:calc(13px * var(--fs));color:var(--dim);margin:var(--s2) 0 0}.hint.ok{color:var(--plant)}.hint.bad{color:var(--warn)}.row{gap:var(--s2);flex-wrap:wrap;align-items:center;display:flex}.row.between{justify-content:space-between}.input{background:var(--sheet);border:1px solid var(--line);color:var(--sheet-ink);border-radius:var(--r);padding:var(--s2) var(--s3);font:inherit;font-size:calc(15px * var(--fs));flex:1;min-height:44px}body[data-material=day] .input{background:var(--sheet-day);color:var(--sheet-day-ink)}.tray{padding:var(--s5) var(--s4) calc(var(--s6) + 84px);flex:1;overflow-y:auto}.traygrid{gap:var(--s3);grid-template-columns:repeat(auto-fill,minmax(150px,1fr));max-width:70ch;margin:0 auto;display:grid}.bag{border:1px solid var(--line);background:var(--ground-deep);border-radius:var(--r);min-height:150px;padding:var(--s3);text-align:left;justify-content:flex-end;gap:var(--s1);flex-direction:column;display:flex;position:relative;overflow:hidden}.bag .thumb{background:repeating-linear-gradient(135deg,#7c8a8024 0 6px,transparent 6px 12px),var(--ground-deep);position:absolute;inset:0}.bag .glassine{-webkit-backdrop-filter:blur(7px);transition:transform var(--dur-peel) var(--ease),opacity var(--dur-peel) var(--ease);background:#e8e3d329;border-bottom:1px solid #e8e3d340;position:absolute;inset:0}.bag .glassine:after{content:"";background:#e8e3d359;height:1px;position:absolute;bottom:6px;left:0;right:0}.bag[data-peeled=true] .glassine{opacity:0;transform:translateY(-102%)}.bagimg{object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.bagactions{flex-wrap:wrap;gap:4px;margin-top:8px;display:flex;position:relative}.bagactions .chip{min-height:32px;font-size:calc(12px * var(--fs));padding:2px 8px}.bag .nm{font-weight:600;font-size:calc(15px * var(--fs));position:relative}.bag .st{color:var(--dim);position:relative}.bag .sensitive{color:var(--warn);font-weight:700;position:relative}.bag .peelnote{top:var(--s3);right:var(--s3);color:var(--print-red);font-size:calc(11px * var(--fs));font-weight:700;position:absolute}.scrim{z-index:40;background:#0c100db8;display:none;position:fixed;inset:0}.scrim[data-open=true]{display:block}.sheetpanel{z-index:50;background:var(--ground);border-top:1px solid var(--line-strong);max-height:92dvh;padding:var(--s4) var(--s4) var(--s6);position:fixed;bottom:0;left:0;right:0;overflow-y:auto}@media (min-width:1024px){.sheetpanel{left:auto;right:var(--s4);bottom:var(--s4);top:var(--s4);border:1px solid var(--line-strong);width:min(560px,42vw)}}.sheetpanel[hidden]{display:none}.sheetpanel h2{font-size:calc(17px * var(--fs));margin:0 0 var(--s3)}.searchfield{background:var(--sheet);border:1px solid var(--label);width:100%;color:var(--sheet-ink);padding:var(--s3);font:inherit;font-size:calc(17px * var(--fs));border-radius:var(--r);min-height:48px}body[data-material=day] .searchfield{background:var(--sheet-day);color:var(--sheet-day-ink)}.result{text-align:left;border-bottom:1px solid var(--line);width:100%;padding:var(--s3) 0;min-height:44px;display:block}.result .rk{color:var(--dim)}.canvasbox{border:1px solid var(--line);background:var(--ground-deep);height:52dvh;position:relative;overflow:hidden}.canvasbox canvas{touch-action:none;width:100%;height:100%;display:block}.conflict{gap:var(--s3);grid-template-columns:1fr 1fr;display:grid}@media (max-width:700px){.conflict{grid-template-columns:1fr}}.conflict .side{border:1px solid var(--line);padding:var(--s3);background:var(--ground-deep)}.conflict .side h3{margin:0 0 var(--s2);font-size:calc(13px * var(--fs));color:var(--dim);font-weight:400}.pickrow{gap:var(--s2);margin-top:var(--s2);flex-wrap:wrap;display:flex}.chip{border:1px solid var(--line-strong);padding:var(--s1) var(--s3);border-radius:var(--r);min-height:36px;font-size:calc(13px * var(--fs))}.chip[aria-pressed=true]{background:var(--label);color:var(--label-ink);border-color:var(--label)}.dbg{left:var(--s3);right:var(--s3);bottom:calc(64px + env(safe-area-inset-bottom));z-index:60;border:1px solid var(--line-strong);background:var(--ground-deep);border-radius:var(--r);padding:var(--s2);gap:var(--s2);flex-wrap:wrap;max-height:38dvh;display:flex;position:fixed;overflow-y:auto;box-shadow:0 6px 16px #00000080}.dbg[hidden]{display:none}.dbg .lbl{width:100%;color:var(--dim);font-size:calc(11px * var(--fs));letter-spacing:.08em}.dropzone{z-index:70;background:var(--ground);padding:var(--s5);gap:var(--s4);grid-template-columns:1fr 1fr;align-content:center;display:none;position:fixed;inset:0}.dropzone[data-open=true]{display:grid}.zone{border:1px dashed var(--line-strong);border-radius:var(--r);padding:var(--s6) var(--s5);justify-content:center;align-items:center;gap:var(--s2);background:var(--ground-deep);text-align:center;min-height:200px;transition:border-color var(--dur-pull) var(--ease),background var(--dur-pull) var(--ease);flex-direction:column;display:flex}.zone h3{font-size:calc(17px * var(--fs));margin:0}.zone p{color:var(--dim);font-size:calc(13px * var(--fs));max-width:34ch;margin:0}.zone .zico{color:var(--steel)}.zone .ico{width:28px;height:28px}.zone[data-over=true]{border-style:solid;border-color:var(--label);background:var(--raised)}.zone[data-over=true] .zico{color:var(--label)}@media (max-width:700px){.dropzone{grid-template-columns:1fr}}.syncbadge{position:relative}.syncbadge .badge{background:var(--label);color:var(--label-ink);border-radius:var(--r);padding:2px 4px;font-size:10px;line-height:1;position:absolute;top:4px;right:2px}.recovery{font-size:calc(19px * var(--fs));letter-spacing:.1em;background:var(--label);color:var(--label-ink);padding:var(--s4);text-align:center;border-radius:var(--r);-webkit-user-select:all;user-select:all;word-break:break-all;font-family:ui-monospace,SF Mono,Noto Sans Mono,Consolas,monospace}.toast{left:50%;bottom:calc(88px + env(safe-area-inset-bottom));z-index:80;background:var(--label);color:var(--label-ink);border-radius:var(--r);font-weight:700;font-size:calc(14px * var(--fs));text-align:center;max-width:86vw;padding:10px 16px;position:fixed;transform:translate(-50%);box-shadow:0 6px 16px #00000080}@media (min-width:1024px){.toast{bottom:24px}}select.input{appearance:none}@media (min-width:1024px){.app{grid-template-rows:auto auto 1fr auto;grid-template-columns:264px 1fr 320px;height:100dvh;display:grid}.topbar{grid-column:1/-1}.banners{grid-area:2/1/auto/-1}.cabinet{border-bottom:0;border-right:1px solid var(--line);padding:var(--s4);flex-direction:column;grid-area:3/1;overflow-y:auto}.drawer{width:100%}.sheetwrap{padding:var(--s6);grid-area:3/2}.rail{border-left:1px solid var(--line);padding:var(--s4);grid-area:3/3;display:block;overflow-y:auto}.nav{border-top:1px solid var(--line);border-right:1px solid var(--line);grid-area:4/1;grid-template-columns:1fr}.nav button{justify-content:start;gap:var(--s3);padding-left:var(--s4);border-top:0;border-left:2px solid #0000;grid-auto-flow:column}.nav button[aria-current=page]{border-left-color:var(--label);border-top-color:#0000}.dbg{left:auto;right:var(--s4);bottom:var(--s4);max-width:min(420px,34vw)}body{font-size:calc(17px*var(--fs))}}.rail{display:none}@media (prefers-reduced-motion:reduce){*{transition-duration:1ms!important;animation-duration:1ms!important}}.subchips{gap:var(--s2);padding:0 var(--s4) var(--s3);flex-wrap:wrap;align-items:center;display:flex}.subchips .hint{margin:0}.drawer.manage{color:var(--dim);border-style:dashed}.catrow{border:1px solid var(--line);border-radius:var(--r);padding:var(--s3);background:var(--raised)}.catrow.sub{margin-left:var(--s4);border-left:3px solid var(--label);background:0 0}.catcard{margin-top:var(--s3);padding:var(--s3);border:1px dashed var(--line-strong);border-radius:var(--r)}.btn.small{min-height:36px;padding:0 var(--s2);font-size:calc(14px * var(--fs))}.btn.danger{border-color:var(--print-red);color:var(--warn)}
