:root{--ink: #736251;--ink-raise: #7f6d5b;--hairline: rgba(246, 241, 235, .22);--hairline-strong: rgba(246, 241, 235, .4);--on-ink: #f6f1eb;--on-ink-soft: rgba(246, 241, 235, .78);--on-ink-faint: rgba(246, 241, 235, .54);--sunk: #e9e0d4;--base: #f6f1eb;--surface: #fdfaf6;--surface-2: #ffffff;--line: #e3d9cc;--line-strong: #c4b3a2;--text-strong: #5a403e;--text: #6b4f4d;--text-soft: #7c6160;--text-faint: #816868;--deco: #8d7f72;--accent: #736251;--accent-text: #f6f1eb;--accent-hover: #635343;--accent-ink: #f6f1eb;--accent-ink-text: #736251;--accent-ink-hover: #ffffff;--r-panel: 24px;--r-card: 18px;--r-control: 14px;--r-chip: 10px;--r-pill: 999px;--s-1: 4px;--s-2: 8px;--s-3: 12px;--s-4: 16px;--s-5: 24px;--s-6: 32px;--s-7: 48px;--s-8: 64px;--font-sans: "Archivo", system-ui, -apple-system, "Segoe UI", "Noto Sans SC", "PingFang SC", "Microsoft YaHei", "Hiragino Sans GB", sans-serif;--font-mono: "IBM Plex Mono", "Cascadia Mono", Consolas, "Courier New", monospace;--t-micro: 11px;--t-small: 12px;--t-body: 13px;--t-lead: 15px;--t-title: 20px;--t-display: 30px;--t-hero: 46px;--lh-tight: 1.35;--lh-body: 1.7;--topbar-h: 52px;--work-max: 1180px;--lift: 3px 3px 0 0 rgba(115, 98, 81, .18);--lift-strong: 4px 4px 0 0 rgba(115, 98, 81, .24);--glint: rgba(246, 241, 235, .1);--scrim: rgba(59, 48, 40, .6);--ease: cubic-bezier(.22, .61, .36, 1)}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}}*,*:before,*:after{box-sizing:border-box}html,body,#root{height:100%;margin:0;background:#f6f1eb}body{background:var(--base);color:var(--text);font-family:var(--font-sans);font-size:var(--t-body);line-height:var(--lh-body);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}h1,h2,h3,h4,p,figure,blockquote{margin:0}button,input,select,textarea{font:inherit;color:inherit}a{color:inherit;text-decoration:none}:focus-visible{outline:2px solid var(--text);outline-offset:2px;border-radius:var(--r-chip)}.on-ink :focus-visible{outline-color:var(--base)}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--line-strong);border:3px solid var(--base);border-radius:var(--r-pill)}::-webkit-scrollbar-thumb:hover{background:var(--text-faint)}.on-ink ::-webkit-scrollbar-thumb{background:var(--hairline-strong);border-color:var(--ink)}.shell{display:grid;grid-template-rows:auto minmax(0,1fr);height:100%}.auth-screen{min-height:100%;display:grid;place-items:center;padding:var(--s-5);background:var(--base)}.auth-card{width:min(420px,100%);display:grid;gap:var(--s-4);padding:var(--s-6);border:1px solid var(--line);border-radius:var(--r-card);background:var(--surface)}.auth-mark{width:42px;height:42px;display:grid;place-items:center;border-radius:var(--r-control);background:var(--ink);color:var(--on-ink);font-weight:700}.auth-toast{position:fixed;bottom:var(--s-6);left:50%;transform:translate(-50%);padding:var(--s-3) var(--s-5);color:var(--on-ink);background:var(--ink);border-radius:var(--r-control)}.topbar-user{font-size:var(--t-small);white-space:nowrap}.admin-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--s-5)}.admin-users,.admin-config{margin-top:var(--s-5)}.admin-price{align-items:end}.admin-price .field{flex:1;max-width:320px}.admin-user-row{gap:var(--s-4)}.admin-user-row .row-actions{flex-wrap:wrap}.form-actions{display:flex;align-items:end}@media (max-width: 900px){.admin-grid{grid-template-columns:1fr}.topbar-user{display:none}.admin-user-row{align-items:flex-start;flex-direction:column}}.topbar{display:flex;justify-content:center;height:var(--topbar-h);flex:none;background:var(--ink);color:var(--on-ink);border-bottom:1px solid var(--hairline);position:relative;z-index:40}.topbar-inner{display:flex;align-items:center;gap:var(--s-5);width:100%;max-width:var(--work-max);padding:0 var(--s-6)}.topbar-brand{display:flex;align-items:center;gap:var(--s-3);min-width:0;flex:none;color:inherit}.topbar-mark{width:28px;height:28px;flex:none;border-radius:9px;background:var(--base);color:var(--ink);display:grid;place-items:center;font-weight:600;font-size:var(--t-body);letter-spacing:.04em}.topbar-brand-text{display:flex;flex-direction:column;line-height:1.2;min-width:0}.topbar-title{font-size:var(--t-body);font-weight:500;white-space:nowrap}.topbar-sub{font-size:var(--t-micro);color:var(--on-ink-faint);white-space:nowrap}.topbar-brand:hover .topbar-title{color:var(--text)}.topbar-nav{display:flex;align-items:center;gap:2px;flex:none;margin-right:auto}.topbar-link{display:inline-flex;align-items:center;height:32px;padding:0 var(--s-4);border-radius:var(--r-control);font-size:var(--t-body);color:var(--on-ink-soft);border:1px solid transparent;transition:color .14s var(--ease),background .14s var(--ease),border-color .14s var(--ease)}.topbar-link:hover{color:var(--on-ink);background:#f6f1eb1a}.topbar-link.is-active{background:var(--accent-ink);color:var(--accent-ink-text);font-weight:500}.topbar-status{display:flex;align-items:center;gap:var(--s-2);flex:none}.lamp{display:inline-flex;align-items:center;gap:6px;height:26px;padding:0 var(--s-3);border-radius:var(--r-pill);border:1px solid var(--hairline-strong);font-size:var(--t-micro);white-space:nowrap;cursor:default}.lamp-dot{width:6px;height:6px;flex:none;border-radius:var(--r-pill);background:currentColor}.lamp-label{color:var(--on-ink-faint)}.lamp-value{color:var(--on-ink)}.lamp[data-tone=ok] .lamp-dot{background:var(--on-ink)}.lamp[data-tone=ok] .lamp-value{color:var(--on-ink-soft)}.lamp[data-tone=busy]{border-color:var(--hairline-strong)}.lamp[data-tone=busy] .lamp-dot{background:var(--accent-ink);animation:pulse 1.4s var(--ease) infinite}.lamp[data-tone=busy] .lamp-value{color:var(--accent-ink)}.lamp[data-tone=down]{border-style:dashed;border-color:var(--hairline-strong)}.lamp[data-tone=down] .lamp-dot{background:transparent;box-shadow:inset 0 0 0 1px var(--on-ink-faint)}.lamp[data-tone=down] .lamp-value{color:var(--on-ink-faint)}.work{background:var(--base);overflow-y:auto;overflow-x:hidden;min-height:0}.work-inner{max-width:var(--work-max);margin:0 auto;padding:var(--s-7) var(--s-6) var(--s-8)}.t-hero{font-size:var(--t-hero);font-weight:500;line-height:1.1;letter-spacing:-.02em;color:var(--text-strong)}.t-display{font-size:var(--t-display);font-weight:500;line-height:1.16;letter-spacing:-.015em;color:var(--text-strong)}.t-title{font-size:var(--t-title);font-weight:600;line-height:1.3;color:var(--text-strong)}.t-lead{font-size:var(--t-lead);line-height:var(--lh-body);color:var(--text-soft)}.t-body{font-size:var(--t-body)}.t-small{font-size:var(--t-small);color:var(--text-soft)}.t-micro{font-size:var(--t-micro);color:var(--text-faint)}.t-code{font-family:var(--font-mono);font-size:var(--t-small);font-variant-numeric:tabular-nums}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--s-5);padding-bottom:var(--s-5);border-bottom:1px solid var(--line);margin-bottom:var(--s-6)}.page-head-main{min-width:0}.page-head-sub{margin-top:var(--s-2);font-size:var(--t-body);color:var(--text-soft);max-width:62ch}.page-head-actions{display:flex;gap:var(--s-2);flex-wrap:wrap;justify-content:flex-end}.rail{position:relative;background:var(--ink);border:1px solid var(--hairline);border-radius:var(--r-panel);padding:var(--s-5) var(--s-5) var(--s-5)}.rail-head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--s-4);margin-bottom:var(--s-5);color:var(--on-ink)}.rail-head-left{display:flex;align-items:baseline;gap:var(--s-4);min-width:0}.rail-head-title{font-size:var(--t-lead);font-weight:600}.rail-head-note{font-size:var(--t-micro);font-family:var(--font-mono);color:var(--on-ink-faint)}.rail-head-right{display:flex;align-items:baseline;gap:var(--s-2);flex:none}.rail-head-count{font-size:var(--t-display);font-weight:500;line-height:1;letter-spacing:-.02em;font-variant-numeric:tabular-nums}.rail-head-total{font-size:var(--t-lead);color:var(--on-ink-faint)}.rail-head-label{font-size:var(--t-micro);color:var(--on-ink-faint)}.rail-track{display:grid;gap:var(--s-2);grid-auto-flow:column;grid-auto-columns:minmax(0,1fr)}.frame{position:relative;display:flex;flex-direction:column;gap:var(--s-2);padding:var(--s-4) var(--s-4) var(--s-3);border-radius:var(--r-card);border:1px solid var(--hairline);background:transparent;color:var(--on-ink-faint);text-align:left;cursor:pointer;min-height:122px;transition:background-color .16s var(--ease),color .16s var(--ease),border-color .16s var(--ease)}.frame:hover{border-color:var(--hairline-strong);color:var(--on-ink-soft)}.frame[data-state=done]{background:var(--glint);border-color:var(--hairline-strong);color:var(--on-ink-soft)}.frame[data-state=running]{background:var(--accent-ink);border-color:var(--accent-ink);color:var(--accent-ink-text)}.frame[data-state=failed]{border-color:var(--on-ink-soft);border-style:dashed;color:var(--on-ink)}.frame[data-state=locked]{color:#f6f1eb52}.frame[data-state=locked] .frame-badge{opacity:.5}.frame[data-active=true]{outline:2px solid var(--accent-ink);outline-offset:2px}.frame[data-state=running][data-active=true]{outline-color:var(--accent-ink-text)}.frame-top{display:flex;align-items:center;justify-content:space-between;gap:var(--s-2)}.frame-no{font-family:var(--font-mono);font-size:var(--t-small);letter-spacing:.08em;opacity:.75}.frame-badge{display:inline-flex;align-items:center;height:20px;padding:0 8px;border-radius:var(--r-pill);border:1px solid currentColor;font-size:var(--t-micro);white-space:nowrap;opacity:.9}.frame-badge[data-badge=running]{border-color:transparent;background:var(--accent-ink-text);color:var(--accent-ink)}.frame-badge[data-badge=done]{border-color:transparent;background:#f6f1eb29}.frame-badge[data-badge=failed]{border-style:dashed}.frame-badge[data-badge=pending]{border-color:#f6f1eb42}.frame-label{font-size:var(--t-lead);font-weight:600;margin-top:auto;letter-spacing:.01em}.frame-note{font-size:var(--t-micro);line-height:1.5;opacity:.72;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.rail-progress{display:grid;gap:var(--s-2);grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);margin-top:var(--s-5)}.rail-progress-seg{position:relative;height:10px;border-radius:3px;background:#f6f1eb1f;overflow:hidden}.rail-progress-fill{display:block;height:100%;border-radius:3px;transition:width .5s var(--ease)}.rail-progress-seg[data-state=done] .rail-progress-fill{background:var(--on-ink-soft)}.rail-progress-seg[data-state=running] .rail-progress-fill{background:var(--accent-ink);animation:pulse 1.6s var(--ease) infinite}.rail-progress-seg[data-state=running]{background:#f6f1eb33}.rail-progress-seg[data-state=failed] .rail-progress-fill{background:repeating-linear-gradient(45deg,var(--on-ink-soft) 0 4px,rgba(246,241,235,.2) 4px 8px)}.rail-progress-seg[data-active=true]{box-shadow:inset 0 0 0 1px var(--hairline-strong)}.rail-foot{display:flex;align-items:center;justify-content:space-between;gap:var(--s-4);margin-top:var(--s-4)}.rail-foot-percent{font-family:var(--font-mono);font-size:var(--t-title);font-weight:500;color:var(--on-ink);font-variant-numeric:tabular-nums;line-height:1}.rail-foot-actions{display:flex;gap:var(--s-2)}.panel{border:1px solid var(--line);border-radius:var(--r-panel);background:var(--surface);padding:var(--s-5)}.panel+.panel{margin-top:var(--s-5)}.panel-flush{padding:0;overflow:hidden}.panel-head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--s-4);margin-bottom:var(--s-4)}.panel-head-flush{padding:var(--s-5) var(--s-5) var(--s-4);margin-bottom:0;border-bottom:1px solid var(--line)}.panel-title{font-size:var(--t-lead);font-weight:600;color:var(--text-strong)}.panel-note{font-size:var(--t-small);color:var(--text-faint)}.block{border:1px solid var(--line);border-radius:var(--r-card);padding:var(--s-4);background:var(--surface-2)}.block-sunk{background:var(--sunk);border-color:transparent}.lift{box-shadow:var(--lift)}.lift-soft{box-shadow:3px 3px #6b4f4d1a}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--s-2);padding:0 var(--s-4);height:36px;border-radius:var(--r-control);border:1px solid var(--line-strong);background:var(--surface-2);color:var(--text);font-size:var(--t-body);font-weight:500;cursor:pointer;white-space:nowrap;transition:background-color .14s var(--ease),color .14s var(--ease),border-color .14s var(--ease),transform 80ms var(--ease)}.btn:hover:not(:disabled){background:var(--line)}.btn:active:not(:disabled){transform:translateY(1px)}.btn:disabled,.btn[aria-disabled=true]{cursor:not-allowed;border-color:var(--line);color:var(--text-faint);background:transparent}.btn-primary{background:var(--accent);color:var(--accent-text);border-color:var(--accent)}.btn-primary:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover)}.btn-primary:disabled,.btn-primary[aria-disabled=true]{background:transparent;color:var(--text-faint);border-color:var(--line)}.btn-ghost{border-color:transparent;background:transparent}.btn-ghost:hover:not(:disabled){background:var(--surface-2)}.btn-sm{height:30px;padding:0 var(--s-3);font-size:var(--t-small);border-radius:var(--r-chip)}.btn-lg{height:42px;padding:0 var(--s-5)}.btn-block{width:100%}.on-ink .btn{background:transparent;border-color:var(--hairline-strong);color:var(--on-ink)}.on-ink .btn:hover:not(:disabled){background:#f6f1eb1f}.on-ink .btn-primary{background:var(--accent-ink);color:var(--accent-ink-text);border-color:var(--accent-ink)}.on-ink .btn-primary:hover:not(:disabled){background:var(--accent-ink-hover);border-color:var(--accent-ink-hover)}.on-ink .btn:disabled{border-color:var(--hairline);color:var(--on-ink-faint);background:transparent}.on-ink .btn-primary:disabled{background:transparent;color:var(--on-ink-faint)}.field{display:flex;flex-direction:column;gap:var(--s-2)}.field-label{font-size:var(--t-small);font-weight:500;color:var(--text)}.field-label .req{color:var(--text-faint);font-weight:400}.field-hint{font-size:var(--t-micro);color:var(--text-faint);line-height:1.5}.field-error{font-size:var(--t-micro);color:var(--text);font-weight:500}.field-error:before{content:"! ";font-family:var(--font-mono)}.input,.select,.textarea{width:100%;border:1px solid var(--line-strong);border-radius:var(--r-control);background:var(--sunk);padding:0 var(--s-3);height:38px;font-size:var(--t-body);transition:border-color .14s var(--ease)}.input:hover,.select:hover,.textarea:hover{border-color:var(--text-faint)}.input:focus,.select:focus,.textarea:focus{border-color:var(--text-soft);outline:none;box-shadow:inset 0 0 0 1px var(--text-soft)}.input:disabled,.select:disabled,.textarea:disabled{background:var(--sunk);border-color:var(--line);color:var(--text-faint)}.input[data-mono=true]{font-family:var(--font-mono)}.textarea{height:auto;min-height:120px;padding:var(--s-3);line-height:var(--lh-body);resize:vertical}.select{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding-right:var(--s-6);background-image:linear-gradient(45deg,transparent 50%,var(--text-soft) 50%),linear-gradient(135deg,var(--text-soft) 50%,transparent 50%);background-position:calc(100% - 18px) 17px,calc(100% - 13px) 17px;background-size:5px 5px,5px 5px;background-repeat:no-repeat}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:var(--s-5)}.form-grid-wide{grid-column:1 / -1}.upload-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:var(--s-5);margin-bottom:var(--s-6);padding-bottom:var(--s-6);border-bottom:1px solid var(--line)}.segment{display:inline-flex;padding:3px;border:1px solid var(--line-strong);border-radius:var(--r-control);background:var(--sunk);gap:2px}.segment button{border:0;background:transparent;border-radius:10px;height:30px;padding:0 var(--s-4);font-size:var(--t-body);cursor:pointer;color:var(--text);transition:background-color .14s var(--ease),color .14s var(--ease)}.segment button:hover{color:var(--text-strong)}.segment button[data-on=true]{background:var(--accent);color:var(--accent-text)}.drop{border:1px dashed var(--line-strong);border-radius:var(--r-card);padding:var(--s-5);text-align:center;cursor:pointer;background:var(--sunk);transition:border-color .14s var(--ease),background-color .14s var(--ease)}.drop:hover,.drop[data-over=true]{border-color:var(--text-soft);background:var(--surface-2)}.drop-title{font-size:var(--t-body);font-weight:500}.drop-note{margin-top:var(--s-1);font-size:var(--t-small);color:var(--text-faint)}.pill{display:inline-flex;align-items:center;gap:6px;height:22px;padding:0 10px;border-radius:var(--r-pill);border:1px solid var(--line-strong);font-size:var(--t-micro);color:var(--text-soft);white-space:nowrap}.pill-fill{background:var(--accent);border-color:var(--accent);color:var(--accent-text)}.pill-outline{border-color:var(--text);color:var(--text)}.pill-ghost{border-color:transparent;background:var(--surface-2)}.pill-dot{width:5px;height:5px;border-radius:var(--r-pill);background:currentColor}.pill[data-busy=true] .pill-dot{animation:pulse 1.4s var(--ease) infinite}.tag{display:inline-flex;align-items:center;height:20px;padding:0 8px;border-radius:var(--r-chip);background:var(--surface-2);font-size:var(--t-micro);color:var(--text-soft)}.rows{display:flex;flex-direction:column}.row{display:flex;align-items:center;gap:var(--s-4);padding:var(--s-3) var(--s-5);border-top:1px solid var(--line);min-height:52px}.rows>.row:first-child{border-top:0}.row-main{flex:1;min-width:0}.row-title{font-size:var(--t-body);font-weight:500;display:flex;align-items:center;gap:var(--s-2);flex-wrap:wrap}.row-sub{font-size:var(--t-small);color:var(--text-faint);margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.row-actions{display:flex;gap:var(--s-2);flex-shrink:0}.cards{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:var(--s-4)}@media (max-width: 1080px){.cards{grid-template-columns:repeat(4,minmax(0,1fr))}}@media (max-width: 880px){.cards{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (max-width: 660px){.cards{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width: 460px){.cards{grid-template-columns:1fr}}.card{position:relative;display:flex;flex-direction:column;gap:var(--s-4);padding:var(--s-4);border:1px solid var(--line);border-radius:var(--r-panel);background:var(--surface);text-align:left;cursor:pointer;min-height:178px;transition:border-color .16s var(--ease),transform .16s var(--ease)}.card:hover{border-color:var(--text-faint);transform:translateY(-2px)}.card-count{font-size:var(--t-hero);font-weight:500;line-height:1;letter-spacing:-.03em;font-variant-numeric:tabular-nums;color:var(--deco)}.card-count small{font-size:var(--t-small);font-weight:400;color:var(--text-faint);margin-left:6px;letter-spacing:0}.card-name{font-size:var(--t-lead);font-weight:600;line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.card-foot{margin-top:auto;display:flex;align-items:center;justify-content:space-between;gap:var(--s-3);flex-wrap:wrap}.card-foot .inline{flex-wrap:wrap}.card-new{display:flex;align-items:center;justify-content:center;border:1px dashed var(--line-strong);border-radius:var(--r-panel);min-height:178px;background:transparent;cursor:pointer;color:var(--text-soft);font-size:var(--t-body);flex-direction:column;gap:var(--s-2)}.card-new:hover{border-color:var(--text-faint);color:var(--text)}.card-new-mark{font-size:var(--t-display);line-height:1;font-weight:400}.card-delete{position:absolute;top:var(--s-3);right:var(--s-3);opacity:0;transition:opacity .14s var(--ease)}.card:hover .card-delete,.card:focus-within .card-delete{opacity:1}.steps-mini{display:flex;gap:4px}.steps-mini i{width:18px;height:3px;border-radius:var(--r-pill);background:var(--line)}.steps-mini i[data-on=true]{background:var(--text-soft)}.task-row{display:flex;align-items:center;gap:var(--s-4);width:100%;padding:var(--s-4) var(--s-5);border-top:1px solid var(--line);background:transparent;border-left:2px solid transparent;cursor:pointer;text-align:left;transition:background-color .14s var(--ease)}.rows>.task-row:first-child{border-top:0}.task-row:hover{background:var(--surface-2)}.task-row[data-active=true]{border-left-color:var(--text);background:var(--surface-2)}.task-row-wrap{display:flex;align-items:stretch;border-top:1px solid var(--line)}.task-row-wrap:first-child,.task-row-wrap .task-row{border-top:0}.task-pick{display:flex;align-items:center;padding:0 var(--s-2) 0 var(--s-4);cursor:pointer}.task-pick input{width:16px;height:16px;accent-color:var(--text);cursor:pointer}.task-name{font-size:var(--t-body);font-weight:500;display:flex;align-items:center;gap:var(--s-2);flex-wrap:wrap}.task-meta{font-size:var(--t-small);color:var(--text-faint);margin-top:1px}.task-progress{width:104px;flex:none}.task-progress-track{height:3px;border-radius:var(--r-pill);background:var(--line);overflow:hidden}.task-progress-track span{display:block;height:100%;background:var(--text-soft);transition:width .4s var(--ease)}.task-progress-label{margin-top:5px;font-size:var(--t-micro);color:var(--text-faint);font-family:var(--font-mono);text-align:right}.mask{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;background:var(--scrim);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);display:grid;place-items:center;padding:var(--s-5);animation:fade .18s var(--ease)}.mask-card{width:min(440px,100%);background:var(--surface);border:1px solid var(--line-strong);border-radius:var(--r-panel);padding:var(--s-6) var(--s-6) var(--s-5);color:var(--text);animation:rise .24s var(--ease)}.mask-stage{font-size:var(--t-micro);font-family:var(--font-mono);color:var(--text-faint);letter-spacing:.06em}.mask-title{margin-top:var(--s-2);font-size:var(--t-title);font-weight:600;line-height:1.35}.mask-message{margin-top:var(--s-2);font-size:var(--t-body);color:var(--text-soft);min-height:1.7em}.mask-bar{margin-top:var(--s-5);height:2px;border-radius:var(--r-pill);background:var(--line);overflow:hidden}.mask-bar span{display:block;height:100%;background:var(--accent);transition:width .4s var(--ease)}.mask-foot{margin-top:var(--s-6);display:grid;grid-template-columns:1fr 1fr;gap:var(--s-3)}.mask-elapsed{margin-top:var(--s-4);font-size:var(--t-micro);font-family:var(--font-mono);color:var(--text-faint);display:flex;justify-content:space-between}.player{background:var(--ink);border-radius:var(--r-panel);overflow:hidden}.player video{display:block;width:100%;max-height:62vh;background:#000}.player-bar{display:flex;align-items:center;justify-content:space-between;gap:var(--s-4);padding:var(--s-4) var(--s-5);color:var(--on-ink);border-top:1px solid var(--hairline)}.player-name{font-size:var(--t-body);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.player-meta{font-size:var(--t-micro);font-family:var(--font-mono);color:var(--on-ink-faint);margin-top:2px}.stack{display:flex;flex-direction:column;gap:var(--s-3)}.stack-4{gap:var(--s-4)}.stack-5{gap:var(--s-5)}.inline{display:flex;align-items:center;gap:var(--s-3);flex-wrap:wrap}.inline-between{display:flex;align-items:center;justify-content:space-between;gap:var(--s-4);flex-wrap:wrap}.grow{flex:1;min-width:0}.right{margin-left:auto}.divider{height:1px;background:var(--line);border:0;margin:var(--s-5) 0}.empty{padding:var(--s-8) var(--s-5);text-align:center}.empty-title{font-size:var(--t-lead);font-weight:600}.empty-note{margin-top:var(--s-2);font-size:var(--t-body);color:var(--text-soft);max-width:46ch;margin-left:auto;margin-right:auto}.empty-actions{margin-top:var(--s-5);display:flex;gap:var(--s-3);justify-content:center}.banner{display:flex;gap:var(--s-3);padding:var(--s-3) var(--s-4);border-radius:var(--r-card);border:1px solid var(--line-strong);background:var(--surface-2);font-size:var(--t-body)}.banner-note{border-color:var(--line)}.banner-body{min-width:0}.banner-title{font-weight:600}.banner-text{margin-top:2px;color:var(--text-soft);font-size:var(--t-small);line-height:1.6}.doc{font-size:var(--t-body);line-height:var(--lh-body);white-space:pre-wrap;word-break:break-word;max-height:380px;overflow:auto;padding:var(--s-4);background:var(--sunk);border:1px solid var(--line);border-radius:var(--r-card);font-family:var(--font-sans)}.doc-mono{font-family:var(--font-mono);font-size:var(--t-small)}.skeleton{background:linear-gradient(90deg,var(--surface-2) 25%,#ede5d9 37%,var(--surface-2) 63%);background-size:400% 100%;animation:shimmer 1.4s ease infinite;border-radius:var(--r-chip)}.on-ink .skeleton{background:linear-gradient(90deg,#f6f1eb14 25%,#f6f1eb33 37%,#f6f1eb14 63%);background-size:400% 100%}.sync-bar{position:fixed;top:var(--topbar-h);left:0;height:2px;background:var(--accent);z-index:70;transition:width .3s var(--ease),opacity .3s var(--ease)}.path{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--s-2);margin-bottom:var(--s-4);font-size:var(--t-small)}.path-item{display:inline-flex;align-items:baseline;gap:6px}.path-sep{color:var(--text-faint);margin-right:2px}.path-link{color:var(--text-faint);border-bottom:1px solid transparent;transition:color .14s var(--ease),border-color .14s var(--ease)}.path-link:hover{color:var(--text);border-bottom-color:var(--text)}.path-current{color:var(--text);font-weight:500}.path-future{color:var(--text-faint);opacity:.6}.path-note{font-family:var(--font-mono);font-size:var(--t-micro);color:var(--text-faint)}.foot-nav{display:flex;align-items:center;gap:var(--s-4);flex-wrap:wrap;padding:var(--s-5) 0 var(--s-2);border-top:1px solid var(--line);margin-top:var(--s-5)}.choose-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--s-4)}@media (max-width: 1080px){.choose-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (max-width: 820px){.choose-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width: 560px){.choose-grid{grid-template-columns:1fr}}.choose-card{display:flex;flex-direction:column;gap:var(--s-3);padding:var(--s-4);border:1px solid var(--line);border-radius:var(--r-panel);background:var(--surface);text-align:left;cursor:pointer;transition:border-color .16s var(--ease),transform .16s var(--ease),box-shadow .16s var(--ease)}.choose-card:hover:not(:disabled){border-color:var(--text-faint);transform:translateY(-2px);box-shadow:var(--lift-strong)}.choose-card:disabled{cursor:not-allowed;opacity:.5}.choose-head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--s-4)}.choose-mark{width:44px;height:44px;flex:none;border-radius:13px;background:var(--accent);color:var(--accent-text);display:grid;place-items:center;font-size:var(--t-title);font-weight:500}.choose-count{font-size:var(--t-display);font-weight:500;line-height:1;letter-spacing:-.02em;font-variant-numeric:tabular-nums;text-align:right;color:var(--deco)}.choose-count small{display:block;font-size:var(--t-micro);font-weight:400;color:var(--text-faint);letter-spacing:0;margin-top:4px}.choose-title{font-size:var(--t-title);font-weight:600}.choose-note{font-size:var(--t-body);color:var(--text-soft)}.choose-steps{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px;counter-reset:none}.choose-steps li{display:flex;align-items:baseline;gap:var(--s-3);font-size:var(--t-small);color:var(--text-soft)}.choose-steps li .t-code{color:var(--text-faint);width:20px;flex:none}.choose-detail{font-size:var(--t-small);color:var(--text-faint);line-height:1.6;padding-top:var(--s-3);border-top:1px solid var(--line);margin-top:auto}.choose-foot{display:flex;align-items:center;justify-content:space-between;gap:var(--s-3)}.choose-cta{font-size:var(--t-body);font-weight:500;border-bottom:1px solid var(--text);padding-bottom:1px}.two-col{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:var(--s-5);align-items:start}.two-col[data-ratio=narrow-left]{grid-template-columns:minmax(0,5fr) minmax(0,7fr)}.two-col[data-ratio=narrow-right]{grid-template-columns:minmax(0,7fr) minmax(0,5fr)}.field-pair{display:grid;grid-template-columns:1fr 1fr;gap:var(--s-4)}.token-row{display:flex;flex-wrap:wrap;gap:var(--s-2)}.upload-row{display:flex;flex-direction:column;gap:var(--s-2);padding-bottom:var(--s-4);border-bottom:1px solid var(--line)}.upload-row:last-of-type{border-bottom:0;padding-bottom:0}.upload-row-head{display:flex;align-items:center;justify-content:space-between;gap:var(--s-3);flex-wrap:wrap}.upload-tags{display:flex;flex-wrap:wrap;gap:var(--s-2);align-items:center}.upload-tags .pill{height:30px;padding:0 10px;gap:8px;max-width:240px}.upload-tag-code{font-family:var(--font-mono);font-size:var(--t-small);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.upload-tag-meta{font-size:var(--t-micro);color:var(--text-faint);flex:none}.upload-tag-more{height:30px;padding:0 10px;border-radius:var(--r-chip);border:1px dashed var(--line-strong);background:transparent;color:var(--text-soft);font-size:var(--t-small);cursor:pointer}.upload-tag-more:hover{border-color:var(--text-faint);color:var(--text)}.review-card{width:min(880px,100%);max-height:calc(100vh - 96px);display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--line-strong);border-radius:var(--r-panel);padding:var(--s-6);color:var(--text);animation:rise .24s var(--ease)}.review-head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--s-4);margin-bottom:var(--s-4)}.review-title{font-size:var(--t-title);font-weight:600}.review-sub{margin-top:var(--s-1);font-size:var(--t-small);color:var(--text-soft)}.review-timer{font-family:var(--font-mono);font-size:var(--t-small);color:var(--text-faint);flex:none}.review-text{flex:1;min-height:320px;max-height:56vh;line-height:var(--lh-body);font-size:var(--t-lead)}.review-foot{display:flex;align-items:center;justify-content:space-between;gap:var(--s-4);margin-top:var(--s-4);flex-wrap:wrap}.review-count{font-family:var(--font-mono);font-size:var(--t-small);color:var(--text-soft)}.review-delta{color:var(--text-faint)}.review-warn{color:var(--text);border-bottom:1px dashed var(--text-soft)}.switch-row{display:flex;align-items:flex-start;gap:var(--s-3);padding:var(--s-3) var(--s-4);border:1px solid var(--line);border-radius:var(--r-card);background:var(--sunk)}.switch{position:relative;width:40px;height:22px;flex:none;margin-top:1px;border-radius:var(--r-pill);border:1px solid var(--line-strong);background:var(--surface-2);cursor:pointer;transition:background-color .16s var(--ease),border-color .16s var(--ease)}.switch:disabled{cursor:not-allowed;opacity:.5}.switch[data-on=true]{background:var(--accent);border-color:var(--accent)}.switch-knob{position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:var(--r-pill);background:var(--text-faint);transition:transform .16s var(--ease),background-color .16s var(--ease)}.switch[data-on=true] .switch-knob{transform:translate(18px);background:var(--accent-text)}.switch-body{display:flex;flex-direction:column;gap:2px;min-width:0}.preview-zone{margin-top:var(--s-5)}.preview-empty{display:flex;align-items:center;justify-content:space-between;gap:var(--s-4);padding:var(--s-5);border:1px dashed var(--line-strong);border-radius:var(--r-panel);color:var(--text-soft);font-size:var(--t-body);flex-wrap:wrap}.version-bar{display:flex;align-items:center;gap:var(--s-2);flex-wrap:wrap;margin-bottom:var(--s-3)}.version-bar-label{font-size:var(--t-small);color:var(--text-faint);margin-right:2px}.version-chip{border:1px solid var(--line);border-radius:999px;background:var(--surface-2);color:var(--text-soft);padding:3px 10px;font-size:var(--t-small);font-family:var(--font-mono);cursor:pointer;transition:border-color .12s var(--ease),color .12s var(--ease)}.version-chip:hover{border-color:var(--line-strong);color:var(--text)}.version-chip[data-active=true]{border-color:var(--text);background:var(--surface);color:var(--text)}@media (max-width: 1100px){.two-col,.two-col[data-ratio=narrow-left],.two-col[data-ratio=narrow-right]{grid-template-columns:minmax(0,1fr)}}.dialog-card{width:min(480px,100%)}.dialog-card[data-tone=danger]{border-style:dashed;border-color:var(--line-strong)}.dialog-note{min-height:0;white-space:pre-line}.dialog-form{display:flex;flex-direction:column;gap:var(--s-4);margin-top:var(--s-5)}.dialog-field{display:flex;flex-direction:column;gap:6px}.dialog-input{width:100%}.dialog-error{margin-top:var(--s-3);padding:var(--s-2) var(--s-3);border:1px dashed var(--line-strong);border-radius:var(--r-chip);font-size:var(--t-small);color:var(--text);background:var(--sunk)}.dialog-foot{display:flex;align-items:center;justify-content:space-between;gap:var(--s-4);margin-top:var(--s-5)}.dialog-hint{font-size:var(--t-micro);color:var(--text-faint)}.field-req{margin-left:6px;padding:0 5px;border:1px solid var(--line-strong);border-radius:var(--r-chip);font-size:var(--t-micro);font-weight:400;color:var(--text-faint)}.progress-bar{display:flex;align-items:center;gap:var(--s-4);padding:var(--s-4) var(--s-5);border-radius:var(--r-card);border:1px solid var(--line-strong);background:var(--base);margin-bottom:var(--s-5)}.progress-bar[data-tone=running]{background:var(--ink);border-color:var(--hairline-strong);color:var(--on-ink)}.progress-dot{width:8px;height:8px;flex:none;border-radius:var(--r-pill);background:currentColor}.progress-dot[data-busy=true]{animation:pulse 1.4s var(--ease) infinite}.progress-body{flex:1;min-width:0}.progress-title{font-size:var(--t-body);font-weight:500;display:flex;align-items:baseline;gap:var(--s-3);flex-wrap:wrap}.progress-count{font-family:var(--font-mono);font-size:var(--t-micro);font-weight:400;opacity:.7}.progress-note{margin-top:2px;font-size:var(--t-small);opacity:.72;line-height:1.6}.progress-actions{display:flex;gap:var(--s-2);flex:none}.progress-bar[data-tone=running] .btn{background:transparent;border-color:var(--hairline-strong);color:var(--on-ink)}.progress-bar[data-tone=running] .btn:hover:not(:disabled){background:#f6f1eb1f}@media (max-width: 900px){.progress-bar{flex-direction:column;align-items:stretch}.progress-actions{justify-content:flex-end}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.28}}@keyframes shimmer{0%{background-position:100% 0}to{background-position:0 0}}@keyframes fade{0%{opacity:0}to{opacity:1}}@keyframes rise{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}@media (max-width: 900px){.topbar-inner{gap:var(--s-3);padding:0 var(--s-4)}.topbar-brand-text,.topbar-sub{display:none}.topbar-link{padding:0 var(--s-3)}.lamp-label{display:none}.lamp{padding:0 10px}.work-inner{padding:var(--s-5) var(--s-4) var(--s-6)}.rail-track,.rail-progress{grid-auto-flow:row;grid-auto-columns:auto}.rail-progress-seg{height:6px}.frame{min-height:0;flex-direction:row;align-items:center;flex-wrap:wrap;gap:var(--s-3)}.frame-top{gap:var(--s-3)}.frame-label{margin-top:0}.frame-note{display:none}.rail-foot{flex-wrap:wrap}.page-head{flex-direction:column;align-items:stretch}.mask-foot{grid-template-columns:1fr}.foot-nav{flex-direction:column;align-items:stretch}.foot-nav .grow{display:none}.choose-grid{grid-template-columns:1fr}.path{font-size:var(--t-micro)}}
