:root{--c-ink-navy:#1f3a5f;--c-ink-deep:#152238;--c-midnight:#0e1828;--c-gold:#c9a36a;--c-gold-press:#b08c52;--c-gold-hover:#d4b27e;--c-gold-text:#8a6a36;--c-gold-tint:#f3eadb;--c-paper:#f6f3ee;--c-paper-deep:#ede8df;--c-card:#fff;--c-ink:#1a1a1a;--c-ink-2:#3d4350;--c-muted:#5f6672;--c-placeholder:#8a919c;--c-link:#3b6fa0;--c-on-dark:#fff;--c-on-dark-2:#a6b0bf;--c-on-dark-3:#6e7a8c;--c-border:#e3ded5;--c-border-strong:#cfc8bc;--c-divider:#eeeae3;--c-hover:#f8f6f2;--c-hover-dark:#ffffff0f;--c-active-dark:#c9a36a1f;--c-disabled-bg:#f1eee9;--c-disabled-fg:#9aa0a8;--c-readonly-bg:#faf8f5;--c-focus-ring:#1f3a5f47;--c-focus-ring-gold:#c9a36a73;--c-autofill-bg:#fff;--c-success:#2f9b6a;--c-success-text:#237a53;--c-success-bg:#e8f4ee;--c-warning:#b54708;--c-warning-bg:#fdf1e7;--c-danger:#b42318;--c-danger-bg:#fdecea;--c-danger-press:#912018;--c-info-bg:#eaf0f6;--font-sans:-apple-system,BlinkMacSystemFont,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","Noto Sans CJK SC","Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;--font-sans-en:"Inter","Segoe UI",-apple-system,BlinkMacSystemFont,"Helvetica Neue",Arial,"PingFang SC",sans-serif;--font-serif:"Songti SC","STSongti-SC","Noto Serif CJK SC","Source Han Serif SC","Noto Serif SC","SimSun",Georgia,"Times New Roman",serif;--font-serif-en:"Iowan Old Style","Palatino Linotype",Palatino,Georgia,"Noto Serif","Times New Roman",serif;--font-num:"SF Pro Display","Segoe UI",-apple-system,"Helvetica Neue",Arial,sans-serif;--fs-display:56px;--lh-display:68px;--fw-display:600;--fs-h1:36px;--lh-h1:46px;--fw-h1:600;--fs-h2:24px;--lh-h2:32px;--fw-h2:600;--fs-h3:18px;--lh-h3:26px;--fw-h3:600;--fs-body-lg:16px;--lh-body-lg:26px;--fs-body:14px;--lh-body:22px;--fw-body:400;--fs-small:13px;--lh-small:20px;--fs-caption:12px;--lh-caption:16px;--fs-kpi:32px;--lh-kpi:40px;--fw-kpi:600;--fw-medium:500;--fw-semibold:600;--ls-caps:.08em;--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:20px;--sp-6:24px;--sp-8:32px;--sp-10:40px;--sp-12:48px;--sp-16:64px;--sp-20:80px;--sp-30:120px;--h-input:44px;--h-input-sm:36px;--h-btn-lg:48px;--h-btn:44px;--h-btn-sm:32px;--h-topbar:64px;--h-portal-nav:72px;--w-sidebar:240px;--w-sidebar-collapsed:72px;--w-content-max:1200px;--w-portal-max:1200px;--w-form-card:400px;--w-rail:320px;--r-xs:4px;--r-input:8px;--r-btn:8px;--r-chip:999px;--r-card:14px;--r-card-lg:16px;--r-sheet:20px;--shadow-1:0 1px 2px #1522380a,0 2px 8px #1522380a;--shadow-2:0 4px 12px #1522380f,0 16px 40px #15223814;--z-base:0;--z-sticky:100;--z-sidebar:200;--z-topbar:300;--z-dropdown:400;--z-sheet:500;--z-modal:600;--z-toast:700;--dur-fast:.12s;--dur-base:.16s;--dur-slow:.2s;--ease:cubic-bezier(.2,0,0,1)}@media (prefers-reduced-motion:reduce){:root{--dur-fast:0s;--dur-base:0s;--dur-slow:0s}}input:-webkit-autofill{caret-color:var(--c-ink);transition:background-color 9999s ease-out;-webkit-box-shadow:0 0 0 1000px var(--c-autofill-bg) inset!important;box-shadow:0 0 0 1000px var(--c-autofill-bg) inset!important;-webkit-text-fill-color:var(--c-ink)!important}input:-webkit-autofill:hover{caret-color:var(--c-ink);transition:background-color 9999s ease-out;-webkit-box-shadow:0 0 0 1000px var(--c-autofill-bg) inset!important;box-shadow:0 0 0 1000px var(--c-autofill-bg) inset!important;-webkit-text-fill-color:var(--c-ink)!important}input:-webkit-autofill:focus{caret-color:var(--c-ink);transition:background-color 9999s ease-out;-webkit-box-shadow:0 0 0 1000px var(--c-autofill-bg) inset!important;box-shadow:0 0 0 1000px var(--c-autofill-bg) inset!important;-webkit-text-fill-color:var(--c-ink)!important}textarea:-webkit-autofill{caret-color:var(--c-ink);transition:background-color 9999s ease-out;-webkit-box-shadow:0 0 0 1000px var(--c-autofill-bg) inset!important;box-shadow:0 0 0 1000px var(--c-autofill-bg) inset!important;-webkit-text-fill-color:var(--c-ink)!important}select:-webkit-autofill{caret-color:var(--c-ink);transition:background-color 9999s ease-out;-webkit-box-shadow:0 0 0 1000px var(--c-autofill-bg) inset!important;box-shadow:0 0 0 1000px var(--c-autofill-bg) inset!important;-webkit-text-fill-color:var(--c-ink)!important}input:-webkit-autofill:focus{-webkit-box-shadow:0 0 0 1000px var(--c-autofill-bg) inset,0 0 0 3px var(--c-focus-ring)!important}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#f6f3ee;--card:#fff;--text:#1a1a1a;--sub:#6b7280;--brand:#1f3a5f;--gold:#c9a36a;--gold-press:#b08c52;--navy-soft:#e8eef5;--success:#2f9b6a;--success-soft:#e8f5ee;--link:#3b6fa0;--danger:#d64545;--line:#1a1a1a14;--ink-deep:#152238;--nav-h:44px;--tab-h:56px;--safe-t:env(safe-area-inset-top,0px);--safe-b:env(safe-area-inset-bottom,0px);color:var(--text);background:var(--bg);font-family:PingFang SC,Hiragino Sans GB,Noto Sans CJK SC,Noto Sans SC,Microsoft YaHei,sans-serif;line-height:1.45}*{box-sizing:border-box}html,body,#root{min-height:100%}body{background:var(--bg);-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;margin:0;font-size:17px}button,input,textarea{font-family:inherit}button{cursor:pointer}a{color:inherit}#root{min-height:100dvh}:focus-visible{outline:2px solid var(--brand);outline-offset:2px}button,a,.tab{touch-action:manipulation;-webkit-tap-highlight-color:transparent}.boot,.empty{min-height:70dvh;color:var(--sub);flex-direction:column;justify-content:center;align-items:center;gap:8px;display:flex}.empty svg{color:#c8c8c8;width:48px;height:48px}.empty p,.boot p{margin:0;font-size:15px}.page{min-height:100dvh;padding-bottom:calc(var(--tab-h) + var(--safe-b) + 12px)}body.keyboard .tabbar{display:none}body.keyboard .page{padding-bottom:calc(var(--safe-b) + 24px)}.nav{z-index:20;height:calc(var(--nav-h) + var(--safe-t));padding-top:var(--safe-t);-webkit-backdrop-filter:saturate(180%)blur(12px);backdrop-filter:saturate(180%)blur(12px);background:#f6f3eef0;justify-content:center;align-items:center;font-size:17px;font-weight:600;display:flex;position:sticky;top:0}.nav-back{left:4px;top:var(--safe-t);height:var(--nav-h);min-width:64px;color:var(--link);background:0 0;border:0;padding:0 12px;font-size:16px;position:absolute}.tabbar{z-index:30;height:calc(var(--tab-h) + var(--safe-b));padding-bottom:var(--safe-b);border-top:1px solid var(--line);background:#fff;display:flex;position:fixed;bottom:0;left:0;right:0}.tab{color:#888;background:0 0;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:2px;min-height:56px;font-size:11px;text-decoration:none;display:flex}.tab svg{width:26px;height:26px}.tab.on{color:var(--brand);font-weight:600}.tab:active{background:#f5f5f5}.card{background:var(--card);border-radius:12px;margin:12px 16px;overflow:hidden}.field{background:0 0;flex-direction:column;align-items:stretch;gap:6px;width:100%;height:auto;min-height:0;margin:0;padding:12px 16px 14px;display:flex;position:static;overflow:visible}.field>label{color:var(--text);white-space:normal;height:auto;margin:0;font-size:13px;font-weight:500;line-height:1.4;display:block;overflow:visible}.field:focus-within>label{color:var(--brand)}.field.bad>label,.field em{color:var(--danger)}.field em{margin:0;font-size:12px;font-style:normal;line-height:1.4;display:block}.field .hint{color:#6b7280;letter-spacing:0;margin:0;font-size:12px;line-height:1.4}.field input:not([type=checkbox]):not([type=radio]),.field textarea,.field select{box-sizing:border-box;width:100%;height:auto;min-height:44px;color:var(--text);background-color:#fff;border:1px solid #e5e1d8;border-radius:8px;margin:0;padding:10px 12px;font-size:16px;line-height:1.4;display:block}.field textarea{resize:vertical;min-height:96px}.field select{appearance:none;background-color:#fff;background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5L6 6.5L11 1.5' fill='none' stroke='%236B7280' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-position:right 12px center;background-repeat:no-repeat;background-size:12px 8px;padding-right:36px}.field input:not([type=checkbox]):not([type=radio]):focus,.field textarea:focus,.field select:focus{border-color:var(--brand);outline:none}.check-row{align-items:flex-start;gap:8px;min-height:32px;margin:0;font-size:15px;line-height:1.45;display:flex}.check-row span{flex:1;min-width:0}.check-row input,.field input[type=checkbox],.field input[type=radio]{background:0 0;border:0;border-radius:0;flex:none;width:18px;height:18px;min-height:18px;margin-top:2px;padding:0}.field input::placeholder,.field textarea::placeholder{color:#c8c8c8}input[type=date],input[type=datetime-local]{min-height:44px}.field .secret{background:#fff;border:1px solid #e5e1d8;border-radius:8px;min-height:44px;padding:0 4px 0 12px}.field .secret input,.code-card input{width:auto;min-width:0;min-height:40px;color:var(--text);background:0 0;border:0;border-radius:0;outline:none;flex:1;padding:0;font-size:16px}.code-card input{width:100%;font-size:17px}.secret{align-items:center;gap:8px;display:flex}.secret input{flex:1;min-width:0}.eye{min-width:52px;min-height:44px;color:var(--link);background:0 0;border:0;flex:none;font-size:15px}.actions{flex-direction:column;gap:4px;padding:8px 16px 4px;display:flex}.actions .btn,.save-bar .btn,.auth-card .btn,.auth-card button.btn-primary{width:100%}.btn{white-space:nowrap;border:0;border-radius:10px;flex:none;justify-content:center;align-items:center;width:auto;max-width:100%;min-height:44px;padding:0 18px;font-size:16px;font-weight:600;text-decoration:none;display:inline-flex}.btn-primary{background:var(--c-gold,var(--gold));color:var(--c-ink-deep,#152238);border-radius:8px}.btn-primary:active{background:var(--c-gold-press,var(--gold-press));color:var(--c-ink-deep,#152238)}.btn-default{color:var(--text);background:#f0ede8}.btn-default:active{background:#e6e6e6}.btn-ghost{color:var(--link);background:0 0;min-height:44px;font-weight:500}.btn-danger{color:var(--danger);background:0 0;min-height:48px}.btn:disabled{opacity:.45}.banner{color:var(--danger);text-align:center;margin:4px 16px 0;font-size:14px}.toast{z-index:80;color:#fff;text-align:center;pointer-events:none;background:#111111c7;border-radius:10px;max-width:72vw;padding:12px 18px;font-size:15px;position:fixed;top:46%;left:50%;transform:translate(-50%,-50%)}.langs{display:flex}.langs button{color:#8d8d8d;background:0 0;border:0;min-width:48px;min-height:44px;padding:0 8px;font-size:15px}.langs button.on{color:#111;font-weight:700}.langs.light button{color:#ffffffb8}.langs.light button.on{color:#fff}.auth-page{background:var(--bg);min-height:100dvh;padding-bottom:calc(28px + var(--safe-b))}.auth-hero{padding:calc(8px + var(--safe-t)) 20px 78px;background:linear-gradient(180deg, var(--brand) 0%, #2c4d78 46%, var(--bg) 100%);color:#fff;text-align:center}.auth-top{justify-content:flex-end;display:flex}.auth-mark{background:var(--brand);color:#fff;border-radius:50%;justify-content:center;align-items:center;width:72px;height:72px;margin:4px auto 12px;font-family:Noto Serif CJK SC,Songti SC,serif;font-size:34px;font-weight:700;display:flex}.auth-hero h1{letter-spacing:.06em;margin:0;font-size:28px;font-weight:600}.auth-hero p{letter-spacing:.04em;opacity:.92;margin:6px 0 0;font-size:14px}.auth-card{margin-top:-40px}.seg-wrap{gap:8px;padding:16px 16px 0;display:flex}.seg{border:1px solid var(--line);color:#111;background:#fff;border-radius:8px;flex:1;min-height:44px;font-size:16px}.seg.on{border-color:var(--brand);background:var(--navy-soft);color:var(--brand);font-weight:600}.seg:active{opacity:.86}.status-card,.code-card,.me-head,.cell{background:#fff;border-radius:12px;margin:12px 16px}.status-card{justify-content:space-between;align-items:center;gap:12px;padding:14px 16px;display:flex}.status-card strong{font-size:17px;display:block}.dots{gap:5px;margin-top:8px;display:flex}.dots i{background:#e5e5e5;border-radius:50%;width:8px;height:8px}.dots i.on{background:var(--gold)}.progress-track{background:#efeae2;border-radius:999px;height:6px;margin-top:8px;overflow:hidden}.progress-track i{background:var(--gold);height:100%;display:block}.materials{width:100%;max-width:100%;color:var(--c-ink,#1a1a1a);border-radius:var(--r-card,14px);box-shadow:var(--shadow-1,none);font-family:var(--font-sans,"PingFang SC", "Noto Sans CJK SC", sans-serif);background:#fff;border:0;margin:0;padding:16px 16px 28px}.materials h2{letter-spacing:.04em;margin:0;font-size:18px;font-weight:600}.materials h2 small,.material-name small{color:#8d8680;letter-spacing:0;margin-top:2px;font-size:12px;font-weight:400;display:block}.material{background:0 0;border:0;border-top:1px solid #17395c;border-radius:0;margin:0;padding:12px 0}.material-head{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.material-name{font-size:16px;font-weight:600}.material-state{color:#8d8680;flex:none;font-size:13px;font-weight:400}.material-state[data-state=uploaded]{color:#17395c}.material-state[data-state=error]{color:#8c3a3a}.materials .hint{color:#8d8680;letter-spacing:0;margin:6px 0 0;font-size:12px}.material-upload{border:1px solid var(--c-ink-navy,#1f3a5f);min-height:44px;color:var(--c-ink-navy,#1f3a5f);font-family:var(--font-sans,inherit);white-space:nowrap;background:#fff;border-radius:8px;justify-content:center;align-items:center;margin-top:8px;padding:0 16px;font-size:14px;font-weight:600;display:inline-flex;position:relative}.material-upload input{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.material-upload.is-busy{opacity:.45}.material-files{margin:8px 0 0;padding:0;list-style:none}.material-files li{flex-wrap:wrap;align-items:baseline;gap:6px 12px;padding:6px 0 0;display:flex}.material-files .name{text-overflow:ellipsis;white-space:nowrap;flex:100%;font-size:15px;overflow:hidden}.material-files .meta,.material-files .status{color:#8d8680;font-size:13px}.material-files .status.ok{color:#17395c}.material-files .status.bad{color:#8c3a3a}.material-files a,.materials .material-text{color:#17395c;font:inherit;text-underline-offset:2px;background:0 0;border:0;padding:0;font-size:14px;text-decoration:underline;position:relative}.materials .material-text input{opacity:0;cursor:pointer;font-size:0;position:absolute;inset:0}.material-progress{background:#e4e0da;flex:100%;height:2px}.material-progress i{background:#17395c;height:2px;display:block}.material-hint{color:#8d8680;border-top:1px solid #17395c;margin:12px 0 0;padding-top:10px;font-size:13px}.chips{scrollbar-width:none;gap:8px;padding:4px 16px 8px;display:flex;overflow-x:auto}.chips::-webkit-scrollbar{width:0;height:0;display:none}.chips button{border:1px solid var(--line);background:#fff;border-radius:999px;flex:none;min-height:36px;padding:0 12px;font-size:13px}.chips button.on{border-color:var(--brand);background:var(--navy-soft);color:var(--brand);font-weight:600}.acc{background:#fff;border-radius:12px;margin:0 16px 10px;overflow:hidden}.acc-body{flex-direction:column;gap:16px;padding:20px;display:flex;overflow:visible}.acc-body>div:not(.field){flex-direction:column;gap:16px;display:flex}.acc-body .field{padding:0}.acc-head{text-align:left;background:#fff;border:0;justify-content:space-between;align-items:center;width:100%;min-height:56px;padding:0 16px;font-size:16px;display:flex}.acc-head small{color:var(--sub);font-size:12px;font-weight:500;display:block}.pill{border-radius:999px;flex:none;padding:4px 10px;font-size:13px;font-weight:600}.pill-ok{background:var(--success-soft);color:var(--success)}.pill-todo{color:#c47b00;background:#fff4e5}.code-card{align-items:center;gap:8px;min-height:64px;padding:8px 8px 8px 16px;display:flex}.code-card span{color:var(--sub);flex:none;font-size:13px}.code-card input{letter-spacing:.18em;text-align:center;font-size:18px;font-weight:700}.code-card button{background:var(--navy-soft);min-width:64px;min-height:44px;color:var(--brand);border:0;border-radius:8px;flex:none;font-size:15px;font-weight:600}.hint{color:var(--sub);letter-spacing:.08em;margin:6px 0 0;font-size:13px}.text-btn{width:calc(100% - 32px);min-height:44px;color:var(--link);background:0 0;border:0;margin:4px 16px 8px;font-size:15px;display:block}.switcher{gap:8px;padding:12px 16px 0;display:flex;overflow-x:auto}.switcher button{border:1px solid var(--line);background:#fff;border-radius:999px;flex:none;min-height:40px;padding:0 14px;font-size:15px}.switcher button.on{background:var(--navy-soft);border-color:var(--brand);color:var(--brand);font-weight:600}.activity{background:#fff;border-radius:12px;grid-template-columns:64px 1fr;gap:12px 14px;margin:12px 16px;padding:16px;display:grid}.date-badge{background:var(--navy-soft);width:64px;height:64px;color:var(--brand);border-radius:12px;flex-direction:column;justify-content:center;align-items:center;display:flex}.date-badge b{font-size:22px;line-height:1}.date-badge span{margin-top:2px;font-size:12px}.date-badge.muted{color:#999;background:#f5f5f5}.activity h2{margin:0;font-size:17px;font-weight:600}.when,.meta{color:var(--sub);margin:4px 0 0;font-size:13px}.activity .body{white-space:pre-wrap;margin:8px 0 0;font-size:15px;line-height:1.55}.activity .actions{grid-column:1/-1;padding:4px 0 0}.signup-name{color:#333;margin-bottom:6px;font-size:14px;display:block}.signed-label{color:var(--success);margin-bottom:8px;font-size:14px;font-weight:600;display:block}.me-head{align-items:center;gap:14px;padding:18px 16px;display:flex}.avatar{background:var(--brand);color:#fff;border-radius:50%;justify-content:center;align-items:center;width:56px;height:56px;font-family:Noto Serif CJK SC,Songti SC,serif;font-size:24px;display:flex}.me-head b{font-size:18px;display:block}.me-head span,.cell small{color:var(--sub);font-size:13px}.cell{padding:0}.cell button,.choice{text-align:left;background:#fff;border:0;justify-content:space-between;align-items:center;width:100%;min-height:56px;padding:0 16px;font-size:17px;display:flex}.cell button+button,.choice+.choice{box-shadow:inset 0 1px 0 var(--line)}.choice.on{color:var(--brand);font-weight:600}.choice:active,.cell button:active{background:#ececec}.logout-row{color:var(--danger)!important;justify-content:center!important}.desk{color:#17211c;background:#f3f5f4;min-height:100dvh;display:flex}.desk .empty{min-height:160px}.side{background:var(--ink-deep);color:#fff;flex-direction:column;flex:none;gap:4px;width:220px;padding:22px 14px 16px;display:flex}.brand-lockup{padding:4px 10px 18px}.brand-lockup strong{letter-spacing:.08em;font-size:20px;display:block}.brand-lockup span{opacity:.72;margin-top:4px;font-size:12px;display:block}.side a,.side .side-btn{color:#ffffffd1;text-align:left;background:0 0;border:0;border-radius:8px;align-items:center;min-height:44px;padding:0 12px;font-size:15px;text-decoration:none;display:flex}.side a.on{color:#fff;background:#ffffff1f;font-weight:600}.side .spacer{flex:1}.desk-main{flex:1;min-width:0}.topbar{border-bottom:1px solid var(--line);background:#fff;justify-content:space-between;align-items:center;gap:12px;min-height:64px;padding:12px 24px;display:flex}.topbar h1{margin:0 0 8px;font-size:20px;font-weight:600}.top-tools{align-items:center;gap:10px;display:flex}.filters{gap:6px;display:flex}.filters button,.linkish,.tiny{color:#333;background:#f3f4f3;border:0;border-radius:999px;min-height:36px;padding:0 12px;font-size:13px}.filters button.on{background:var(--navy-soft);color:var(--brand);font-weight:600}.search{background:#f3f4f3;border:0;border-radius:8px;width:180px;height:36px;padding:0 12px;font-size:16px}.panel{background:#fff;border-radius:12px;margin:16px 24px;overflow:hidden}.table{border-collapse:collapse;width:100%}.table th{text-align:left;color:#6b7280;padding:12px 16px;font-size:12px;font-weight:600}.table td{vertical-align:middle;border-top:1px solid #f2f2f2;padding:14px 16px;font-size:15px}.table tr.fresh td{background:var(--navy-soft)}.who{color:inherit;text-decoration:none;display:block}.who b{font-size:15px;display:block}.who span{color:#888;margin-top:2px;font-size:12px;display:block}.badge{background:var(--brand);color:#fff;border-radius:4px;margin-left:6px;padding:0 6px;font-size:12px;font-style:normal;font-weight:700;display:inline-flex}.live{color:#888;white-space:nowrap;background:#f3f4f3;border-radius:999px;flex:none;align-items:center;gap:6px;height:32px;padding:0 12px;font-size:13px;font-weight:600;display:inline-flex}.live.on{background:var(--success-soft);color:var(--success)}.dot{background:#c8c8c8;border-radius:50%;width:8px;height:8px;display:block}.live.on .dot{background:var(--success);animation:1.8s infinite pulse}@keyframes pulse{70%{box-shadow:0 0 0 6px #2f9b6a00}to{box-shadow:0 0 #2f9b6a00}}.only-phone{display:none}.m-card{color:inherit;background:#fff;border-radius:12px;margin:12px 16px;padding:14px 16px;text-decoration:none;display:block}.m-card.fresh{box-shadow:inset 3px 0 0 var(--brand);background:var(--navy-soft)}.m-top{align-items:center;gap:8px;display:flex}.m-top b{font-size:17px}.m-card p,.m-card small{color:#666;margin:6px 0 0;font-size:13px;display:block}.detail{padding:8px 16px 28px}.detail-grid{gap:12px;display:grid}.kv{background:#fff;border-radius:12px;padding:14px 16px}.kv span{color:var(--sub);font-size:13px;display:block}.kv b{word-break:break-word;margin-top:4px;font-size:16px;font-weight:600;display:block}.kv .row{justify-content:space-between;align-items:center;gap:8px;display:flex}.inline{background:var(--navy-soft);min-height:40px;color:var(--brand);border:0;border-radius:8px;padding:0 12px;font-weight:600}.audit{margin-top:12px}.audit li{border-top:1px solid #f2f2f2;padding:10px 0;font-size:14px;list-style:none}.audit ul{margin:0;padding:0}.note{color:var(--sub);margin:8px 0 0;font-size:12px}.form-grid,.act-list{gap:12px;display:grid}.act-row{background:#fff;border-radius:12px;padding:14px 16px}.act-row h3{margin:0 0 4px;font-size:16px}.sub{color:#888;font-size:13px}.row-actions{flex-wrap:wrap;gap:8px;margin-top:10px;display:flex}.danger-text{color:var(--danger);background:#fff1f0}@media (width<=860px){.desk{flex-direction:column}.side{box-sizing:border-box;width:100%;min-width:0;padding:calc(8px + var(--safe-t)) 8px 8px;z-index:40;background:var(--c-ink-deep,#152238);flex-flow:row;align-self:stretch;align-items:center;gap:4px;position:sticky;top:0;overflow-x:auto}.brand-lockup,.brand-lockup strong,.side a,.side .side-btn{white-space:nowrap;flex:none}.brand-lockup{padding:0 8px}.brand-lockup span,.side .spacer{display:none}.side a,.side .side-btn{min-height:44px;padding:0 10px}.topbar,.panel,.detail{margin-left:0;margin-right:0}.topbar{flex-direction:column;align-items:flex-start;padding:12px 16px}.panel{border-radius:0;margin:12px 0 0}.only-desk{display:none}.only-phone{display:block}.search{flex:1;width:auto;min-width:0}.top-tools{justify-content:space-between;width:100%}}@media (width>=861px){.detail{padding:20px 24px 40px}.detail-grid{grid-template-columns:1.2fr .8fr;align-items:start}.split{grid-template-columns:360px 1fr;align-items:start;gap:16px;padding:16px 24px 32px;display:grid}.split .panel{margin:0}}@media (hover:hover) and (pointer:fine){.table tbody tr:hover td{background:#fafafa}.table tr.fresh:hover td{background:var(--navy-soft)}}@media (prefers-reduced-motion:reduce){.live.on .dot{animation:none}}.entry-row{justify-content:center;align-items:center;gap:16px;min-height:44px;display:flex}.entry-row a{color:var(--link);align-items:center;min-height:44px;font-size:15px;text-decoration:none;display:flex}.counselor-entry{text-align:center;color:var(--sub);min-height:36px;font-size:12px;line-height:36px;text-decoration:none;display:block}.counselor-entry.light{color:var(--link)}.console-auth{background:var(--ink-deep);min-height:100dvh;padding:calc(12px + var(--safe-t)) 20px calc(24px + var(--safe-b));flex-direction:column;display:flex}.console-auth-top{justify-content:flex-end;display:flex}.console-card{background:#fff;border-radius:12px;flex-direction:column;gap:8px;margin:auto 0;padding:28px 20px 20px;display:flex}.console-card.flat{margin:12px 16px}.console-kicker{color:var(--brand);letter-spacing:.08em;margin:0;font-size:13px}.console-card h1{color:var(--brand);margin:0 0 8px;font-family:Noto Serif CJK SC,Songti SC,serif;font-size:26px}.console-card label{color:var(--sub);font-size:13px}.console-card input{border:0;border-bottom:1px solid var(--line);min-height:44px;margin-bottom:8px;font-size:17px}.console{padding-bottom:calc(24px + var(--safe-b))}.console-bar{justify-content:space-between;align-items:flex-end;gap:12px;padding:16px 16px 8px;display:flex}.console-bar h1{margin:0;font-size:22px}.console-tools{flex-wrap:wrap;align-items:center;gap:8px;padding:0 16px 8px;display:flex}.console-add{width:auto;min-height:40px;padding:0 16px}.person-list{gap:10px;padding:4px 16px 16px;display:grid}@media (width>=861px){.person-list{grid-template-columns:1fr 1fr}}.person{background:#fff;border-radius:12px;padding:14px 16px}.person.off{opacity:.72}.person-top{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.person-top b{font-size:17px}.person p{color:var(--sub);margin:6px 0 0;font-size:13px}.btn-primary:hover{background:var(--c-gold-hover)}.field>label{color:var(--c-ink-2);font-weight:500}.field .hint,.field em{font-size:12px;line-height:16px}.field input:not([type=checkbox]):not([type=radio]),.field textarea,.field select{min-height:var(--h-input);border:1px solid var(--c-border);border-radius:var(--r-input);padding:10px 14px;font-size:16px}.field input:focus,.field textarea:focus,.field select:focus{border-color:var(--c-ink-navy);box-shadow:0 0 0 3px var(--c-focus-ring)}.field.bad input,.field.bad textarea,.field.bad select{border-color:var(--c-danger)}.auth-split{background:var(--c-paper);grid-template-columns:minmax(280px,600px) 1fr;min-height:100dvh;display:grid}.auth-brand{background:var(--c-ink-deep);color:#fff;flex-direction:column;padding:48px 64px;display:flex;position:relative;overflow:hidden}.auth-brand.admin{background:var(--c-midnight)}.auth-brand h1{font-family:var(--font-serif);margin:0;font-size:44px;font-weight:600;line-height:58px}.auth-brand .rule{background:var(--c-gold);width:48px;height:2px;margin:32px 0 20px}.auth-brand .en{font-family:var(--font-serif-en);color:var(--c-on-dark-2);font-size:18px}.auth-brand .mid{margin:auto 0}.auth-brand .foot{color:var(--c-on-dark-3);font-size:12px}.wordmark{flex-direction:column;display:flex}.wordmark b{font-family:var(--font-serif);font-size:17px;font-weight:600}.wordmark i{letter-spacing:.18em;color:var(--c-muted);font-size:10px;font-style:normal}.portal-nav .wordmark b,.family-top .wordmark b{color:var(--c-ink-navy)}.auth-brand .wordmark b{color:#fff}.auth-brand .wordmark i{color:var(--c-on-dark-2)}.mark{background:var(--c-ink-deep);width:36px;height:36px;color:var(--c-gold);font-family:var(--font-serif);border-radius:8px;justify-content:center;align-items:center;font-size:21px;display:inline-flex}.auth-brand .mark{background:0 0;box-shadow:inset 0 0 0 1px #c9a36ab3}.brand-row{align-items:center;gap:12px;display:flex}.auth-panel{flex-direction:column;justify-content:center;align-items:center;min-width:0;padding:96px 24px 40px;display:flex;position:relative}.auth-tools{justify-content:space-between;align-items:center;display:flex;position:absolute;top:32px;left:48px;right:48px}.auth-card.sheet{width:min(100%, var(--w-form-card));border-radius:var(--r-card-lg);box-shadow:var(--shadow-2);border:1px solid #e3ded599;margin:0;padding:40px}.auth-card.sheet h2{font-family:var(--font-serif);color:var(--c-ink-navy);margin:0 0 32px;font-size:28px;line-height:36px}.console-tag{height:26px;color:var(--c-gold);letter-spacing:.16em;border:1px solid #c9a36a80;border-radius:999px;align-items:center;margin-bottom:28px;padding:0 12px;font-size:11px;font-weight:600;display:inline-flex}.portal{background:var(--c-paper);color:var(--c-ink)}.portal-nav{height:var(--h-portal-nav);border-bottom:1px solid var(--c-border);z-index:var(--z-topbar);background:#f6f3eef5;position:sticky;top:0}.portal-wrap{width:min(var(--w-portal-max), calc(100% - 40px));margin:0 auto}.portal-nav .portal-wrap{align-items:center;gap:32px;height:100%;display:flex}.portal-links{gap:28px;margin-left:auto;display:flex}.portal-links a{color:var(--c-ink-2);padding:24px 0;font-weight:500;text-decoration:none}.portal-hero{background:var(--c-ink-deep);color:#fff;position:relative;overflow:hidden}.portal-hero .portal-wrap{z-index:1;padding:80px 0 88px;position:relative}.portal-hero h1{font-family:var(--font-serif);max-width:16em;margin:16px 0 20px;font-size:48px;font-weight:600;line-height:60px}.portal-hero p{color:var(--c-on-dark-2);margin:0 0 32px;font-size:18px;line-height:30px}.portal-hero .wm{font-family:var(--font-serif);color:#c9a36a0b;pointer-events:none;font-size:420px;line-height:1;position:absolute;top:-40px;right:-40px}.portal-section{padding:72px 0}.portal-section h2{font-family:var(--font-serif);color:var(--c-ink-navy);margin:8px 0 28px;font-size:36px;line-height:46px}.svc-grid{grid-template-columns:repeat(4,1fr);gap:24px;display:grid}.svc-card{border-radius:var(--r-card-lg);box-shadow:var(--shadow-1);background:#fff;flex-direction:column;min-height:180px;padding:28px;display:flex}.svc-card.feat{background:var(--c-ink-navy);color:#fff}.svc-card .no{color:var(--c-gold-text);font-family:var(--font-serif-en);letter-spacing:.1em}.svc-card.feat .no,.svc-card.feat h3{color:#fff}.svc-card h3{font-family:var(--font-serif);color:var(--c-ink-navy);margin:24px 0 8px;font-size:22px}.svc-card p{color:var(--c-ink-2);margin:0}.svc-card.feat p{color:var(--c-on-dark-2)}.entry-grid{grid-template-columns:1fr 1fr;gap:24px;display:grid}.entry-card{border-radius:var(--r-card-lg);flex-direction:column;justify-content:space-between;gap:24px;min-height:180px;padding:36px;display:flex}.entry-card.dark{background:var(--c-ink-deep);color:#fff}.entry-card.light{box-shadow:var(--shadow-1);background:#fff}.entry-card h3{font-family:var(--font-serif);margin:0;font-size:30px}.portal-foot{background:var(--c-midnight);color:var(--c-on-dark-2);padding:48px 0 28px}.portal-foot .portal-wrap{flex-wrap:wrap;justify-content:space-between;gap:24px;display:flex}.eyebrow{color:var(--c-gold-text);letter-spacing:.18em;text-transform:uppercase;font-size:12px}.side{width:var(--w-sidebar);background:var(--c-ink-deep)}.side a.on{background:var(--c-active-dark);box-shadow:inset 3px 0 0 var(--c-gold);color:#fff}.desk{background:var(--c-paper)}.desk-main{padding-bottom:88px}.family-top{height:var(--h-topbar);background:var(--c-paper);border-bottom:1px solid var(--c-border);z-index:var(--z-topbar);align-items:center;gap:24px;padding:0 24px;display:none;position:sticky;top:0}.family-top a{color:var(--c-ink-2);white-space:nowrap;font-weight:500;text-decoration:none}.family-top a.on{color:var(--c-ink-navy);box-shadow:inset 0 -2px 0 var(--c-gold)}.save-bar{z-index:var(--z-sticky);border-top:1px solid var(--c-border);background:#fff;justify-content:flex-end;gap:12px;padding:12px 16px;display:flex;position:sticky;bottom:0}.save-bar .btn{width:auto;min-width:160px}@media (width>=1280px){.acc-body{grid-template-columns:1fr 1fr;gap:16px 24px;display:grid}.acc-body>div:not(.field):not(.section-actions){display:contents}:is(.acc-body>.hint,.acc-body>.check-row,.acc-body>.field:has(textarea),.acc-body .section-actions){grid-column:1/-1}.section-actions{display:flex}.save-bar{display:none}.family-top{display:flex}.page .tabbar{display:none}.page{padding-bottom:24px}}@media (width<=1279px){.auth-split{grid-template-columns:40% 1fr}.auth-brand{padding:32px}.auth-brand h1{font-size:32px;line-height:42px}.svc-grid{grid-template-columns:1fr 1fr}}.detail-grid>*{min-width:0;max-width:100%}.chips,form{width:100%;max-width:100%}@media (width<=860px){.side{width:100%;min-width:0;max-width:100%;overflow-x:auto}.desk,.desk-main,.detail,.detail-grid,form,.acc{min-width:0;max-width:100%}}@media (width<=767px){.auth-split{flex-direction:column;display:flex}.auth-brand{min-height:280px;padding:24px 20px 48px}.auth-panel{background:#fff;border-radius:20px 20px 0 0;align-items:stretch;margin-top:-24px;padding:8px 0 32px}.auth-tools{padding:12px 16px 0;position:static}.auth-card.sheet{width:100%;box-shadow:none;box-sizing:border-box;border:0;margin:0;padding:8px 24px 24px}.portal-links,.portal-hero .wm{display:none}.portal-nav{height:56px}.portal-wrap{width:calc(100% - 32px)}.portal-hero h1{font-size:34px;line-height:46px}.svc-grid,.entry-grid{grid-template-columns:1fr}.field input:not([type=checkbox]):not([type=radio]),.field textarea,.field select{min-height:48px;font-size:16px}.save-bar{padding-bottom:calc(12px + env(safe-area-inset-bottom));padding-bottom:calc(12px + constant(safe-area-inset-bottom));position:fixed;bottom:0;left:0;right:0}.save-bar .btn{width:100%}body.keyboard .save-bar{display:none}.page{padding-bottom:calc(120px + env(safe-area-inset-bottom))}.tab,.tab span{white-space:nowrap}.portal-nav .langs{display:none}.auth-tools{justify-content:flex-start;gap:16px;width:100%}.auth-tools a{white-space:nowrap}}html,body,#root{max-width:100%;overflow-x:hidden}button,.btn,.tab,.side a,.side .side-btn,.tiny,.text-btn,.inline,.filters button,.portal-links a,.auth-tools a,.family-top a,.crumbs a,.tabbar span{white-space:nowrap}.field .hint,.field em,.hint{white-space:normal;max-width:100%;overflow:visible}.field,.acc,.acc-body,.detail,.page,.materials{min-width:0;max-width:100%}.field .secret{border:1px solid var(--c-border);width:100%;min-height:48px;box-shadow:none;background:#fff;border-radius:8px;align-items:center;padding:0 4px 0 14px;display:flex}.field .secret input{outline:none;flex:auto;width:1%;min-height:40px;padding:0;box-shadow:none!important;background:0 0!important;border:0!important}.field .secret:focus-within{border-color:var(--c-ink-navy);box-shadow:0 0 0 3px var(--c-focus-ring)}.portal-nav .portal-wrap{gap:12px;min-width:0}.portal-nav .brand-row{flex:auto;min-width:0;overflow:hidden}.portal-nav .wordmark{min-width:0}.portal-nav .wordmark b,.portal-nav .wordmark i{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.portal-nav .btn{flex:none;width:auto}.auth-panel form{width:min(100%,400px);margin:0 auto}.auth-card.sheet{width:100%}.side{background:var(--c-ink-deep)}.side svg{fill:none;stroke:currentColor;stroke-width:1.6px;stroke-linecap:round;stroke-linejoin:round;flex:none;width:18px;height:18px}.brand-lockup{flex-direction:row;align-items:center;gap:10px;min-width:0;display:flex}.brand-lockup .wordmark{flex-direction:column;min-width:0;display:flex}.brand-lockup strong,.brand-lockup .wordmark span{white-space:nowrap;text-overflow:ellipsis;display:block;overflow:hidden}.brand-lockup strong{letter-spacing:0;font-size:15px;font-family:var(--font-serif);line-height:20px}.brand-lockup .wordmark span{letter-spacing:.12em;opacity:.72;margin:0;font-size:9px}.side-label{letter-spacing:.14em;color:var(--c-on-dark-3);margin:16px 12px 6px;font-size:11px}.side a{gap:10px}.side-me{color:#fff;align-items:center;gap:10px;padding:12px;display:flex}.side-me b,.side-me i{white-space:nowrap;font-style:normal;display:block}.side-me i{color:var(--c-on-dark-2);font-size:12px}.av{background:var(--c-gold-tint);width:32px;height:32px;color:var(--c-gold-text);border-radius:50%;flex:none;justify-content:center;align-items:center;font-weight:600;display:inline-flex}.admin-top{background:var(--c-paper);border-bottom:1px solid var(--c-border);align-items:center;gap:12px;min-height:64px;padding:0 24px;display:flex}.admin-search{width:min(320px,100%);min-width:0;margin-left:auto}.admin-search input,.search{box-sizing:border-box;border:1px solid var(--c-border);background:#fff;border-radius:8px;width:100%;min-width:0;height:36px;padding:0 12px}.who-mini{white-space:nowrap;align-items:center;gap:8px;display:flex}a.tiny,button.tiny,a.text-btn,button.text-btn,button.inline{white-space:nowrap;border:1px solid var(--c-border);width:auto;min-height:36px;color:var(--c-ink-navy);background:#fff;border-radius:8px;justify-content:center;align-items:center;padding:0 12px;font-weight:600;text-decoration:none;display:inline-flex}.section-actions{justify-content:flex-end;gap:12px;display:none}.section-actions .btn{width:auto;min-width:88px}.student-hero,.rail-card{box-shadow:var(--shadow-1);border:1px solid var(--c-border);background:#fff;border-radius:14px}.crumbs{min-width:0;color:var(--c-muted);align-items:center;gap:8px;margin-bottom:16px;font-size:14px;display:flex}.crumbs a{color:var(--c-muted);text-decoration:none}.crumbs b{color:var(--c-ink);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.student-hero{flex-wrap:wrap;align-items:center;gap:16px;padding:20px 24px;display:flex}.student-avatar{background:var(--c-ink-navy);width:64px;height:64px;color:var(--c-gold);font-family:var(--font-serif);border-radius:50%;flex:none;justify-content:center;align-items:center;font-size:28px;display:flex}.student-id{flex:1;min-width:0}.student-id h1{font-family:var(--font-serif);flex-wrap:wrap;align-items:baseline;gap:10px;margin:0;font-size:26px;line-height:34px;display:flex}.student-id h1 span{color:var(--c-muted);font-size:17px;font-weight:400}.hero-chips{flex-wrap:wrap;gap:8px;margin-top:8px;display:flex}.chip{background:var(--c-paper);border:1px solid var(--c-border);white-space:nowrap;border-radius:999px;align-items:center;height:24px;padding:0 10px;font-size:12px;display:inline-flex}.student-progress{text-align:right;min-width:140px}.student-progress strong{font-variant-numeric:tabular-nums;font-size:28px;display:block}.student-progress em{color:var(--c-gold-text);font-style:normal}.student-layout{gap:16px;margin-top:16px;display:grid}.rail-card{padding:16px 18px}.rail-card h3{justify-content:space-between;margin:0 0 8px;font-size:15px;display:flex}.rail-card ul{margin:0;padding:0;list-style:none}.rail-card li{border-top:1px solid var(--c-divider);align-items:center;gap:8px;padding:8px 0;display:flex}.rail-card time{color:var(--c-muted);white-space:nowrap;margin-left:auto}.rail-card dl{margin:0}.rail-card dt{color:var(--c-muted);font-size:13px}.rail-card dd{margin:0 0 8px}.topbar,.top-tools,.filters{min-width:0;max-width:100%}.top-tools{flex-wrap:wrap}@media (width>=1280px){.student-layout{grid-template-columns:minmax(0,1fr) 320px;align-items:start}}@media (width>=861px){.top-tools .search{display:none}}@media (width<=860px){.admin-top,.who-mini,.side-label,.side-me,.side .langs,.side .brand-lockup .wordmark{display:none}.side .brand-lockup .mark{flex:none;width:32px;height:32px;display:inline-flex}.desk{width:100%;overflow-x:hidden}.side{gap:2px;padding-left:8px;padding-right:8px;overflow-x:auto}.side a,.side .side-btn{padding:0 8px;font-size:14px}.search{width:100%}.live{display:none}.console-tools{align-items:stretch}.console-tools .search{flex:100%;width:100%;min-width:0;max-width:100%}}.auth-card.sheet{box-sizing:border-box}.auth-card.sheet .field{width:100%;min-width:0;padding-left:0;padding-right:0}.auth-card.sheet .field input,.auth-card.sheet .field .secret,.auth-card.sheet .btn,.auth-card.sheet button.btn-primary{box-sizing:border-box;width:100%;max-width:100%}.desk,.desk-main,.detail,.student-page,.student-layout,.student-layout>*,.student-hero,.crumbs,form,.acc,.acc-body,.acc-body>div,.field,.chips,.materials,.console,.page,.console-tools,.person-list,.person{box-sizing:border-box;min-width:0;max-width:100%}.chips{overscroll-behavior-x:contain;width:100%;min-width:0;max-width:100%;overflow-x:auto}.field input,.field textarea,.field select,.field .secret{box-sizing:border-box;width:100%;min-width:0;max-width:100%}.field .hint,.field em{overflow-wrap:break-word}footer.note,.page>.note,.desk-main>.note{text-align:center}.portal-foot .portal-wrap{text-align:center;justify-content:center}a.material-pdf{width:auto;min-height:36px;padding:0 14px;text-decoration:none}
