:root{--bone:#f7f5f5;--paper:#fff;--paper-2:#faf7f7;--hairline:#ece6e6;--hairline-2:#f3eeee;--hover:#fbf2f2;--tint:#fbe7e8;--tint-soft:#fdf3f3;--ink:#211c1c;--muted:#6e6565;--faint:#a79e9e;--accent:#c1272d;--accent-ink:#9c1e23;--on-accent:#fff;--seq-1:#7a1418;--seq-2:#a11f24;--seq-3:#c1272d;--seq-4:#d4595e;--seq-5:#e39a9d;--seq-6:#f1cdcf;--track:#f3eaea;--ok:#5b7f6b;--ok-bg:#e9f1ec;--ok-line:#cfe0d6;--warn:#b8791f;--warn-bg:#f7eedd;--warn-line:#ebd9b8;--zero:#6e6565;--zero-bg:#f0ecec;--crit-bg:#fbe7e8;--crit-line:#f2cdcf;--parchment:#fbefef;--parchment-line:#f0d9d9;--parchment-ink:#7a4a4c;--parchment-bold:#5a2e30;--shadow:0 10px 30px #211c1c12;--s1:6px;--s2:10px;--s3:16px;--s4:24px;--s5:36px;--s6:56px;--r-pill:999px;--r-card:12px;--r-input:10px;--r-chip:4px;--serif:Georgia, "Songti SC", "Noto Serif SC", serif;--sans:-apple-system, BlinkMacSystemFont, "PingFang SC", "Helvetica Neue", "Segoe UI", sans-serif;--sidebar-w:216px;--main-max:1180px;--main-pad:30px 40px 56px}*{box-sizing:border-box;margin:0;padding:0}html{-webkit-font-smoothing:antialiased}body{font-family:var(--sans);color:var(--ink);background:var(--bone);font-size:14px;line-height:1.6}a{color:inherit}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:3px}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}.app{--side-w:var(--sidebar-w);min-height:100vh;display:flex}.app--mini{--side-w:60px}.sidebar{width:var(--side-w);background:var(--paper);border-right:1px solid var(--hairline);flex-direction:column;flex-shrink:0;height:100vh;transition:width .18s;display:flex;position:sticky;top:0}.app[data-ready="0"] .sidebar{transition:none}.sidebar-head{border-bottom:1px solid var(--hairline);flex-shrink:0;align-items:center;gap:11px;padding:16px 14px 14px;display:flex;position:relative}.sidebar-logo{flex-shrink:0;display:flex}.sidebar-logo img{border-radius:7px;display:block}.sidebar-brand{min-width:0;overflow:hidden}.sidebar-toggle{color:var(--faint);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:6px;flex-shrink:0;margin-left:auto;padding:4px;line-height:0;transition:all .15s}.sidebar-toggle:hover{color:var(--accent);background:var(--tint-soft)}.app--mini .sidebar-brand,.app--mini .nav-section-label,.app--mini .nav-text{display:none}.app--mini .sidebar-head{justify-content:center;padding:16px 8px 14px}.app--mini .sidebar-toggle{z-index:3;background:var(--paper);border-color:var(--hairline);border-radius:50%;margin:0;position:absolute;top:18px;right:-13px}.app--mini .nav a{justify-content:center;margin:0 8px;padding:9px 0}.app--mini .nav-section{gap:2px;margin-bottom:14px}.app--mini .nav-section+.nav-section{border-top:1px solid var(--hairline-2);padding-top:12px}.app--mini .side-foot{flex-direction:column;gap:8px;padding:10px 6px}.app--mini .logout-btn{justify-content:center}.brand{font-family:var(--serif);letter-spacing:.3px;font-size:17px;line-height:1.15}.brand-sub{color:var(--faint);letter-spacing:1.5px;margin-top:2px;font-size:10px}.nav{flex:1;padding:10px 0;overflow:hidden auto}.nav-section{flex-direction:column;gap:1px;margin-bottom:10px;display:flex}.nav-section-label{color:var(--faint);letter-spacing:1.5px;text-transform:uppercase;padding:8px 20px 5px;font-size:10px;font-weight:600}.nav-section-label .en{color:#cbb8b8;margin-left:6px;font-weight:400}.nav a{color:var(--muted);border-radius:8px;align-items:center;gap:10px;margin:0 10px;padding:8px 12px;font-size:13px;font-weight:500;text-decoration:none;transition:all .15s;display:flex}.nav a .nav-icon{opacity:.75;flex-shrink:0}.nav a.on .nav-icon{opacity:1}.nav a:hover{color:var(--ink);background:var(--tint-soft)}.nav a.on{color:var(--accent);background:var(--tint);font-weight:600}.nav .dot-n{background:var(--accent);color:var(--on-accent);border-radius:var(--r-pill);place-items:center;min-width:17px;height:17px;margin-left:auto;padding:0 5px;font-size:10px;font-weight:600;display:grid}.side-foot{border-top:1px solid var(--hairline);color:var(--faint);flex-shrink:0;align-items:center;gap:9px;padding:9px 12px;font-size:11.5px;display:flex}.side-foot .ava{background:var(--tint-soft);width:26px;height:26px;color:var(--accent-ink);border:1px solid var(--tint);border-radius:50%;flex:0 0 26px;justify-content:center;align-items:center;font-size:12px;font-weight:600;display:flex}.side-foot .who-line{flex:auto;min-width:0;line-height:1.35}.side-foot .who-line b{color:var(--ink);text-overflow:ellipsis;white-space:nowrap;font-size:12.5px;font-weight:600;display:block;overflow:hidden}.side-foot .who-line .r{color:var(--faint);text-overflow:ellipsis;white-space:nowrap;font-size:10.5px;display:block;overflow:hidden}.side-foot .logout-btn{border-radius:var(--r-input);width:26px;height:26px;color:var(--faint);cursor:pointer;background:0 0;border:1px solid #0000;flex:none;justify-content:center;align-items:center;margin:0;padding:0;display:flex}.side-foot .logout-btn:hover{color:var(--accent);background:var(--tint-soft);border-color:var(--tint);text-decoration:none}.main{min-width:0;padding:var(--main-pad);flex:1}.main>*{max-width:var(--main-max)}.app--mini .main>*{max-width:calc(var(--main-max) + var(--sidebar-w) - 60px)}.page-head{justify-content:space-between;align-items:flex-end;gap:var(--s4);margin-bottom:var(--s4);flex-wrap:wrap;display:flex}.page-head .crumb{color:var(--faint);margin-bottom:var(--s2);font-size:12px}.page-head h1{font-family:var(--serif);letter-spacing:.2px;font-size:22px;font-weight:600}.page-head .sub{color:var(--muted);margin-top:var(--s1);font-size:11.5px}.page-head .filters{align-items:center;gap:var(--s2);flex-wrap:wrap;display:flex}.pill{background:var(--paper);border:1px solid var(--hairline);border-radius:var(--r-pill);color:var(--ink);cursor:pointer;white-space:nowrap;align-items:center;gap:6px;padding:5px 14px;font-family:inherit;font-size:12.5px;text-decoration:none;transition:border-color .18s;display:inline-flex}.pill:hover{border-color:var(--accent)}.pill.on{background:var(--tint);border-color:var(--accent);color:var(--accent);font-weight:600}.pill .caret{color:var(--faint);font-size:10px}.pillbar{gap:var(--s2);flex-wrap:wrap;display:flex}.filter-rows{gap:var(--s2);flex-direction:column;display:flex}.filter-row{align-items:center;gap:var(--s2);flex-wrap:wrap;display:flex}.filter-key{letter-spacing:1.5px;color:var(--faint);flex-shrink:0;min-width:30px;font-size:10.5px}.pill:disabled{opacity:.4;cursor:not-allowed;border-color:var(--hairline)}.pill:disabled:hover{border-color:var(--hairline)}.btn{border-radius:var(--r-pill);cursor:pointer;color:var(--muted);background:0 0;border:1px solid #0000;justify-content:center;align-items:center;gap:6px;padding:9px 20px;font-family:inherit;font-size:12.5px;text-decoration:none;transition:all .18s;display:inline-flex}.btn.primary{background:var(--accent);color:var(--on-accent)}.btn.primary:hover{background:var(--accent-ink)}.btn.ghost{color:var(--accent);border-color:var(--accent)}.btn.ghost:hover{background:var(--accent);color:var(--on-accent)}.btn.quiet:hover{background:var(--tint-soft);color:var(--ink)}.btn.sm{padding:5px 13px;font-size:11.5px}.btn.danger{color:var(--zero);border-color:var(--hairline)}.btn.danger:hover{background:var(--crit-bg);border-color:var(--crit-line);color:var(--accent)}.btn:disabled{opacity:.45;cursor:not-allowed}.panel{background:var(--paper);border:1px solid var(--hairline);border-radius:var(--r-card);padding:18px 20px}.panel-head{justify-content:space-between;align-items:center;gap:var(--s3);margin-bottom:var(--s3);flex-wrap:wrap;display:flex}.panel-foot,.foot{margin-top:var(--s3);border-top:1px solid var(--hairline-2);color:var(--faint);flex-wrap:wrap;gap:16px;padding-top:11px;font-size:11px;display:flex}.section-title,.title{font-family:var(--serif);letter-spacing:.3px;font-size:16px;font-weight:600}.section-title .en,.title .en{font-family:var(--sans);letter-spacing:2px;color:var(--faint);margin-left:10px;font-size:10.5px;font-weight:400}.statline{border-top:1px solid var(--hairline);border-bottom:1px solid var(--hairline);flex-wrap:wrap;display:flex}.stat{flex:140px;padding:16px 4px 18px}.stat+.stat{border-left:1px solid var(--hairline);padding-left:26px}.stat .k{color:var(--faint);letter-spacing:.5px;font-size:11.5px}.stat .v{font-variant-numeric:tabular-nums;margin-top:6px;font-size:26px;font-weight:600}.stat .v .unit{color:var(--muted);font-size:13px;font-weight:500}.stat .n{color:var(--muted);margin-top:4px;font-size:11px}.stat .n.ok{color:var(--ok)}.stat .n.warn{color:var(--warn)}.stat .n.crit{color:var(--accent)}.stat .prog{border-radius:var(--r-pill);background:var(--track);max-width:190px;height:6px;margin-top:9px;overflow:hidden}.stat .prog i{border-radius:var(--r-pill);background:var(--accent);height:100%;display:block}.bars{flex-direction:column;gap:14px;display:flex}.bars .row{grid-template-columns:92px 1fr 118px;align-items:center;gap:14px;display:grid}.bars .name{font-size:13px}.bars .name .sub{color:var(--faint);font-variant-numeric:tabular-nums;margin-top:2px;font-size:10.5px;display:block}.bars .track{border-radius:var(--r-chip);background:var(--track);height:20px;position:relative;overflow:hidden}.bars .fill{border-radius:0 var(--r-chip) var(--r-chip) 0;position:absolute;top:0;bottom:0;left:0}.bars .fill.paid{background:var(--seq-3);z-index:2}.bars .fill.due{background:var(--seq-6);z-index:1;box-shadow:-2px 0 0 var(--paper)}.bars .val{text-align:right;font-variant-numeric:tabular-nums;font-size:13.5px;font-weight:600}.bars .pct{color:var(--faint);font-size:10.5px;font-weight:400;display:block}.legend{color:var(--muted);flex-wrap:wrap;align-items:center;gap:20px;margin-top:12px;font-size:12px;display:flex}.legend .d,.legend .dot{vertical-align:-1px;border-radius:2px;width:9px;height:9px;margin-right:6px;display:inline-block}.legend b{font-variant-numeric:tabular-nums;color:var(--ink)}.dtable{border-collapse:collapse;width:100%}.dtable thead th{color:var(--faint);text-align:left;letter-spacing:1px;border-bottom:1px solid var(--hairline);white-space:nowrap;padding:0 10px 10px 0;font-size:11px;font-weight:500}.dtable tbody td{border-bottom:1px solid var(--hairline-2);vertical-align:middle;padding:10px 10px 10px 0;font-size:13px}.dtable tbody tr{transition:background .15s}.dtable tbody tr:hover{background:var(--hover)}.dtable tbody tr.row-ok{background:color-mix(in srgb, var(--ok-bg) 55%, var(--paper))}.dtable tbody tr.row-ok:hover{background:var(--ok-bg)}.dtable tbody tr.row-ok td:first-child{box-shadow:inset 3px 0 0 var(--ok-line)}.dtable tbody tr.row-off{opacity:.62}.dtable .num,.dtable th.num{text-align:right;font-variant-numeric:tabular-nums}.dtable .id,.dtable th.id{text-align:left;font-variant-numeric:tabular-nums;white-space:nowrap}.dtable .sub{color:var(--faint);margin-top:2px;font-size:10.5px;display:block}.dtable .sub.ellip{text-overflow:ellipsis;white-space:nowrap;max-width:22ch;overflow:hidden}.dtable .na{color:var(--faint)}.diffs{flex-direction:column;gap:2px;display:flex}.diffs .d{color:var(--muted);font-size:11px}.diffs .d s{color:var(--faint)}.diffs .d b{color:var(--ink);font-weight:600}.dtable .note-warn{color:var(--warn);white-space:nowrap;margin-left:6px;font-size:10.5px;font-weight:500}.dtable .note-ok{color:var(--ok);white-space:nowrap;margin-left:6px;font-size:10.5px;font-weight:500}.dtable tbody tr.total td{border-top:1px solid var(--hairline);border-bottom:none;padding-top:14px;font-weight:600}.dtable .act{white-space:nowrap;flex-wrap:nowrap;justify-content:flex-end;gap:4px;display:flex}.dtable .act .btn{white-space:nowrap}.dtable .act form{display:contents}.dtable .nowrap{white-space:nowrap}.dtable .memo{-webkit-line-clamp:2;-webkit-box-orient:vertical;max-width:46ch;line-height:1.65;display:-webkit-box;overflow:hidden}.dtable .link{color:var(--accent);text-decoration:none}.dtable .link:hover{text-decoration:underline}.minibar{border-radius:var(--r-pill);background:var(--track);vertical-align:middle;width:74px;height:5px;display:inline-block;overflow:hidden}.minibar i{background:var(--seq-3);border-radius:var(--r-pill);height:100%;display:block}.tag{border-radius:var(--r-pill);white-space:nowrap;padding:2.5px 10px;font-size:10.5px;display:inline-block}.tag.ok{background:var(--ok-bg);color:var(--ok)}.tag.warn{background:var(--warn-bg);color:var(--warn)}.tag.zero{background:var(--zero-bg);color:var(--zero)}.tag.crit{background:var(--crit-bg);color:var(--accent);font-weight:600}.chip{border-radius:var(--r-chip);color:#fff;white-space:nowrap;letter-spacing:.5px;padding:2px 7px;font-size:10px}.chip.s1{background:var(--seq-1)}.chip.s2{background:var(--seq-2)}.chip.s3{background:var(--seq-3)}.chip.s4{background:var(--seq-4)}.chip.s5{background:var(--seq-5);color:#5a2e30}.chip.s6{background:var(--seq-6);color:#5a2e30}.who{color:var(--muted);background:var(--paper-2);border:1px solid var(--hairline);border-radius:var(--r-pill);white-space:nowrap;padding:1.5px 8px;font-size:11px}.note{background:var(--parchment);border:1px solid var(--parchment-line);border-radius:var(--r-card);flex-wrap:wrap;align-items:baseline;gap:16px;padding:16px 22px;display:flex}.note .mark{font-family:var(--serif);color:var(--warn);font-size:20px;line-height:1}.note p{color:var(--parchment-ink);flex:320px;font-size:13px;line-height:1.9}.note b{color:var(--parchment-bold);font-variant-numeric:tabular-nums}.note .act{color:var(--accent);border:1px solid var(--accent);border-radius:var(--r-pill);cursor:pointer;background:0 0;flex-shrink:0;align-self:center;margin-left:auto;padding:7px 18px;font-family:inherit;font-size:12.5px;transition:all .18s}.note .act:hover{background:var(--accent);color:var(--on-accent)}.alert{border-radius:var(--r-input);padding:9px 12px;font-size:11.5px;line-height:1.75}.alert.warn{background:var(--warn-bg);border:1px solid var(--warn-line);color:var(--warn)}.alert.crit{background:var(--crit-bg);border:1px solid var(--crit-line);color:var(--accent)}.alert.zero{background:var(--paper-2);border:1px solid var(--hairline);color:var(--muted)}.scroll-y{overscroll-behavior:contain;overflow-y:auto}.scroll-y.h-tree{max-height:460px}.scroll-y.h-list{max-height:360px}.scroll-y::-webkit-scrollbar{width:8px}.scroll-y::-webkit-scrollbar-thumb{background:var(--hairline);border-radius:var(--r-pill)}.scroll-y::-webkit-scrollbar-thumb:hover{background:var(--faint)}.scroll-y::-webkit-scrollbar-track{background:0 0}.scroll-y{scrollbar-width:thin;scrollbar-color:var(--hairline) transparent}.scroll-y .tree .grp-h{z-index:2;background:var(--paper);position:sticky;top:0}.tree{font-size:13px}.tree .grp{border-bottom:1px solid var(--hairline-2);padding:9px 0}.tree .grp:last-child{border-bottom:none}.tree .grp-h{cursor:pointer;align-items:center;gap:9px;padding:4px 0;display:flex}.tree .grp-h .tw{color:var(--faint);width:10px;font-size:10px}.tree .grp-h .gn{font-weight:600}.tree .grp-h .gc{color:var(--faint);letter-spacing:1px;font-size:10.5px}.tree .grp-h .gp{color:var(--muted);font-variant-numeric:tabular-nums;margin-left:auto;font-size:11px}.tree .items{flex-direction:column;gap:1px;margin-top:7px;display:flex}.tree .item{border-radius:6px;grid-template-columns:68px 1fr auto auto;align-items:center;gap:10px;padding:6px 8px 6px 20px;display:grid}.tree .item>.chip{text-overflow:ellipsis;white-space:nowrap;text-align:center;max-width:100%;overflow:hidden}.tree .item:hover{background:var(--hover)}.tree .item .tn{font-size:12.5px}.tree .item .tn .own{color:var(--faint);margin-left:7px;font-size:10.5px}.tree .item .td{color:var(--muted);font-variant-numeric:tabular-nums;text-align:right;min-width:52px;font-size:11px}.topics .t{border-bottom:1px solid var(--hairline-2);color:inherit;grid-template-columns:3px 1fr auto auto auto 14px;align-items:center;gap:12px;padding:9px 10px 9px 0;text-decoration:none;display:grid}.topics .t:last-child{border-bottom:none}.topics .t:hover{background:var(--hover)}.topics .t.agenda{grid-template-columns:3px 22px 1fr auto auto auto 14px}.topics .t.agenda .seq{color:var(--faint);font-variant-numeric:tabular-nums;letter-spacing:.5px;font-size:10.5px}.topics .t.agenda .who{color:var(--muted);white-space:nowrap;font-size:11.5px}.topics .t.off{opacity:.55}.topics .t.off .tt{text-decoration:line-through;-webkit-text-decoration-color:var(--hairline);text-decoration-color:var(--hairline)}.topics .t:hover .tt{color:var(--accent)}.topics .t .go{color:#0000;font-size:12px;transition:color .15s}.topics .t:hover .go{color:var(--accent)}.topics .t:focus-visible{outline:2px solid var(--accent);outline-offset:-2px;border-radius:6px}.topics .t .rail{background:var(--hairline);border-radius:2px;width:3px;height:22px}.topics .t.u1 .rail{background:var(--accent)}.topics .t.u2 .rail{background:var(--warn)}.topics .t .tt{font-size:13px}.topics .t .tt .code{color:var(--faint);letter-spacing:.5px;font-variant-numeric:tabular-nums;margin-right:7px;font-size:10.5px}.topics .t .due{color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:11.5px}.topics .t .due.over{color:var(--accent);font-weight:600}.donut-c{text-anchor:middle;font-family:var(--sans)}.donut-c .big{fill:var(--ink);font-size:20px;font-weight:700}.donut-c .small{fill:var(--faint);font-size:11px}.donut-c .cap{fill:var(--faint);letter-spacing:1px;font-size:9.5px}.keyrow{border-bottom:1px solid var(--hairline-2);grid-template-columns:9px 1fr auto 48px;align-items:center;gap:9px;padding:5px 0;font-size:12px;display:grid}.keyrow:last-child{border-bottom:none}.keyrow.h{border-bottom:1px solid var(--hairline);color:var(--faint);letter-spacing:1px;font-size:10.5px}.keyrow .sw{border-radius:2px;width:9px;height:9px}.keyrow .kn{color:var(--muted)}.keyrow .kv{font-variant-numeric:tabular-nums;font-weight:500}.keyrow .kp{font-variant-numeric:tabular-nums;color:var(--faint);text-align:right}.gantt-axis{grid-template-columns:var(--gantt-ln,76px) 1fr;color:var(--faint);letter-spacing:.5px;font-size:10.5px;display:grid}.gantt-axis .ticks{border-bottom:1px solid var(--hairline);padding-bottom:6px;display:flex}.gantt-axis .ticks span{flex:1;position:relative}.gantt-axis .ticks span:after{content:"";background:var(--hairline);width:1px;height:5px;position:absolute;bottom:-6px;left:0}.gantt-row{grid-template-columns:var(--gantt-ln,76px) 1fr;align-items:center;height:34px;display:grid}.gantt-row .ln{color:var(--muted);font-size:12px}.gantt-row .ln b{color:var(--ink);font-weight:500}.lane{border-bottom:1px solid var(--hairline-2);height:100%;position:relative}.lane .g{background:var(--hairline-2);width:1px;position:absolute;top:0;bottom:0}.lane .today{background:var(--accent);z-index:3;width:1px;position:absolute;top:0;bottom:0}.lane .bar{border-radius:var(--r-chip);background:var(--track);z-index:2;height:16px;position:absolute;top:50%;overflow:hidden;transform:translateY(-50%)}.lane .bar i{border-radius:var(--r-chip);height:100%;display:block}.lane .bar.done i{background:var(--ok)}.lane .bar.run i{background:var(--seq-3)}.lane .bar.wait i{background:var(--seq-6)}.lane .lbl{color:#fff;font-variant-numeric:tabular-nums;font-size:10px;line-height:16px;position:absolute;top:0;right:6px}.lane .lbl.out{color:var(--faint);left:calc(100% + 6px);right:auto}.milestone{background:var(--paper);border:2px solid var(--seq-2);z-index:4;width:9px;height:9px;position:absolute;top:50%;transform:translate(-50%,-50%)rotate(45deg)}.today-flag{color:var(--accent);background:var(--paper);white-space:nowrap;padding:0 4px;font-size:10px;position:absolute;transform:translate(-50%)}.gantt{--gantt-ln:76px;transition:none}.gantt.open{--gantt-ln:168px}.gantt-row .ln-toggle{width:100%;font:inherit;color:var(--muted);text-align:left;cursor:pointer;border-radius:var(--r-chip);background:0 0;border:0;align-items:center;gap:4px;padding:0 4px 0 0;font-size:12px;display:flex}.gantt-row .ln-toggle:hover{color:var(--ink)}.gantt-row .ln-toggle:hover .caret{border-left-color:var(--accent)}.gantt-row .ln-toggle .n{color:var(--faint);font-variant-numeric:tabular-nums;margin-left:auto;font-size:10px}.gantt-row .caret{border-left:5px solid var(--faint);transform-origin:25%;border-top:3.5px solid #0000;border-bottom:3.5px solid #0000;flex-shrink:0;width:0;height:0;transition:transform .16s}.gantt-row .ln-toggle.on .caret{border-left-color:var(--accent);transform:rotate(90deg)}.gantt-row.sub{height:28px}.gantt-row.sub .ln{padding-left:13px}.gantt-row.sub .sub-label{color:var(--faint);text-overflow:ellipsis;white-space:nowrap;font-size:11px;display:block;overflow:hidden}.lane .bar.node{height:10px}.lane .bar.node.late i{background:var(--accent)}.lane .bar.node.wait i{background:var(--seq-6)}.milestone.node{width:8px;height:8px}.milestone.node.done{border-color:var(--ok)}.milestone.node.overdue{border-color:var(--accent)}.node-chip{border-radius:var(--r-pill);white-space:nowrap;background:var(--zero-bg);color:var(--zero);padding:1px 7px;font-size:10px;position:absolute;top:50%;left:0;transform:translateY(-50%)}.node-chip.done{background:var(--ok-bg);color:var(--ok)}.field{margin-bottom:var(--s3);flex-direction:column;gap:6px;display:flex}.field>label{color:var(--muted);letter-spacing:.5px;font-size:12px}.field .req{color:var(--accent)}.field input[type=text],.field input[type=password],.field input[type=number],.field input[type=date],.field select,.field textarea{width:100%;color:var(--ink);background:var(--paper);border:1px solid var(--hairline);border-radius:var(--r-input);outline:none;padding:10px 13px;font-family:inherit;font-size:14px;transition:border-color .18s}.field textarea{resize:vertical;min-height:76px;font-size:13px;line-height:1.7}.field select{appearance:none;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%23A79E9E' stroke-width='1.5'/%3E%3C/svg%3E");background-position:right 12px center;background-repeat:no-repeat;padding-right:30px}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--accent)}.field .hint{color:var(--faint);font-size:11px}.field.check{flex-direction:row;align-items:center;margin-bottom:0}.field.check>label{cursor:pointer;color:var(--ink);align-items:center;gap:8px;font-size:13px;display:inline-flex}.field input[type=checkbox],.field input[type=radio]{width:16px;height:16px;accent-color:var(--accent);cursor:pointer}.grid-f,.form-grid{gap:var(--s3);grid-template-columns:1fr 1fr;display:grid}.form-stack{flex-direction:column;display:flex}.switch-row{justify-content:space-between;align-items:center;gap:var(--s3);background:var(--paper);border:1px solid var(--hairline);border-radius:var(--r-input);margin-bottom:var(--s3);padding:12px 14px;display:flex}.switch-row .t{font-size:13px}.switch-row .d{color:var(--faint);max-width:320px;margin-top:2px;font-size:11px}.stage{position:relative}.scrim{z-index:40;background:#211c1c52;position:fixed;inset:0}.drawer{background:var(--paper);border:1px solid var(--hairline);border-radius:var(--r-card);box-shadow:var(--shadow);flex-direction:column;padding:20px 22px;display:flex}.drawer.over{z-index:41;border-width:0 0 0 1px;border-radius:0;width:min(620px,96vw);position:fixed;top:0;bottom:0;right:0;overflow-y:auto;box-shadow:-14px 0 44px -18px #211c1c47}.modal{z-index:41;width:min(460px,92vw);max-height:88vh;position:fixed;top:50%;left:50%;overflow-y:auto;transform:translate(-50%,-50%)}.modal.notice{z-index:60;width:min(430px,92vw)}.modal.notice~.scrim{z-index:59}.scrim:has(+.modal.notice){z-index:59}.drawer-h{margin-bottom:var(--s3);border-bottom:1px solid var(--hairline);justify-content:space-between;align-items:baseline;gap:10px;padding-bottom:12px;display:flex}.drawer-h .t{font-family:var(--serif);font-size:16px;font-weight:600}.drawer-h .c{color:var(--faint);letter-spacing:1px;margin-top:4px;font-size:11px}.drawer-f{gap:var(--s2);margin-top:var(--s3);border-top:1px solid var(--hairline);justify-content:flex-end;align-items:center;padding-top:14px;display:flex}.drawer.over .drawer-h,.modal .drawer-h{background:var(--paper);z-index:2;margin:-20px -22px var(--s3);padding:20px 22px 12px;position:sticky;top:-20px}.drawer.over .drawer-f,.modal .drawer-f{background:var(--paper);z-index:2;margin:auto -22px -20px;padding:14px 22px 20px;position:sticky;bottom:-20px}.upload{border:1.5px dashed var(--parchment-line);border-radius:var(--r-card);background:var(--paper-2);text-align:center;cursor:pointer;padding:26px;transition:all .18s}.upload:hover{border-color:var(--accent);background:var(--tint-soft)}.upload .ic{font-family:var(--serif);color:var(--accent);font-size:24px}.upload .t{margin-top:8px;font-size:13px}.upload .d{color:var(--faint);margin-top:4px;font-size:11px}.filerow{background:var(--paper);border:1px solid var(--hairline);border-radius:var(--r-input);grid-template-columns:1fr auto;align-items:center;gap:4px 12px;padding:11px 14px;font-size:12.5px;display:grid}.filerow>.name{word-break:break-all;font-weight:500}.filerow .meta{color:var(--faint);font-variant-numeric:tabular-nums;grid-column:1;font-size:11px}.filerow>:last-child{flex-wrap:nowrap;grid-area:1/2/span 2;gap:6px;display:flex}.diffbar{gap:var(--s3);grid-template-columns:repeat(auto-fit,minmax(120px,1fr));display:grid}.diffcard{background:var(--paper);border:1px solid var(--hairline);border-radius:var(--r-card);padding:13px 15px}.diffcard .n{color:var(--faint);font-size:11.5px}.diffcard .v{font-variant-numeric:tabular-nums;margin-top:4px;font-size:22px;font-weight:700}.diffcard.add .v{color:var(--ok)}.diffcard.upd .v{color:var(--warn)}.diffcard.err .v{color:var(--accent)}.gate{background:var(--bone);min-height:100vh;padding:var(--s4);justify-content:center;align-items:center;display:flex}.gate__card{background:var(--paper);border:1px solid var(--hairline);border-radius:var(--r-card);width:100%;max-width:460px;box-shadow:var(--shadow);padding:34px 34px 28px}.gate__brand{align-items:center;gap:10px;margin-bottom:26px;display:flex}.gate__brand img{border-radius:7px;display:block}.gate__brandname{font-family:var(--serif);letter-spacing:.3px;font-size:15px}.gate__brandsub{color:var(--faint);letter-spacing:2px;margin-top:1px;font-size:9.5px}.gate__title{font-family:var(--serif);letter-spacing:.2px;font-size:24px;font-weight:600}.gate__desc{color:var(--muted);margin:var(--s2) 0 var(--s4);font-size:12.5px;line-height:1.75}.gate__desc b{color:var(--accent);font-weight:600}.gate__alert{margin-bottom:var(--s3)}.gate__foot{gap:var(--s2);margin-top:var(--s4);border-top:1px solid var(--hairline);justify-content:space-between;align-items:center;padding-top:16px;display:flex}.gate__who{margin-top:var(--s3);color:var(--faint);text-align:center;font-size:11px}.login{background:var(--paper);min-height:100vh;color:var(--ink);display:flex}.login__brand{background:radial-gradient(120% 120% at 0 0,#5a1417 0%,#3a0d10 45%,#240809 100%);flex:1.05;position:relative;overflow:hidden}.login__grid{background-image:linear-gradient(#ffffff0d 1px,#0000 1px),linear-gradient(90deg,#ffffff0d 1px,#0000 1px);background-size:46px 46px;position:absolute;inset:0;-webkit-mask-image:radial-gradient(120% 100% at 0 0,#000 50%,#0000 100%);mask-image:radial-gradient(120% 100% at 0 0,#000 50%,#0000 100%)}.login__brand-inner{flex-direction:column;justify-content:space-between;gap:40px;height:100%;padding:56px 64px;display:flex;position:relative}.login__logo{align-items:center;gap:14px;display:flex}.login__logo img{border-radius:8px;display:block}.login__logo-en{color:#f6e9ea;letter-spacing:3px;font-size:15px;font-weight:700}.login__logo-sub{color:#c79a9d;letter-spacing:2.5px;margin-top:3px;font-size:10.5px}.login__hero{max-width:640px}.login__eyebrow{color:#d99a9d;letter-spacing:4px;margin-bottom:22px;font-size:13px}.login__title{color:#fbf4f4;letter-spacing:.5px;font-size:36px;font-weight:800;line-height:1.4;font-family:var(--serif);text-wrap:balance;margin:0}.login__accent{color:#ff6b6f}.login__desc{color:#d3b9bb;max-width:540px;margin-top:24px;font-size:14.5px;line-height:1.95}.login__meta{flex-wrap:wrap;gap:56px;display:flex}.login__meta-k{color:#b08488;letter-spacing:1px;margin-bottom:8px;font-size:12px}.login__meta-v{color:#ecd7d9;font-size:14px;font-weight:500}.login__panel{background:var(--paper-2);flex-direction:column;flex:.95;justify-content:center;align-items:center;min-width:440px;padding:40px;display:flex;position:relative}.login__card{background:var(--paper);border:1px solid var(--hairline);border-radius:18px;width:420px;max-width:100%;padding:44px 44px 36px;box-shadow:0 24px 60px -28px #50101438}.login__tag{color:#9a8a8a;letter-spacing:2px;align-items:center;gap:8px;font-size:12px;font-weight:600;display:inline-flex}.login__dot{background:var(--accent);border-radius:50%;width:8px;height:8px;box-shadow:0 0 0 4px #c1272d24}.login__brandname{color:var(--ink);font-size:26px;font-weight:800;font-family:var(--serif);align-items:center;gap:10px;margin-top:20px;display:flex}.login__product{color:#4a4242;margin-top:10px;font-size:16px;font-weight:600}.login__hint{color:var(--faint);margin-top:8px;margin-bottom:26px;font-size:13px;line-height:1.8}.login__form .field{margin-bottom:var(--s3)}.login__form .field>label{color:#4a4242;font-size:12.5px;font-weight:600}.login__form .field input{border-color:#e0d8d8;padding:11px 13px}.login__form .field input:focus{border-color:var(--accent);box-shadow:0 0 0 3px #c1272d1f}.login__submit{letter-spacing:4px;background:var(--accent);width:100%;height:48px;color:var(--on-accent);cursor:pointer;border:none;border-radius:10px;font-family:inherit;font-size:16px;font-weight:700;transition:background .18s;box-shadow:0 10px 22px -10px #c1272d99}.login__submit:hover:not(:disabled){background:var(--accent-ink)}.login__submit:disabled{opacity:.6;cursor:not-allowed}.login__divider{background:var(--hairline);height:1px;margin:22px 0 16px}.login__foot{text-align:center;color:var(--faint);font-size:12px;line-height:1.8}.login__mock{text-align:center;color:var(--warn);background:#b8791f1a;border-radius:8px;margin-top:10px;padding:8px 12px;font-size:11px;line-height:1.7}.login__copyright{letter-spacing:2px;color:#b7abac;font-size:11px;position:absolute;bottom:26px}@media (max-width:920px){.login__brand{display:none}.login__panel{flex:1;min-width:0;padding:24px}.login__card{padding:32px 26px}}.stack-2>*+*{margin-top:var(--s2)}.stack-3>*+*{margin-top:var(--s3)}.stack-4>*+*{margin-top:var(--s4)}.grid-2{gap:var(--s3);grid-template-columns:1fr 1fr;display:grid}.grid-58{gap:var(--s3);grid-template-columns:5fr 7fr;display:grid}.grid-73{gap:var(--s3);grid-template-columns:7fr 5fr;display:grid}.grid-3c{gap:var(--s3);grid-template-columns:260px 1fr 320px;display:grid}.grid-side{gap:var(--s3);grid-template-columns:340px 1fr;align-items:stretch;display:grid}.grid-side>.col{gap:var(--s3);flex-direction:column;display:flex}.grid-side>.col-fill{min-height:420px;position:relative}.grid-side>.col-fill>.panel{flex-direction:column;display:flex;position:absolute;inset:0;overflow:hidden}.scroll-y.h-fill{flex:auto;min-height:0}.row-flex{gap:var(--s3);align-items:flex-start;display:flex}.scroll-x{overflow-x:auto}.tiny{color:var(--faint);font-size:11px;line-height:1.85}.mono-n{font-variant-numeric:tabular-nums}.empty{text-align:center;color:var(--faint);padding:34px 0;font-size:12.5px}code{background:var(--paper-2);border:1px solid var(--hairline);border-radius:3px;padding:1px 5px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11.5px}.rise{animation:.7s cubic-bezier(.2,.7,.2,1) both rise}@keyframes rise{0%{opacity:0;transform:translateY(12px)}}@media (max-width:1180px){.grid-3c,.grid-2,.grid-58,.grid-73,.grid-side{grid-template-columns:1fr}.grid-side>.col-fill{min-height:0;position:static}.grid-side>.col-fill>.panel{position:static;inset:auto}.scroll-y.h-fill{max-height:460px}.row-flex{flex-direction:column}}
