:root,.login[data-sky="light"]{--niu-sky:#99D0EF;--niu-lime:#92D050;--niu-navy:#014099;--niu-gold:#FED900;--niu-red:#E60012;--niu-sky-soft:#E8F4FD;--niu-lime-soft:#F0F9E5;--niu-gold-600:#E2C000;--on-solid:#FFFFFF;--niu-navy2:var(--niu-navy);--brand-50:#F2F7FE;--brand-100:#E3EDFB;--brand-200:#C6D9F4;--brand-300:#96B7E8;--brand-400:#5C8BD6;--brand-500:#2664BF;--brand-600:#0E4FA8;--brand-700:#014099;--brand-800:#002F70;--brand-900:#001E50;--brand-950:#001133;--n-0:#FFFFFF;--n-25:#FAFBFD;--n-50:#F5F7FB;--n-100:#EDF1F7;--n-150:#E4EAF3;--n-200:#D7DFEC;--n-300:#BCC7DA;--n-400:#93A1B8;--n-500:#6E7C94;--n-600:#55627A;--n-700:#3C475C;--n-800:#28324A;--n-900:#1A2438;--ok-soft:#E9F7F0;--ok-line:#BCE5D2;--ok-ink:#146A47;--ok-solid:#0F7B4F;--warn-soft:#FEF7E6;--warn-line:#F7DFAE;--warn-ink:#8A5200;--warn-solid:#C77700;--err-soft:#FFF1F1;--err-line:#F6C9CD;--err-ink:#9B1B25;--err-solid:#C0242F;--info-soft:#E3EDFB;--info-line:#C6D9F4;--info-ink:#0E4FA8;--vio-soft:#F1ECFD;--vio-line:#DDD2FA;--vio-ink:#5B21B6;--gold-soft:#FFF4C2;--gold-line:#F2DE7A;--gold-ink:#6B5400;--font-ui:"Microsoft JhengHei","PingFang TC","Segoe UI",-apple-system,sans-serif;--font-latin:"Inter","Microsoft JhengHei","PingFang TC",-apple-system,sans-serif;--font-mono:"SFMono-Regular",Consolas,"Liberation Mono",monospace;--fs-2xs:clamp(.7rem,.68rem + .08vw,.75rem);--fs-xs:clamp(.75rem,.72rem + .1vw,.8rem);--fs-sm:clamp(.8rem,.77rem + .12vw,.85rem);--fs-md:clamp(.85rem,.81rem + .14vw,.9rem);--fs-base:clamp(.9rem,.86rem + .18vw,.96rem);--fs-lg:clamp(.95rem,.9rem + .2vw,1rem);--fs-xl:clamp(1.05rem,1rem + .25vw,1.15rem);--fs-2xl:clamp(1.25rem,1.15rem + .5vw,1.4rem);--fs-3xl:clamp(1.5rem,1.35rem + .75vw,1.75rem);--fs-page:clamp(1.75rem,1.55rem + 1vw,2rem);--lh-page:1.18;--ls-page:-.022em;--fs-sec:clamp(1.125rem,1.05rem + .3vw,1.25rem);--ls-sec:-.012em;--fs-obj:clamp(.975rem,.94rem + .14vw,1.05rem);--fs-body:clamp(.875rem,.84rem + .14vw,.95rem);--fs-meta:clamp(.78rem,.75rem + .1vw,.84rem);--fs-micro:clamp(.72rem,.7rem + .08vw,.78rem);--hairline:1px;--page-pad:var(--sp-6);--page-pad-left:max(var(--page-pad),env(safe-area-inset-left));--page-pad-right:max(var(--page-pad),env(safe-area-inset-right));--as-bar-h:2.75rem;--gutter:clamp(16px,6vw,160px);--wrap-max:2240px;--rail-w:clamp(300px,18vw,420px);--cw-gap:clamp(16px,1.25vw,28px);--safe-top:env(safe-area-inset-top);--safe-bottom:env(safe-area-inset-bottom);--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:20px;--sp-6:24px;--sp-7:28px;--sp-8:32px;--sp-10:40px;--sp-12:48px;--r-xs:6px;--r-sm:8px;--r-md:10px;--r-lg:14px;--r-xl:18px;--r-full:999px;--r-chip:8px;--r-ctl:13px;--r-row:18px;--r-obj:24px;--r-panel:30px;--r-ava:10px;--sh-1:0 1px 2px rgba(16,28,54,.05);--sh-2:0 1px 2px rgba(16,28,54,.04),0 4px 10px -3px rgba(16,28,54,.08);--sh-3:0 2px 4px rgba(16,28,54,.05),0 14px 30px -12px rgba(16,28,54,.16);--sh-4:0 4px 8px rgba(16,28,54,.06),0 28px 56px -18px rgba(16,28,54,.22);--dur-0:.1s;--dur-1:.12s;--dur-2:.2s;--dur-3:.32s;--ease-out:cubic-bezier(.22,1,.36,1);--ease-in-out:cubic-bezier(.4,0,.2,1);--ease:var(--ease-in-out);--dur-sky:240s;--dur-tide:47s;--dur-hero:520ms;--dur-dress:700ms;--dur-egg:16s;--dur-platform-float:7s;--dur-platform-orbit:42s;--dur-platform-dash:34s;--dur-platform-node-a:9s;--dur-platform-node-b:11s;--dur-platform-node-c:10s;--delay-platform-node-b:-4s;--delay-platform-node-c:-7s;--delay-hero-card:40ms;--delay-hero-id:140ms;--dur-busy-spin:.9s;--dur-busy-flow:1.5s;--sky-dawn-1:#7E9EBD;--sky-dawn-2:#C9D8E5;--sky-dawn-3:#F4C698;--sky-dawn-4:#FFE0B4;--sky-day-1:#5F9ED2;--sky-day-2:#9BC7E6;--sky-day-3:#E4F0F7;--sky-dusk-1:#34385F;--sky-dusk-2:#765C78;--sky-dusk-3:#D98266;--sky-dusk-4:#EFB17E;--sky-nite-1:#101A31;--sky-nite-2:#1D3352;--sky-nite-3:#304F70;--sea-dawn-1:#87A9C3;--sea-dawn-2:#6F91AD;--sea-day-1:#72A9CC;--sea-day-2:#4D88B2;--sea-dusk-1:#4F5478;--sea-dusk-2:#343D65;--sea-nite-1:#162D48;--sea-nite-2:#0D2037;--isle:#0A1322;--sun:#FFD070;--turtle:#114429;--sun-glow-core:rgba(255,220,150,.74);--sun-glow-air:rgba(255,170,62,.16);--sun-glow-0:rgba(255,186,88,0);--moon:#EEF4FE;--moon-glow-core:rgba(225,236,255,.52);--moon-glow-air:rgba(174,205,250,.11);--moon-glow-0:rgba(196,218,252,0);--star:#DCE8FA;--tide:#FFFFFF;--hero-title-ink:#050D18;--hero-copy-ink:#0A1625;--hero-edge:transparent;--hero-halo-1:rgba(255,255,255,.34);--hero-halo-2:rgba(255,255,255,.14);--login-card-shadow:0 1px 2px rgba(4,10,22,.22),0 10px 24px -6px rgba(4,10,22,.36),0 34px 72px -18px rgba(4,10,22,.56);--stagger:34ms;--stagger-row:22ms;--lift-1:-1px;--lift-2:-2px;--lift-3:-3px;--bg:var(--n-50);--glow-a:rgba(153,208,239,.18);--glow-b:rgba(146,208,80,.12);--surface:var(--n-0);--surface-2:var(--n-0);--surface-2-glass:rgba(255,255,255,.55);--surface-3:var(--n-50);--surface-hover:var(--n-100);--field:var(--n-25);--field-focus:var(--n-0);--txt:var(--n-900);--txt-2:var(--n-600);--txt-3:#5A677F;--txt-4:#8290A9;--txt-inv:var(--n-0);--line:var(--n-150);--line-2:var(--n-100);--line-3:var(--n-300);--accent:var(--brand-700);--accent-hover:var(--brand-800);--accent-active:var(--brand-900);--accent-solid:var(--brand-700);--accent-solid-hover:var(--brand-800);--accent-solid-active:var(--brand-900);--accent-soft:var(--brand-50);--accent-soft-2:var(--brand-100);--accent-ring:rgba(1,64,153,.13);--nav-bg:var(--brand-700);--nav-fg:var(--n-0);--nav-fg-2:rgba(255,255,255,.72);--nav-line:var(--niu-gold);--nav-hover:rgba(255,255,255,.12);--skeleton-a:var(--n-100);--skeleton-b:var(--n-50);--overlay:rgba(84,62,44,.32);--overlay-solid:rgba(28,22,16,.72);--m-glow-1:rgba(1,64,153,.08);--m-glow-2:rgba(153,208,239,.10);--stick-glass:rgba(245,247,251,.72);--stick-glass-idle:rgba(245,247,251,.40);--ic-chip:transparent;--ic-chip-line:transparent;--logo-plate:transparent;--g-plate:#FFFFFF;--ucan-ink:#014099;--ucan-accent:#108CCF;--rar0-line:#C6CEDC;--rar0-tint:#F1F4F8;--rar0-ink:#5D6A82;--rar1-line:#7FBEE8;--rar1-tint:#E9F4FC;--rar1-ink:#0B6FA4;--rar2-line:#C0ADEF;--rar2-tint:#F3EEFD;--rar2-ink:#5B21B6;--rar3-line:#E0C13C;--rar3-tint:#FFF7D4;--rar3-ink:#7A5E00;--rar2-glow:rgba(126,91,213,.13);--rar3-glow:rgba(222,166,38,.14);--prof-b-bg:#F6E6D5;--prof-b-ink:#7A4A1E;--prof-b-line:#DFC3A4;--prof-s-bg:#EDF1F6;--prof-s-ink:#4C5A6E;--prof-s-line:#C8D2E0;--prof-g-bg:#FCEFC4;--prof-g-ink:#7A5E00;--prof-g-line:#E6CF74;--wash-now:#E9F0FB;--wash-now-ink:#0E4FA8;--wash-past:#EDF0F5;--wash-past-ink:#55627A;--ft-bg:#F1F4F8;--ft-line:#DCE3ED;--ft-ink:#55627A;--hist-soft:#E3F3F3;--hist-line:#B5DCDD;--hist-ink:#0B5B64;--m1-bg:#E7E8FA;--m1-ink:#383C9C;--m2-bg:#DDF1F3;--m2-ink:#0B5F6B;--m3-bg:#ECE6FB;--m3-ink:#5536A8;--m4-bg:#FFF0C7;--m4-ink:#6E5000;--m5-bg:#E7ECF3;--m5-ink:#3C4A60;--m6-bg:#FBE6EF;--m6-ink:#92295B}@media (prefers-color-scheme:dark){:root:not([data-theme="light"]),.login[data-sky="dark"],.login:not([data-sky]){--bg:#0F1A2E;--glow-a:rgba(93,160,220,.10);--glow-b:rgba(146,208,80,.05);--surface:#16233B;--surface-2:#1D2C47;--surface-2-glass:rgba(29,44,71,.55);--surface-3:#121D31;--surface-hover:#223250;--field:#101B2F;--field-focus:#16233B;--txt:#E9EEF7;--txt-2:#B6C2D6;--txt-3:#98A7C0;--txt-4:#808FAB;--txt-inv:#0F1A2E;--line:#2A3A57;--line-2:#223047;--line-3:#3E5177;--accent:#7FB6EE;--accent-hover:#A3CCF5;--accent-active:#C6E0FA;--accent-solid:#1B5FBF;--accent-solid-hover:#2A72D6;--accent-solid-active:#124A9B;--accent-soft:#152A48;--accent-soft-2:#1C3A61;--accent-ring:rgba(127,182,238,.26);--nav-bg:#0B1424;--nav-fg:#E9EEF7;--nav-fg-2:rgba(233,238,247,.68);--nav-line:var(--niu-gold);--nav-hover:rgba(255,255,255,.09);--ok-soft:#123A2C;--ok-line:#1E5D45;--ok-ink:#7EE2B0;--ok-solid:#1E9268;--warn-soft:#3D2E0C;--warn-line:#6B5215;--warn-ink:#F5C86B;--warn-solid:#D08A16;--err-soft:#3E1620;--err-line:#6E2634;--err-ink:#FF9AA5;--err-solid:#D93A47;--info-soft:#102C4D;--info-line:#1D4675;--info-ink:#8FC5F5;--vio-soft:#241C46;--vio-line:#3D3070;--vio-ink:#BFA8F5;--gold-soft:#3A3208;--gold-line:#6B5A10;--gold-ink:#FFE066;--sh-1:0 1px 2px rgba(0,0,0,.34);--sh-2:0 1px 2px rgba(0,0,0,.32),0 4px 12px -3px rgba(0,0,0,.44);--sh-3:0 2px 6px rgba(0,0,0,.36),0 16px 34px -12px rgba(0,0,0,.56);--sh-4:0 6px 14px rgba(0,0,0,.42),0 32px 64px -18px rgba(0,0,0,.66);--skeleton-a:#1B2942;--skeleton-b:#233450;--overlay:rgba(16,26,49,.52);--overlay-solid:rgba(4,9,18,.72);--m-glow-1:rgba(146,186,235,.10);--m-glow-2:rgba(93,160,220,.08);--stick-glass:rgba(15,26,46,.72);--stick-glass-idle:rgba(15,26,46,.40);--ic-chip:rgba(226,236,250,.92);--ic-chip-line:rgba(255,255,255,.16);--logo-plate:#FFFFFF;--turtle:#46966C;--hero-title-ink:#FFFFFF;--hero-copy-ink:#FFFFFF;--hero-edge:rgba(3,9,20,.90);--hero-halo-1:rgba(3,9,20,.94);--hero-halo-2:rgba(3,9,20,.82);--hero-halo-3:rgba(3,9,20,.62);--ucan-ink:#9FC6F2;--ucan-accent:#6FD3F5;--rar0-line:#3D4F71;--rar0-tint:#18233A;--rar0-ink:#9AA9C2;--rar1-line:#2F6E9C;--rar1-tint:#102839;--rar1-ink:#82CCF2;--rar2-line:#4E3E8C;--rar2-tint:#1E1A38;--rar2-ink:#C3ABFB;--rar3-line:#8A7020;--rar3-tint:#2A2309;--rar3-ink:#FFDE6B;--rar2-glow:rgba(173,144,246,.16);--rar3-glow:rgba(255,211,87,.15);--prof-b-bg:#33210F;--prof-b-ink:#E0A874;--prof-b-line:#5C3D1C;--prof-s-bg:#1D2739;--prof-s-ink:#B8C6DA;--prof-s-line:#38475F;--prof-g-bg:#332B08;--prof-g-ink:#FFDE6B;--prof-g-line:#6B5A10;--wash-now:#13233D;--wash-now-ink:#8FC5F5;--wash-past:#131D30;--wash-past-ink:#B6C2D6;--ft-bg:#1A2538;--ft-line:#2C3B56;--ft-ink:#B3BFD3;--hist-soft:#0F3236;--hist-line:#1E5A5F;--hist-ink:#7FD6DC;--m1-bg:#22254F;--m1-ink:#BDC0F7;--m2-bg:#123A40;--m2-ink:#8ADDE4;--m3-bg:#2A2150;--m3-ink:#C9B6FA;--m4-bg:#3A3008;--m4-ink:#FFDE6B;--m5-bg:#243149;--m5-ink:#C3CEDF;--m6-bg:#43182E;--m6-ink:#F7A9CB}}:root[data-theme="dark"],.login[data-sky="dark"]{--bg:#0F1A2E;--glow-a:rgba(93,160,220,.10);--glow-b:rgba(146,208,80,.05);--surface:#16233B;--surface-2:#1D2C47;--surface-2-glass:rgba(29,44,71,.55);--surface-3:#121D31;--surface-hover:#223250;--field:#101B2F;--field-focus:#16233B;--txt:#E9EEF7;--txt-2:#B6C2D6;--txt-3:#98A7C0;--txt-4:#808FAB;--txt-inv:#0F1A2E;--line:#2A3A57;--line-2:#223047;--line-3:#3E5177;--accent:#7FB6EE;--accent-hover:#A3CCF5;--accent-active:#C6E0FA;--accent-solid:#1B5FBF;--accent-solid-hover:#2A72D6;--accent-solid-active:#124A9B;--accent-soft:#152A48;--accent-soft-2:#1C3A61;--accent-ring:rgba(127,182,238,.26);--nav-bg:#0B1424;--nav-fg:#E9EEF7;--nav-fg-2:rgba(233,238,247,.68);--nav-line:var(--niu-gold);--nav-hover:rgba(255,255,255,.09);--ok-soft:#123A2C;--ok-line:#1E5D45;--ok-ink:#7EE2B0;--ok-solid:#1E9268;--warn-soft:#3D2E0C;--warn-line:#6B5215;--warn-ink:#F5C86B;--warn-solid:#D08A16;--err-soft:#3E1620;--err-line:#6E2634;--err-ink:#FF9AA5;--err-solid:#D93A47;--info-soft:#102C4D;--info-line:#1D4675;--info-ink:#8FC5F5;--vio-soft:#241C46;--vio-line:#3D3070;--vio-ink:#BFA8F5;--gold-soft:#3A3208;--gold-line:#6B5A10;--gold-ink:#FFE066;--sh-1:0 1px 2px rgba(0,0,0,.34);--sh-2:0 1px 2px rgba(0,0,0,.32),0 4px 12px -3px rgba(0,0,0,.44);--sh-3:0 2px 6px rgba(0,0,0,.36),0 16px 34px -12px rgba(0,0,0,.56);--sh-4:0 6px 14px rgba(0,0,0,.42),0 32px 64px -18px rgba(0,0,0,.66);--skeleton-a:#1B2942;--skeleton-b:#233450;--overlay:rgba(16,26,49,.52);--overlay-solid:rgba(4,9,18,.72);--m-glow-1:rgba(146,186,235,.10);--m-glow-2:rgba(93,160,220,.08);--stick-glass:rgba(15,26,46,.72);--stick-glass-idle:rgba(15,26,46,.40);--ic-chip:rgba(226,236,250,.92);--ic-chip-line:rgba(255,255,255,.16);--logo-plate:#FFFFFF;--turtle:#46966C;--hero-title-ink:#FFFFFF;--hero-copy-ink:#FFFFFF;--hero-edge:rgba(3,9,20,.90);--hero-halo-1:rgba(3,9,20,.94);--hero-halo-2:rgba(3,9,20,.82);--hero-halo-3:rgba(3,9,20,.62);--ucan-ink:#9FC6F2;--ucan-accent:#6FD3F5;--rar0-line:#3D4F71;--rar0-tint:#18233A;--rar0-ink:#9AA9C2;--rar1-line:#2F6E9C;--rar1-tint:#102839;--rar1-ink:#82CCF2;--rar2-line:#4E3E8C;--rar2-tint:#1E1A38;--rar2-ink:#C3ABFB;--rar3-line:#8A7020;--rar3-tint:#2A2309;--rar3-ink:#FFDE6B;--rar2-glow:rgba(173,144,246,.16);--rar3-glow:rgba(255,211,87,.15);--prof-b-bg:#33210F;--prof-b-ink:#E0A874;--prof-b-line:#5C3D1C;--prof-s-bg:#1D2739;--prof-s-ink:#B8C6DA;--prof-s-line:#38475F;--prof-g-bg:#332B08;--prof-g-ink:#FFDE6B;--prof-g-line:#6B5A10;--wash-now:#13233D;--wash-now-ink:#8FC5F5;--wash-past:#131D30;--wash-past-ink:#B6C2D6;--ft-bg:#1A2538;--ft-line:#2C3B56;--ft-ink:#B3BFD3;--hist-soft:#0F3236;--hist-line:#1E5A5F;--hist-ink:#7FD6DC;--m1-bg:#22254F;--m1-ink:#BDC0F7;--m2-bg:#123A40;--m2-ink:#8ADDE4;--m3-bg:#2A2150;--m3-ink:#C9B6FA;--m4-bg:#3A3008;--m4-ink:#FFDE6B;--m5-bg:#243149;--m5-ink:#C3CEDF;--m6-bg:#43182E;--m6-ink:#F7A9CB}*{box-sizing:border-box;margin:0;padding:0}html{color-scheme:light}:root[data-theme="dark"]{color-scheme:dark}@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){color-scheme:dark}}html{scrollbar-width:thin;scrollbar-color:var(--line-3) transparent}::-webkit-scrollbar{width:9px;height:9px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background-color:var(--line-3);border-radius:var(--r-full);border:2px solid transparent;background-clip:padding-box}::-webkit-scrollbar-thumb:hover{background-color:var(--txt-4);background-clip:padding-box}::-webkit-scrollbar-corner{background:transparent}body{font-family:var(--font-ui);background:var(--bg);color:var(--txt);min-height:100svh;min-height:100dvh;font-size:var(--fs-lg);line-height:1.6;font-feature-settings:"palt" 1;letter-spacing:.01em;text-wrap:pretty;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition:background-color var(--dur-3) var(--ease),color var(--dur-3) var(--ease)}body::before{content:"";position:fixed;top:-200px;left:-200px;width:600px;height:600px;background:radial-gradient(circle,var(--glow-a) 0%,transparent 70%);pointer-events:none;z-index:0}body::after{content:"";position:fixed;bottom:-200px;right:-200px;width:600px;height:600px;background:radial-gradient(circle,var(--glow-b) 0%,transparent 70%);pointer-events:none;z-index:0}.page{position:relative;z-index:1}.page{display:none}.page.active{display:block}:where(a,button,input,select,textarea,summary,[tabindex]):focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--r-xs)}@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;animation-delay:0ms!important;transition-duration:.01ms!important;transition-delay:0ms!important;scroll-behavior:auto!important}:root{--lift-1:0px;--lift-2:0px;--lift-3:0px;--stagger:0ms;--stagger-row:0ms}.course-card:hover,.asg-row:hover,.skill-pill:hover,.ucan-pill:hover{transform:none}.modal-overlay.show>.modal{animation-name:m-fade-in!important}.m-closing>.modal{animation-name:m-fade-out!important}.gtip{animation:none!important}}:where(input[type="text"],input[type="password"],input[type="email"],input[type="number"],input[type="search"],input[type="file"],input:not([type]),textarea){font-family:inherit;font-size:var(--fs-base);color:var(--txt);background:var(--field);border:1px solid var(--line);border-radius:var(--r-sm)}:where(input,textarea)::placeholder{color:var(--txt-3)}input[type="checkbox"],input[type="radio"]{accent-color:var(--accent-solid)}hr{border:none;border-top:1px solid var(--line-2)}.brand-logo{background:var(--logo-plate);padding:var(--sp-2) var(--sp-3);border-radius:var(--r-sm)}nav{background:var(--nav-bg);color:var(--nav-fg);padding:var(--sp-3) var(--sp-8);display:flex;align-items:center;gap:var(--sp-4);position:sticky;top:0;z-index:100;box-shadow:var(--sh-1);border-bottom:1px solid var(--nav-line)}.logo{font-weight:700;font-size:var(--fs-md);letter-spacing:.04em;display:flex;align-items:center;gap:10px;color:var(--nav-fg);margin-right:auto}.logo img{transition:opacity var(--dur-2) var(--ease);opacity:.95}.logo-mark{display:block;width:38px;height:34px;flex:0 0 38px;object-fit:contain}.logo:hover img{opacity:1}.user-info{display:flex;align-items:center;gap:var(--sp-2);font-size:var(--fs-base)}.logout-btn{background:var(--err-solid);color:var(--on-solid);border:none;padding:var(--sp-2) var(--sp-4);border-radius:var(--r-sm);cursor:pointer;font-size:var(--fs-md);font-weight:600}.logout-btn:hover{filter:brightness(.9)}.g-bind-btn{background:var(--surface);color:var(--txt);border:1px solid var(--line);padding:var(--sp-2) var(--sp-3);border-radius:var(--r-sm);cursor:pointer;font-size:var(--fs-sm);font-weight:600;display:inline-flex;align-items:center;gap:var(--sp-1)}.g-bind-btn:hover{background:var(--surface-hover)}.g-bind-btn.bound{background:var(--ok-soft);border-color:var(--ok-line);color:var(--ok-ink)}.acct{position:relative;display:inline-block}.acct-btn{display:flex;align-items:center;gap:var(--sp-2);padding:5px 10px 5px 5px;border-radius:var(--r-full);background:var(--nav-hover);border:1px solid transparent;color:var(--nav-fg);font-family:inherit;font-size:var(--fs-base);font-weight:600;cursor:pointer;transition:background var(--dur-1) var(--ease),border-color var(--dur-1) var(--ease);max-width:230px}.acct-btn:hover{background:rgba(255,255,255,.2);border-color:rgba(255,255,255,.24)}.acct-btn[aria-expanded="true"]{background:rgba(255,255,255,.22);border-color:var(--nav-line)}.acct-ava{flex:0 0 auto;width:28px;height:28px;border-radius:var(--r-full);background:var(--niu-gold);color:var(--brand-900);display:flex;align-items:center;justify-content:center;font-size:var(--fs-base);font-weight:700;line-height:1;letter-spacing:0}.acct-nm{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.acct-caret{width:.9em;height:.9em;opacity:.75;transition:transform var(--dur-2) var(--ease)}.acct-btn[aria-expanded="true"] .acct-caret{transform:rotate(180deg)}.acct-wrap{position:relative;display:flex;align-items:center}.acct-menu{position:absolute;top:calc(100% + 10px + 10px);right:0;width:min(268px,calc(100vw - env(safe-area-inset-left) - env(safe-area-inset-right) - 16px));max-height:calc(100svh - var(--nav-safe-h) - var(--safe-bottom) - var(--sp-2));max-height:calc(100dvh - var(--nav-safe-h) - var(--safe-bottom) - var(--sp-2));overflow-y:auto;overscroll-behavior:contain;background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--sh-4);padding:var(--sp-2);z-index:300;opacity:0;transform:translateY(-6px) scale(.96);pointer-events:none;transform-origin:top right;visibility:hidden;transition:opacity var(--dur-0) var(--ease-in-out),transform var(--dur-0) var(--ease-in-out),visibility 0s linear var(--dur-0);color:var(--txt);text-align:left}body.as-student .acct-menu{top:calc(100% + 10px + 10px + var(--as-bar-h) + 1px)}.acct-menu.open{opacity:1;transform:none;pointer-events:auto;visibility:visible;transition:opacity var(--dur-2) var(--ease-out),transform var(--dur-2) var(--ease-out),visibility 0s linear 0s}.acct-id{padding:var(--sp-3) var(--sp-3) var(--sp-3);display:flex;gap:var(--sp-3);align-items:center}.acct-id .acct-ava{width:38px;height:38px;font-size:var(--fs-xl)}.acct-id-txt{min-width:0;flex:1}.acct-id .n{font-size:var(--fs-lg);font-weight:700;color:var(--txt);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:1.35}.acct-id .u{font-size:var(--fs-xs);color:var(--txt-3);font-family:var(--font-mono);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.acct-role{display:inline-block;margin-top:3px;font-size:var(--fs-2xs);font-weight:700;padding:2px 8px;border-radius:var(--r-full);background:var(--accent-soft);color:var(--accent);border:1px solid var(--accent-soft-2)}.acct-sep{height:1px;background:var(--line-2);margin:var(--sp-2) 6px}.acct-sec{font-size:var(--fs-2xs);font-weight:700;letter-spacing:1px;color:var(--txt-3);padding:2px 10px 6px}.acct-item{width:100%;display:flex;align-items:center;gap:var(--sp-3);padding:9px 10px;border:none;border-radius:var(--r-sm);background:transparent;color:var(--txt);font-family:inherit;font-size:var(--fs-base);font-weight:500;text-align:left;cursor:pointer;transition:background var(--dur-1) var(--ease),color var(--dur-1) var(--ease)}.acct-item .ic{color:var(--txt-3);transition:color var(--dur-1) var(--ease)}.acct-item:hover{background:var(--surface-hover)}.acct-item:hover .ic{color:var(--accent)}.acct-item .acct-item-sub{margin-left:auto;font-size:var(--fs-xs);color:var(--txt-3);font-weight:600}.acct-item.danger{color:var(--err-ink)}.acct-item.danger .ic{color:var(--err-ink)}.acct-item.danger:hover{background:var(--err-soft)}.thm{padding:2px 10px 8px}.thm-seg{display:grid;grid-template-columns:repeat(3,1fr);gap:2px;background:var(--surface-3);border:1px solid var(--line);border-radius:var(--r-sm);padding:3px}.thm-seg button{display:flex;flex-direction:column;align-items:center;gap:3px;padding:7px 2px;border:none;border-radius:6px;background:transparent;color:var(--txt-3);font-family:inherit;font-size:var(--fs-2xs);font-weight:600;cursor:pointer;transition:background var(--dur-1) var(--ease),color var(--dur-1) var(--ease)}.thm-seg button .ic{width:1.15em;height:1.15em;vertical-align:0}.thm-seg button:hover{color:var(--txt);background:var(--surface-hover)}.thm-seg button.on{background:var(--accent-solid);color:var(--on-solid);box-shadow:var(--sh-1)}.thm-seg button.on:hover{background:var(--accent-solid-hover);color:var(--on-solid)}.gtip-anchor{position:relative;flex:0 0 auto;width:0;align-self:stretch;margin-left:calc(var(--sp-2) * -1)}.gtip-anchor[hidden]{display:none}.gtip{position:absolute;top:calc(100% + 10px);right:0;width:min(20rem,calc(100vw - var(--sp-8) - var(--sp-8)));background:var(--surface-2);color:var(--txt);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--sh-3);padding:var(--sp-4);z-index:5;text-align:left;font-size:var(--fs-sm);line-height:1.5;animation:m-rise-sm var(--dur-2) var(--ease-out) both;pointer-events:none}.gtip::before{content:'';position:absolute;top:-6px;right:var(--sp-5);width:11px;height:11px;background:var(--surface-2);border-left:1px solid var(--line);border-top:1px solid var(--line);transform:rotate(45deg);border-radius:2px}.gtip-t{display:flex;align-items:center;gap:var(--sp-2);font-size:var(--fs-base);font-weight:700;color:var(--txt)}.gtip-t .ic{color:var(--accent)}.gtip-d{margin:var(--sp-2) 0 var(--sp-1);color:var(--txt-2)}.gtip-b{margin:0;padding-left:var(--sp-5);color:var(--txt-2)}.gtip-b li{margin:2px 0}.gtip-b li[hidden]{display:none}.gtip-w{margin:var(--sp-2) 0 0;color:var(--txt-3);font-size:var(--fs-xs)}.gtip-act{display:flex;gap:var(--sp-2);margin-top:var(--sp-3)}.gtip-act button{pointer-events:auto;flex:1 1 0;min-width:0;border-radius:var(--r-sm);font-family:inherit;font-size:var(--fs-sm);font-weight:600;cursor:pointer;transition:background var(--dur-1) var(--ease),color var(--dur-1) var(--ease),border-color var(--dur-1) var(--ease)}.gtip-go{background:var(--accent-solid);color:var(--on-solid);border:1px solid transparent}.gtip-go:hover{background:var(--accent-solid-hover)}.gtip-ok{background:var(--surface);color:var(--txt-2);border:1px solid var(--line)}.gtip-ok:hover{background:var(--surface-hover);color:var(--txt)}.auth-shell{display:flex;align-items:center;justify-content:center;min-height:100svh;min-height:100dvh;padding:var(--sp-6)}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:var(--sp-10) var(--sp-10);box-shadow:var(--sh-2);width:100%;max-width:440px;position:relative}.card::before{content:"";position:absolute;top:0;left:0;right:0;height:2px;background:var(--accent);border-radius:var(--r-lg) var(--r-lg) 0 0}.auth-brand{display:flex;align-items:center;gap:var(--sp-3);margin-bottom:var(--sp-5);padding-bottom:var(--sp-4);border-bottom:1px solid var(--line)}.auth-brand img{width:30px;height:30px;padding:4px;object-fit:contain;background:var(--logo-plate);border-radius:9px;flex:0 0 auto}.auth-brand span{font-size:var(--fs-sm);font-weight:600;color:var(--txt-3);line-height:1.35}.card h2{margin-bottom:var(--sp-6);font-size:1.4rem;color:var(--txt);font-weight:600;letter-spacing:1px;line-height:1.3}.card label{display:block;margin-bottom:7px;font-weight:600;font-size:var(--fs-md);color:var(--txt-2);letter-spacing:.5px;text-transform:uppercase}.card input{width:100%;padding:11px 14px;border:1px solid var(--line);border-radius:var(--r-sm);font-size:var(--fs-lg);margin-bottom:var(--sp-5);font-family:inherit;background:var(--field);color:var(--txt);transition:border-color var(--dur-1) var(--ease),background-color var(--dur-1) var(--ease),box-shadow var(--dur-1) var(--ease)}.card input::placeholder{color:var(--txt-3)}.card input:hover{border-color:var(--line-3)}.card input:focus{outline:none;border-color:var(--accent);background:var(--field-focus);box-shadow:0 0 0 3px var(--accent-ring)}.btn-primary{width:100%;padding:13px;background:var(--accent-solid);color:var(--on-solid);border:none;border-radius:var(--r-sm);font-size:var(--fs-lg);font-weight:600;cursor:pointer;letter-spacing:1.5px;font-family:inherit;transition:background var(--dur-1) var(--ease),box-shadow var(--dur-1) var(--ease),transform var(--dur-1) var(--ease-out);box-shadow:var(--sh-1)}.btn-primary:hover{background:var(--accent-solid-hover);box-shadow:var(--sh-2);transform:translateY(var(--lift-1))}.btn-primary:active{background:var(--accent-solid-active);transform:translateY(0);box-shadow:var(--sh-1);transition-duration:var(--dur-0)}.btn-primary:disabled{opacity:.55;cursor:not-allowed;box-shadow:none;transform:none}.btn-secondary{padding:10px 20px;background:var(--surface);color:var(--txt-2);border:1px solid var(--line);border-radius:var(--r-sm);font-size:var(--fs-base);font-weight:600;cursor:pointer;font-family:inherit;transition:background var(--dur-1) var(--ease),border-color var(--dur-1) var(--ease),color var(--dur-1) var(--ease),transform var(--dur-1) var(--ease-out)}.btn-secondary:hover{background:var(--surface-hover);border-color:var(--line-3);color:var(--txt);transform:translateY(var(--lift-1))}.btn-secondary:active{transform:translateY(0);transition-duration:var(--dur-0)}.auth-stack{display:flex;flex-direction:column;gap:var(--sp-2);max-width:360px;margin:0 auto}.login-public-links{position:absolute;right:max(22px,env(safe-area-inset-right));bottom:max(15px,env(safe-area-inset-bottom));z-index:3;display:flex;align-items:center;gap:0;padding:0;background:transparent;border:0;box-shadow:none;color:var(--hero-copy-ink);opacity:.62;transition:opacity var(--dur-1) var(--ease)}.login-public-links:hover,.login-public-links:focus-within{opacity:1}.login-public-links a{color:inherit;font-size:var(--fs-2xs);font-weight:600;line-height:1.5;text-decoration:none;text-underline-offset:3px}.login-public-links a+a::before{content:"·";display:inline-block;margin:0 9px;color:inherit;text-decoration:none}.login-public-links a:hover{text-decoration:underline}.auth-slot{width:100%;min-height:40px;display:flex}.auth-slot>div{width:100%}.auth-btn{width:100%;height:40px;box-sizing:border-box;display:flex;align-items:center;gap:10px;padding:0 12px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-xs);font-family:inherit;font-size:var(--fs-base);font-weight:500;color:var(--txt-2);cursor:pointer;transition:background var(--dur-2) var(--ease),box-shadow var(--dur-2) var(--ease),border-color var(--dur-2) var(--ease)}.auth-btn:hover{background:var(--surface-hover);box-shadow:var(--sh-1)}.auth-btn:hover{transform:translateY(var(--lift-1))}.auth-btn:active{background:var(--surface-3);transform:translateY(0);transition-duration:var(--dur-0)}.auth-ico{flex:0 0 18px;display:flex;align-items:center;justify-content:center}.auth-ico .ic{width:18px;height:18px}.auth-label{flex:1;text-align:center;padding-right:18px}.auth-activate{border-color:var(--accent);color:var(--accent);font-weight:700}.auth-activate:hover{background:var(--accent-soft);border-color:var(--accent)}.admin-corner{position:fixed;right:max(14px,env(safe-area-inset-right));bottom:max(12px,env(safe-area-inset-bottom));z-index:20;display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-1);font-size:var(--fs-xs);color:var(--txt-4);text-decoration:none;padding:var(--sp-1) var(--sp-2);border-radius:var(--r-xs);transition:color var(--dur-2) var(--ease),background var(--dur-2) var(--ease)}.admin-corner:hover,.admin-corner:focus-visible{color:var(--txt-2);background:var(--surface-hover)}.admin-corner .ic{width:11px;height:11px}@media (max-width:480px){.admin-corner{right:max(8px,env(safe-area-inset-right));bottom:max(8px,env(safe-area-inset-bottom))}}.error-msg{color:var(--err-ink);font-size:var(--fs-base);margin-top:var(--sp-2);display:none;line-height:1.55}.error-msg.show{display:block}.treg-mail-row{display:flex;align-items:stretch;gap:var(--sp-2);margin-bottom:var(--sp-5)}.treg-mail-row>input{flex:1 1 auto;min-width:0;margin-bottom:0}.treg-mail-suffix{display:flex;align-items:center;flex:0 0 auto;padding:0 var(--sp-3);border:1px solid var(--line-2);border-radius:var(--r-sm);background:var(--surface-3);color:var(--txt-3);font-size:var(--fs-base);white-space:nowrap}.treg-mail-suffix select{border:0;background:transparent;color:inherit;font-size:inherit;padding:0;margin:0}.treg-mail-preview{display:none;font-size:var(--fs-sm);color:var(--txt-3);margin-top:var(--sp-2);word-break:break-all}.treg-mail-preview.show{display:block}.treg-mail-preview.err{color:var(--err-ink)}.act-countdown{display:none;font-size:var(--fs-sm);color:var(--txt-3);margin-top:var(--sp-2);line-height:1.55}.act-countdown.show{display:block}.act-countdown.warn{color:var(--err-ink);font-weight:600}.ic{width:1.25em;height:1.25em;vertical-align:-.22em;flex:0 0 auto;color:inherit}.tab-btn .ic{margin-right:6px;opacity:.72;transition:opacity var(--dur-1) var(--ease)}.tab-btn:hover .ic,.tab-btn.active .ic{opacity:1}.btn-primary .ic,.btn-secondary .ic{margin-right:7px;vertical-align:-.14em}@supports (corner-shape:squircle){.card,.modal,.acct-menu,.pdf-modal-content,.course-card,.asg-row,.ucan-card,.skc,.cw-todo-row,.arc-dz,#coursesPage .tb-add-btn,#coursesPage .cs-trigger,#coursesPage .tb-search,#coursesPage .pill-group .pill,#courseDetail .btn-secondary,#courseDetail .upload-btn,#courseDetail .uc-act,#courseDetail .asg-back,#courseDetail .save-score-btn,#courseDetail .upload-zone,#courseDetail .join-mode-option,#mySkillsPage .pill-group .pill,#mySkillsPage .btn-secondary,#mySkillsPage .uc-act,#mySkillsPage .ms-xref-go,.join-xp-core,.join-xp-node,.join-xp-benefits span,.join-xp-install,.join-xp-install-icon,.join-xp-install-icon img,.pwa-ios-guide,.pwa-ios-inapp,.pwa-ios-figure,.pwa-browser-guide,.pwa-browser-menu,.passkey-modal,.pk-orbit span,.pk-safety,.pk-device,.pk-device-icon,.pk-empty,.pwa-nudge,.pwa-nudge img{corner-shape:squircle}.gb-num,.gb-dot,.acct-ava{corner-shape:round}}.gb{text-align:left}.gb-state{display:flex;align-items:center;gap:9px;padding:11px 14px;border-radius:var(--r-sm);font-size:var(--fs-base);line-height:1.55;background:var(--surface-3);color:var(--txt-2);border:1px solid var(--line);margin-bottom:var(--sp-5)}.gb-state.is-bound{background:var(--ok-soft);border-color:var(--ok-line);color:var(--ok-ink)}.gb-state .gb-dot{width:7px;height:7px;border-radius:var(--r-full);background:var(--txt-4);flex:0 0 auto}.gb-state.is-bound .gb-dot{background:var(--ok-solid)}.gb-state b{display:block;font-weight:600;color:var(--txt);word-break:break-all}.gb-step{display:flex;gap:var(--sp-3);margin-bottom:var(--sp-5)}.gb-step:last-of-type{margin-bottom:var(--sp-1)}.gb-num{flex:0 0 auto;width:22px;height:22px;border-radius:var(--r-full);background:var(--accent-solid);color:var(--on-solid);font-size:var(--fs-xs);font-weight:600;line-height:22px;text-align:center;margin-top:1px}.gb-step.is-done .gb-num{background:var(--ok-solid);color:var(--on-solid)}.gb-body{flex:1;min-width:0}.gb-title{font-size:var(--fs-base);font-weight:600;color:var(--txt);margin-bottom:3px}.gb-hint{font-size:var(--fs-sm);color:var(--txt-3);line-height:1.55;margin-bottom:10px}.gb-body input{width:100%;padding:11px 14px;border:1px solid var(--line);border-radius:var(--r-sm);font-size:var(--fs-lg);background:var(--field);color:var(--txt);font-family:inherit;transition:border-color var(--dur-1) var(--ease),background-color var(--dur-1) var(--ease),box-shadow var(--dur-1) var(--ease)}.gb-body input:hover{border-color:var(--line-3)}.gb-body input:focus{outline:none;border-color:var(--accent);background:var(--field-focus);box-shadow:0 0 0 3px var(--accent-ring)}.gb-gbtn{display:flex;justify-content:flex-start}.gb-gbtn.is-locked{opacity:.45;pointer-events:none;filter:grayscale(1)}.gb-danger{margin-top:var(--sp-6);padding-top:var(--sp-4);border-top:1px solid var(--line-2);display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3)}.gb-danger span{font-size:var(--fs-sm);color:var(--txt-3);line-height:1.5}.gb-danger button{flex:0 0 auto;padding:var(--sp-2) 15px;border-radius:var(--r-sm);cursor:pointer;font-size:var(--fs-md);font-weight:600;font-family:inherit;background:var(--surface);color:var(--err-ink);border:1px solid var(--err-line);transition:background var(--dur-1) var(--ease),border-color var(--dur-1) var(--ease)}.gb-danger button:hover{background:var(--err-soft);border-color:var(--err-solid)}body:has(#homePage.active){overflow:hidden}body:has(#homePage.active)::before,body:has(#homePage.active)::after{display:none}.login{height:100svh;height:100dvh;min-height:100svh;min-height:100dvh;background:var(--bg);position:relative;overflow:hidden}.login-content{position:relative;z-index:1;width:100%;max-width:1440px;height:100%;min-height:0;margin:0 auto;display:grid;grid-template-columns:minmax(0,1.04fr) minmax(0,.96fr);overflow-x:hidden;overflow-y:auto;overscroll-behavior-y:contain;scrollbar-gutter:stable}.lg-id{padding:max(52px,env(safe-area-inset-top)) 54px max(28px,env(safe-area-inset-bottom));padding-left:max(54px,env(safe-area-inset-left));display:flex;flex-direction:column;position:relative}.lg-id .plate{width:72px;height:65px;padding:3px;object-fit:contain;background:var(--n-0);border-radius:17px;box-shadow:var(--sh-1);margin-bottom:24px}.login.sky .lg-id h1{font-size:clamp(28px,3.4vw,40px);font-weight:700;line-height:1.14;letter-spacing:-.028em;color:var(--hero-title-ink);paint-order:stroke fill;-webkit-text-stroke:.9px var(--hero-edge)}.login.sky .lg-id .sys{font-size:clamp(15px,1.8vw,21px);font-weight:700;line-height:1.35;letter-spacing:-.012em;color:var(--hero-title-ink);margin-top:9px;paint-order:stroke fill;-webkit-text-stroke:.65px var(--hero-edge)}.login.sky .lg-id .en{font-size:clamp(11.5px,1.05vw,12.5px);font-weight:600;line-height:1.55;letter-spacing:.035em;color:var(--hero-copy-ink);margin-top:22px;paint-order:stroke fill;-webkit-text-stroke:.28px var(--hero-edge)}.login.sky[data-sky="light"] .lg-id h1,.login.sky[data-sky="light"] .lg-id .sys,.login.sky[data-sky="light"] .lg-id .en{paint-order:normal;-webkit-text-stroke-color:transparent;text-shadow:0 0 1px var(--hero-halo-1),0 0 2px var(--hero-halo-2)}.login.sky[data-sky="light"] .lg-id h1{letter-spacing:-.018em}.login.sky[data-sky="light"] .lg-id .sys{letter-spacing:0}.login.sky[data-sky="dark"] .lg-id h1,.login.sky[data-sky="dark"] .lg-id .sys,.login.sky[data-sky="dark"] .lg-id .en{text-shadow:0 1px 1px var(--hero-halo-1),0 0 3px var(--hero-halo-2),0 0 7px var(--hero-halo-3)}.lg-fm{display:grid;place-items:center;min-width:0;padding:40px max(54px,env(safe-area-inset-right)) max(72px,calc(40px + env(safe-area-inset-bottom))) 54px}.login .card{width:100%;max-width:392px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--login-card-shadow);padding:34px 32px 30px}.login .card::before{display:none}.login .card h2{font-size:21px;font-weight:600;letter-spacing:-.014em;color:var(--txt);margin:0}.login .login-copy{font-size:var(--fs-sm);color:var(--txt-2);margin:5px 0 24px}.login .card label{display:block;font-size:var(--fs-sm);font-weight:600;color:var(--txt-2);margin-bottom:7px;text-transform:none;letter-spacing:0}.login .card input{border-radius:var(--r-xs)}.login-password-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.login-password-head a{min-width:44px;min-height:44px;margin:-11px 0 -11px 8px;padding:0 4px;display:inline-flex;align-items:center;justify-content:flex-end;font-size:var(--fs-sm);color:var(--txt-2);text-decoration:none;text-underline-offset:3px}.login-password-head a:hover{text-decoration:underline}.login #loginErr{margin:-8px 0 12px}.login #loginBtn{margin-top:2px}.login-noscript{margin-top:var(--sp-3);color:var(--err-ink);font-size:var(--fs-sm);line-height:1.5}.login .or{display:flex;align-items:center;gap:12px;margin:20px 0 16px;font-size:var(--fs-xs);color:var(--txt-2)}.login .or::before,.login .or::after{content:"";flex:1;height:1px;background:var(--line)}.auth-shell{position:relative;min-height:100svh;min-height:100dvh;background:transparent}.auth-shell .card{position:relative;z-index:2;border:1px solid var(--line);background:var(--surface);box-shadow:var(--sh-4);padding:var(--sp-12) 44px var(--sp-10);font-family:var(--font-latin)}.auth-shell .card::before{display:none}.auth-shell .card h2{color:var(--accent);font-weight:700;font-size:var(--fs-3xl);letter-spacing:1px}.auth-shell .card label{text-transform:none;letter-spacing:0;font-size:var(--fs-base);color:var(--txt-2)}.auth-shell .card input{border-radius:var(--r-xs)}.auth-shell .card a{color:var(--accent)}.auth-shell .card a:hover{color:var(--accent-hover);text-decoration:underline}.scene{position:absolute;inset:0;z-index:0;pointer-events:none;--cycle:var(--dur-sky);--phase:0s}.scene svg{display:block;width:100%;height:100%;shape-rendering:geometricPrecision}.scene .stage{transform-box:view-box;transform-origin:600px 700px}.scene .isle{fill:var(--isle)}.scene .sun .disc{fill:var(--sun)}.scene .moon .disc{fill:var(--moon)}.scene .star{fill:var(--star)}.scene .tide path{fill:none;stroke:var(--tide);stroke-width:2;stroke-linecap:round}.scene .bloom-core{opacity:.94}.scene .bloom-air{opacity:.72}.scene .sea-n{fill:url(#oceanNite)}.scene .sea.dawn{fill:url(#oceanDawn)}.scene .sea.day{fill:url(#oceanDay)}.scene .sea.dusk{fill:url(#oceanDusk)}.scene .dawn{opacity:1}.scene .day,.scene .dusk,.scene .stars,.scene .moon{opacity:0}.scene .sun{opacity:1}.scene .sun,.scene .moon{transform:translate(0,0)}.scene .t1{opacity:.7;stroke-width:2.4}.scene .t2{opacity:.55}.scene .t3{opacity:.45}:root[data-theme="dark"] .scene{--phase:180s}:root[data-theme="dark"] .scene .dawn,:root[data-theme="dark"] .scene .sun{opacity:0}:root[data-theme="dark"] .scene .stars,:root[data-theme="dark"] .scene .moon{opacity:1}@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .scene{--phase:180s}:root:not([data-theme="light"]) .scene .dawn,:root:not([data-theme="light"]) .scene .sun{opacity:0}:root:not([data-theme="light"]) .scene .stars,:root:not([data-theme="light"]) .scene .moon{opacity:1}}.login.dressing,.login.dressing *,.login.dressing *::before,.login.dressing *::after{transition:background-color var(--dur-dress) var(--ease-in-out),border-color var(--dur-dress) var(--ease-in-out),color var(--dur-dress) var(--ease-in-out),fill var(--dur-dress) var(--ease-in-out),stroke var(--dur-dress) var(--ease-in-out),box-shadow var(--dur-dress) var(--ease-in-out),opacity var(--dur-dress) var(--ease-in-out)!important}.login.quiet .scene *{animation-play-state:paused}.scene .egg-lane{--egg-dir:1;transform-box:view-box;transform-origin:600px 700px;transform:scaleX(var(--egg-dir)) translate(600px,510px)}.scene .egg-turtle{fill:var(--turtle);opacity:0;transform-box:view-box;transform-origin:0 0}@keyframes skyDawnCycle{0%,16%{opacity:1}25%,91%{opacity:0}100%{opacity:1}}@keyframes skyDayCycle{0%{opacity:0}16%,50%{opacity:1}58%,100%{opacity:0}}@keyframes skyDuskCycle{0%,33%{opacity:0}50%,66%{opacity:1}75%,100%{opacity:0}}@keyframes skyStarsCycle{0%,58%{opacity:0}70%,88%{opacity:1}96%,100%{opacity:0}}@keyframes skySunArc{0%{transform:translate(0,0)}25%{transform:translate(208px,-334px)}50%{transform:translate(288px,10px)}56%{transform:translate(318px,48px)}64%{transform:translate(348px,250px)}72%,86%{transform:translate(0,250px)}100%{transform:translate(0,0)}}@keyframes skySunLit{0%,56%{opacity:1}66%,84%{opacity:0}90%,100%{opacity:1}}@keyframes skyMoonArc{0%,40%{transform:translate(140px,506px)}46%{transform:translate(-118px,290px)}58%{transform:translate(-54px,152px)}75%{transform:translate(0,0)}88%{transform:translate(62px,134px)}96%{transform:translate(110px,290px)}100%{transform:translate(140px,506px)}}@keyframes skyMoonLit{0%,46%{opacity:0}58%,90%{opacity:1}97%,100%{opacity:0}}@keyframes skyTide{from{transform:translateX(-13px);opacity:.3}to{transform:translateX(13px);opacity:.85}}@keyframes skyHeroEnter{from{opacity:0;transform:translateY(15px)}to{opacity:1;transform:translateY(0)}}@keyframes eggSwim{0%{opacity:0;transform:translate(-80px,18px) scale(2.4)}7%{opacity:.55;transform:translate(-77px,14px) scale(2.4)}14%{opacity:.92;transform:translate(-72px,10px) scale(2.4)}25%{opacity:.92;transform:translate(-46px,10.6px) scale(2.21)}36%{opacity:.92;transform:translate(-20px,6.4px) scale(2.02)}47%{opacity:.92;transform:translate(6px,6.9px) scale(1.83)}58%{opacity:.92;transform:translate(31px,2.4px) scale(1.65)}69%{opacity:.92;transform:translate(57px,2.7px) scale(1.46)}80%{opacity:.92;transform:translate(83px,-1.6px) scale(1.27)}90%{opacity:.6;transform:translate(107px,-5.6px) scale(1.09)}100%{opacity:0;transform:translate(130px,-9px) scale(0.92)}}@media (prefers-reduced-motion:no-preference){#homePage.active .login.live .scene .dawn,#homePage.active .login.live .scene .day,#homePage.active .login.live .scene .dusk,#homePage.active .login.live .scene .stars,#homePage.active .login.live .scene .sun,#homePage.active .login.live .scene .moon{animation-duration:var(--cycle);animation-timing-function:linear;animation-iteration-count:infinite;animation-delay:calc(-1 * var(--phase))}#homePage.active .login.live .scene .dawn{animation-name:skyDawnCycle}#homePage.active .login.live .scene .day{animation-name:skyDayCycle}#homePage.active .login.live .scene .dusk{animation-name:skyDuskCycle}#homePage.active .login.live .scene .stars{animation-name:skyStarsCycle}#homePage.active .login.live .scene .sun{animation-name:skySunArc,skySunLit}#homePage.active .login.live .scene .moon{animation-name:skyMoonArc,skyMoonLit}#homePage.active .login.live .scene .t1,#homePage.active .login.live .scene .t2,#homePage.active .login.live .scene .t3{animation-name:skyTide;animation-duration:var(--dur-tide);animation-timing-function:var(--ease-in-out);animation-iteration-count:infinite;animation-direction:alternate}#homePage .login .card,#homePage .login .lg-id{animation-name:skyHeroEnter;animation-duration:var(--dur-hero);animation-timing-function:var(--ease-out);animation-fill-mode:both}#homePage.active .login.live.egg .scene .egg-turtle{animation-name:eggSwim;animation-duration:var(--dur-egg);animation-timing-function:linear;animation-iteration-count:1}#homePage .login .card{animation-delay:var(--delay-hero-card)}#homePage .login .lg-id{animation-delay:var(--delay-hero-id)}}@media (max-width:900px){.login-content{grid-template-columns:1fr;align-content:start}.lg-id{align-items:center;text-align:center;padding:max(20px,env(safe-area-inset-top)) max(24px,env(safe-area-inset-right)) 0 max(24px,env(safe-area-inset-left))}.lg-id .plate{width:58px;height:52px;border-radius:14px;margin-bottom:12px}.login.sky .lg-id h1{font-size:28px}.login.sky .lg-id .sys{font-size:15px;margin-top:5px}.login.sky .lg-id .en{font-size:11.5px;margin-top:7px}.lg-fm{place-items:start center;padding:22px max(20px,env(safe-area-inset-right)) max(72px,calc(34px + env(safe-area-inset-bottom))) max(20px,env(safe-area-inset-left))}.login-public-links{left:50%;right:auto;bottom:max(14px,env(safe-area-inset-bottom));transform:translateX(-50%);white-space:nowrap}}@media (max-width:430px){.login .card{padding:27px 22px 24px}}@media (min-width:901px) and (min-aspect-ratio:1/1){.scene .stage{transform:translateX(-170px)}}@media (min-width:901px) and (max-aspect-ratio:99/100){.scene .stage{transform:translateX(-114px) scale(.82)}}@media (max-width:900px) and (min-height:961px){.scene .stage{transform:translateY(35px) scale(.82)}}@media (max-width:900px) and (min-height:521px) and (max-height:960px){.scene .stage{transform:translateY(143px) scale(.86)}}@media (max-width:900px) and (min-height:521px) and (max-height:700px){.login:has(.login-content.lg-v3) .scene .stage{transform:translateY(128px) scale(.76)}}@media (max-width:900px) and (max-height:520px){.scene .stage{transform:translateX(-445px) scale(.86)}}.lg-v3 .lg-fm .card.lg-card{max-width:clamp(24.5rem,19vw,29rem)}.lg-v3 .lg-legacy>.card{max-width:none;margin-top:var(--sp-4);padding:0;border:0;background:transparent;box-shadow:none}.lg-v3 .lg-legacy .auth-passkey,.lg-v3 .lg-legacy #g_signin_btn,.lg-v3 .lg-legacy .or{display:none}.lg-v3 .lg-view[hidden]{display:none}.lg-v3 .lg-quiet{min-height:44px;display:inline-flex;align-items:center;gap:var(--sp-1);padding:0 var(--sp-2);border:0;background:transparent;cursor:pointer;font:inherit;font-size:var(--fs-xs);color:var(--txt-3);border-radius:var(--r-sm)}.lg-v3 .lg-quiet:hover{color:var(--txt-2);text-decoration:underline;text-underline-offset:3px}.lg-v3 .lg-quiet[hidden]{display:none}.lg-v3 .lg-quiet.lg-forgot{display:flex;width:max-content;max-width:100%;margin:var(--sp-1) auto 0}.lg-v3 .lg-quiet.lg-forgot[hidden]{display:none}.lg-v3 .lg-back{margin:calc(var(--sp-2) * -1) 0 var(--sp-2) calc(var(--sp-2) * -1);color:var(--txt-2)}.lg-v3 .lg-back .ic{width:1rem;height:1rem;transform:rotate(90deg)}.lg-v3 .lg-more{display:grid;gap:1px;margin-top:0;background:var(--line-2)}.lg-v3 .lg-more[hidden]{display:none}.lg-v3 .lg-more-item{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:2px;width:100%;min-height:44px;padding:var(--sp-2) var(--sp-3);border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface);color:var(--txt);font:inherit;text-align:left;cursor:pointer}.lg-v3 .lg-more-item:hover{border-color:var(--accent);background:var(--accent-soft)}.lg-v3 .lg-more-item[hidden]{display:none}.lg-v3 .lg-more-item.working{opacity:.64;cursor:wait}.lg-v3 .lg-more-t{font-size:var(--fs-sm);font-weight:400;line-height:1.4}.lg-v3 .lg-more-row{position:relative;background:var(--surface)}.lg-v3 .lg-more-row.lg-tone-a{--lg-tone:var(--accent);--lg-tone-bg:var(--accent-soft);--lg-tone-ink:var(--accent)}.lg-v3 .lg-more-row.lg-tone-b{--lg-tone:var(--niu-gold);--lg-tone-bg:var(--niu-gold);--lg-tone-ink:var(--brand-900)}.lg-v3 .lg-more-row.lg-tone-c{--lg-tone:var(--ok-solid);--lg-tone-bg:var(--ok-soft);--lg-tone-ink:var(--ok-solid)}.lg-v3 .lg-more-row:has(>.lg-more-item[hidden]){display:none}.lg-v3 .lg-more-row .lg-more-item{flex-direction:row;align-items:center;justify-content:flex-start;gap:var(--sp-3);padding-left:var(--sp-2);padding-right:48px;border:0;background:transparent;color:var(--txt-2)}.lg-v3 .lg-more-row .lg-more-item:hover{background:var(--surface-hover);color:var(--txt);border-color:transparent}.lg-v3 .lg-more-ic{display:inline-grid;place-items:center;flex:0 0 auto;width:1.75rem;height:1.75rem;border-radius:50%;background:var(--lg-tone-bg);color:var(--lg-tone-ink)}.lg-v3 .lg-more-ic .ic{width:1rem;height:1rem;vertical-align:0}.lg-v3 .lg-tip-i{position:absolute;top:0;right:0;bottom:0;width:44px;display:grid;place-items:center;padding:0;border:0;background:transparent;color:var(--txt-3);cursor:help;border-radius:var(--r-sm)}.lg-v3 .lg-tip-i .ic{width:1rem;height:1rem;vertical-align:0}.lg-v3 .lg-tip-i:hover,.lg-v3 .lg-tip-i:focus-visible{color:var(--txt-2)}.lg-v3 .lg-more-item[hidden]+.lg-tip-i{display:none}.lg-v3 .lg-first{margin:var(--sp-1) 0 0;display:flex;flex-wrap:wrap;align-items:center;justify-content:center;column-gap:var(--sp-2);text-align:center}.lg-v3 .lg-tip-t{min-height:44px;display:inline-flex;align-items:center;gap:var(--sp-1);padding:0 var(--sp-2);border:0;background:transparent;cursor:help;font:inherit;font-size:var(--fs-xs);color:var(--txt-3);border-radius:var(--r-sm)}.lg-v3 .lg-tip-t .ic{width:.9rem;height:.9rem;vertical-align:0}.lg-v3 .lg-tip-t:hover,.lg-v3 .lg-tip-t:focus-visible{color:var(--txt-2)}.lg-v3 .lg-tip{position:absolute;left:0;top:0;z-index:20;width:max-content;max-width:min(18rem,calc(100% - 16px));padding:var(--sp-2) var(--sp-3);border-radius:var(--r-sm);background:var(--txt);color:var(--surface);box-shadow:var(--sh-2);font-size:var(--fs-xs);line-height:1.55;text-align:left;--dur-tip-out:400ms;opacity:0;visibility:hidden;pointer-events:none;transition:opacity var(--dur-tip-out) var(--ease),visibility 0s linear var(--dur-tip-out)}.lg-v3 .lg-tip.is-in{opacity:1;visibility:visible;pointer-events:none;transition:opacity var(--dur-1) var(--ease),visibility 0s}@media (prefers-reduced-motion:reduce){.lg-v3 .lg-tip,.lg-v3 .lg-tip.is-in{transition:none}}.lg-v3 .lg-school a{display:inline-flex;align-items:center;min-height:44px}.lg-v3 .lg-first .lg-school{margin:0}.lg-v3 .lg-alumni .auth-slot{margin-top:var(--sp-3)}.lg-v3 a.btn-google{display:flex;align-items:center;justify-content:center;gap:var(--sp-3);width:100%;min-height:52px;box-sizing:border-box;padding:0 var(--sp-4);border:1px solid var(--accent);border-radius:var(--r-sm);background:var(--accent-solid);color:var(--on-solid);font:inherit;font-size:var(--fs-md);font-weight:600;line-height:1.3;text-decoration:none;cursor:pointer;box-shadow:var(--sh-2)}.lg-v3 a.btn-google:hover{background:var(--accent-solid-active);border-color:var(--accent-active);color:var(--on-solid);text-decoration:none}.lg-v3 a.btn-google:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.lg-v3 h2+a.btn-google{margin-top:var(--sp-5)}.lg-v3 .btn-google-g{flex:0 0 auto;width:20px;height:20px;box-sizing:content-box;padding:5px;border-radius:var(--r-xs);background:var(--g-plate)}.lg-v3 .btn-google+.auth-slot{display:none}.lg-v3 a.lg-more-item{color:var(--txt);text-decoration:none}.lg-v3 .lg-card .or{margin:var(--sp-2) 0}.lg-v3 .lg-more:not(:has(.lg-more-item:not([hidden]))),.lg-v3 .lg-view:not(:has(.lg-more-item:not([hidden])))>.or{display:none}.lg-v3 .lg-err{margin:var(--sp-4) 0 0;padding:var(--sp-2) var(--sp-3);border:1px solid var(--err-line);border-radius:var(--r-sm);background:var(--err-soft);color:var(--err-ink);font-size:var(--fs-sm);line-height:1.55}.lg-v3 .lg-err:empty{display:none}.lg-v3 .lg-card-foot{margin-top:var(--sp-4);border-top:1px solid var(--line-2);padding-top:var(--sp-1);display:flex;flex-direction:column;align-items:center}.lg-v3 .lg-fine{margin:2px var(--sp-2);font-size:var(--fs-xs);line-height:1.55;color:var(--txt-3);text-align:center}.lg-v3 .lg-fine a{color:var(--txt-2);text-decoration:underline;text-underline-offset:2px;overflow-wrap:anywhere}.lg-v3 .login-public-links{position:static;transform:none;opacity:1;color:var(--txt-3);justify-content:center;flex-wrap:wrap;white-space:normal}.lg-v3 .login-public-links a{min-height:44px;display:inline-flex;align-items:center;padding:0 var(--sp-2);border-radius:var(--r-sm)}.lg-v3 .login-public-links a+a::before{content:none}@media (max-width:430px){.lg-v3 .lg-card .login-copy{margin-bottom:var(--sp-4)}.lg-v3 .lg-card-foot{margin-top:var(--sp-2)}}.lg-v3 .auth-btn[hidden]{display:none}#homePage .lg-v3 .lg-legacy>.card{animation:none}@media (max-width:430px) and (min-height:521px){.login.sky .lg-v3 .lg-id .en{display:none}.lg-v3 .lg-fm{padding-top:16px}.lg-v3 .lg-fm .card.lg-card{padding-top:22px;padding-bottom:18px}.lg-v3 .lg-card-foot .lg-fine{line-height:1.4}}@media (max-width:900px) and (max-height:520px){.login.sky .lg-v3 .lg-id{display:grid;grid-template-columns:auto auto;column-gap:8px;align-items:center;justify-items:start;text-align:left;padding:max(10px,env(safe-area-inset-top)) 16px 0 max(16px,env(safe-area-inset-left))}.login.sky .lg-v3 .lg-id .plate{grid-row:1/3;width:32px;height:29px;padding:3px 4px;border-radius:8px;margin:0}.login.sky .lg-v3 .lg-id h1{font-size:15px}.login.sky .lg-v3 .lg-id .sys{font-size:12px;margin-top:1px}.login.sky .lg-v3 .lg-id .en{display:none}.login.sky .lg-v3 .lg-fm{padding-top:12px}}body.as-student nav{flex-wrap:wrap;row-gap:0}.as-bar{flex:0 0 100%;display:flex;align-items:center;gap:var(--sp-2);min-height:var(--as-bar-h);margin:10px 0 -10px;padding:0 var(--sp-3);background:var(--warn-soft);color:var(--warn-ink);border:1px solid var(--warn-line);border-bottom:0;border-radius:var(--r-sm) var(--r-sm) 0 0;font-size:var(--fs-sm)}.as-bar[hidden]{display:none}.as-bar .ic{width:1.1rem;height:1.1rem;flex:0 0 auto}.as-bar>span{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.as-bar .as-back{flex:0 0 auto}.container{max-width:900px;margin:0 auto;padding:var(--sp-6)}.section{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:var(--sp-7);margin-bottom:var(--sp-5);box-shadow:var(--sh-1);transition:border-color var(--dur-2) var(--ease),box-shadow var(--dur-2) var(--ease)}.section h3{font-size:var(--fs-sec);font-weight:600;color:var(--txt);letter-spacing:var(--ls-sec);margin-bottom:var(--sp-6);padding-bottom:var(--sp-4);border-bottom:1px solid var(--line-2);display:flex;align-items:center;gap:var(--sp-2);line-height:1.35}.section h4{font-size:var(--fs-lg);font-weight:700;color:var(--txt);line-height:1.4}.beta{background:var(--gold-soft);color:var(--gold-ink);border:1px solid var(--gold-line);font-size:var(--fs-2xs);font-weight:700;padding:2px 9px;border-radius:var(--r-xs);margin-left:var(--sp-2);vertical-align:middle;letter-spacing:1px}.upload-zone{border:1.5px dashed var(--line-3);border-radius:var(--r-md);padding:var(--sp-8);text-align:center;cursor:pointer;background:var(--surface-3);transition:border-color var(--dur-2) var(--ease),background var(--dur-2) var(--ease);margin:var(--sp-3) 0}.upload-zone:hover{border-color:var(--accent);background:var(--accent-soft)}.upload-zone .icon{width:2.4rem;height:2.4rem;font-size:2.4rem;line-height:1;display:block;margin:0 auto 10px;color:var(--txt-4)}.upload-zone:hover .icon{color:var(--accent)}.upload-zone .hint{font-size:var(--fs-md);color:var(--txt-3);margin-top:var(--sp-1)}.upload-btn{background:var(--accent-solid);color:var(--on-solid);border:none;padding:11px var(--sp-6);border-radius:var(--r-sm);font-family:inherit;font-size:var(--fs-base);font-weight:600;cursor:pointer;margin-top:var(--sp-2);letter-spacing:.5px;transition:background var(--dur-1) var(--ease),box-shadow var(--dur-1) var(--ease),transform var(--dur-1) var(--ease-out);box-shadow:var(--sh-1)}.upload-btn:hover{background:var(--accent-solid-hover);box-shadow:var(--sh-2);transform:translateY(var(--lift-1))}.upload-btn:active{background:var(--accent-solid-active);transform:translateY(0);transition-duration:var(--dur-0)}.upload-btn:disabled{opacity:.55;cursor:not-allowed;box-shadow:none;transform:none}select{width:100%;padding:10px 14px;border:1px solid var(--line);border-radius:var(--r-sm);font-size:var(--fs-lg);margin-bottom:var(--sp-4);background:var(--field);color:var(--txt);cursor:pointer;font-family:inherit;transition:border-color var(--dur-1) var(--ease),box-shadow var(--dur-1) var(--ease)}select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-ring)}textarea{font-family:inherit;color:var(--txt);background:var(--field);border:1px solid var(--line);border-radius:var(--r-sm)}textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-ring)}.grade-card{background:var(--surface-3);border:1px solid var(--line);border-radius:var(--r-md);padding:var(--sp-4);margin-bottom:var(--sp-3);display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:var(--sp-2)}.grade-card .filename{font-weight:700;font-size:var(--fs-lg);color:var(--txt)}.grade-card .meta{font-size:var(--fs-md);color:var(--txt-3);margin-top:var(--sp-1)}.grade-chip{font-weight:700;font-size:1.1rem;padding:6px var(--sp-4);border-radius:var(--r-full);white-space:nowrap;font-variant-numeric:tabular-nums;border:1px solid transparent}.chip-ok{background:var(--ok-soft);color:var(--ok-ink);border-color:var(--ok-line)}.chip-ai{background:var(--info-soft);color:var(--info-ink);border-color:var(--info-line)}.chip-wait{background:var(--warn-soft);color:var(--warn-ink);border-color:var(--warn-line)}.view-feedback-btn{font-size:var(--fs-xs);background:var(--accent-soft);color:var(--accent);border:1px solid var(--accent-soft-2);border-radius:var(--r-xs);padding:3px var(--sp-2);cursor:pointer;margin-top:var(--sp-1);font-family:inherit;font-weight:600}.view-feedback-btn:hover{background:var(--accent-soft-2)}.toast{position:fixed;top:calc(var(--nav-safe-h) + var(--sp-4));right:max(var(--sp-4),env(safe-area-inset-right));padding:var(--sp-3) var(--sp-5);border-radius:var(--r-md);font-weight:600;font-size:var(--fs-base);z-index:9999;opacity:0;transition:opacity var(--dur-0) var(--ease-in-out),transform var(--dur-0) var(--ease-in-out);pointer-events:none;transform:translateY(-12px) scale(.98);transform-origin:top right;box-shadow:var(--sh-3);max-width:calc(100vw - max(var(--sp-4),env(safe-area-inset-left)) - max(var(--sp-4),env(safe-area-inset-right)))}.toast.ok{background:var(--ok-soft);color:var(--ok-ink);border:1px solid var(--ok-line)}.toast.err{background:var(--err-soft);color:var(--err-ink);border:1px solid var(--err-line)}.toast.show{opacity:1;transform:none;transition:opacity var(--dur-2) var(--ease-out),transform var(--dur-2) var(--ease-out)}.toast.has-act{pointer-events:none}.toast-act{pointer-events:auto;margin-left:var(--sp-3);padding:var(--sp-1) var(--sp-3);border-radius:var(--r-sm);background:transparent;border:1px solid currentColor;color:inherit;font-weight:700;font-size:var(--fs-sm);cursor:pointer}.draft-note{display:flex;align-items:center;gap:var(--sp-3);flex-wrap:wrap;margin-bottom:var(--sp-4);padding:var(--sp-2) var(--sp-3);border-radius:var(--r-sm);font-size:var(--fs-sm);font-weight:600;background:var(--warn-soft);color:var(--warn-ink);border:1px solid var(--warn-line)}.draft-note span{flex:1;min-width:0}.draft-clear{padding:var(--sp-1) var(--sp-3);border-radius:var(--r-sm);background:transparent;border:1px solid currentColor;color:inherit;font-weight:700;font-size:var(--fs-sm);cursor:pointer}.modal-overlay{display:none;position:fixed;inset:0;overflow-y:auto;overscroll-behavior:contain;align-items:safe center;background:var(--overlay);z-index:2000;justify-content:center;padding-top:max(var(--sp-4),var(--safe-top));padding-right:max(var(--sp-4),env(safe-area-inset-right));padding-bottom:max(var(--sp-4),var(--safe-bottom));padding-left:max(var(--sp-4),env(safe-area-inset-left));-webkit-backdrop-filter:blur(20px) saturate(140%);backdrop-filter:blur(20px) saturate(140%)}@supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){.modal-overlay{background:var(--overlay-solid)}}.modal-overlay.show{display:flex}.modal{--modal-pad:var(--sp-7);--modal-h3-fs:1.2rem;--modal-h3-lh:1.35;--modal-foot-hint:8px;--modal-sb-bleed:2rem;--modal-head-h:calc(var(--modal-pad) + var(--sp-3) + var(--modal-h3-fs)*var(--modal-h3-lh));--modal-foot-h:calc(var(--modal-foot-hint) + 44px + var(--modal-pad) + var(--safe-bottom));background-color:var(--surface-2);background-image:radial-gradient(150% 120% at 112% -10%,var(--m-glow-1) 0%,transparent 62%),radial-gradient(140% 115% at -12% 110%,var(--m-glow-2) 0%,transparent 64%);border:1px solid var(--line);border-radius:var(--r-xl);padding:var(--modal-pad);max-width:600px;width:90%;max-height:84svh;max-height:84dvh;overflow-y:auto;box-shadow:var(--sh-4);color:var(--txt)}.modal h3{margin-bottom:var(--sp-4);font-size:var(--modal-h3-fs);color:var(--txt);line-height:var(--modal-h3-lh)}.modal:has(>h3){padding-top:0;scroll-padding-top:var(--modal-head-h)}.modal>h3{position:sticky;top:0;z-index:1;margin:0 calc(var(--modal-pad)*-1) var(--sp-4);padding:var(--modal-pad) var(--modal-pad) var(--sp-3);background:var(--surface-2);box-shadow:var(--modal-sb-bleed) 0 0 0 var(--surface-2)}.modal>.modal-close{position:sticky;top:var(--sp-2);z-index:2}.modal:has(>.modal-foot){padding-bottom:0;scroll-padding-bottom:var(--modal-foot-h)}.modal:has(>.modal-foot[hidden]){padding-bottom:var(--modal-pad);scroll-padding-bottom:0}.modal>.modal-foot{position:sticky;bottom:0;z-index:1;margin:var(--sp-5) calc(var(--modal-pad)*-1) 0;padding:0 var(--modal-pad) var(--modal-pad);background:var(--surface-2);box-shadow:var(--modal-sb-bleed) 0 0 0 var(--surface-2)}.modal>.modal-foot::before{content:"";display:block;height:var(--modal-foot-hint);position:absolute;left:0;right:0;top:calc(var(--modal-foot-hint)*-1);margin:0;pointer-events:none;background:linear-gradient(to bottom,transparent,var(--surface-2))}@supports (backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px)){.modal>h3,.modal>.modal-foot{background:var(--surface-2-glass);-webkit-backdrop-filter:blur(10px) saturate(1.2);backdrop-filter:blur(10px) saturate(1.2);box-shadow:var(--modal-sb-bleed) 0 0 0 var(--surface-2-glass)}.modal>.modal-foot::before{background:linear-gradient(to bottom,transparent,var(--surface-2-glass));-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}}.modal>.modal-foot>.upload-btn{width:100%;margin-top:0}.modal pre{white-space:pre-wrap;font-size:var(--fs-md);background:var(--surface-3);border:1px solid var(--line-2);padding:var(--sp-4);border-radius:var(--r-sm);line-height:1.7;color:var(--txt-2);font-family:var(--font-mono)}.modal-close{float:right;background:none;border:none;font-size:1.4rem;cursor:pointer;color:var(--txt-3);line-height:1;padding:0;border-radius:var(--r-xs);display:inline-grid;place-items:center;transition:color var(--dur-1) var(--ease),background var(--dur-1) var(--ease),transform var(--dur-1) var(--ease-out)}.modal-close:hover{color:var(--txt);background:var(--surface-hover)}.modal-close:active{transform:scale(.9)}.tab-bar{display:flex;gap:2px;margin-bottom:var(--sp-4);flex-wrap:nowrap;border-bottom:1px solid var(--line-2);padding-bottom:0;max-width:100%;overflow-x:auto;overscroll-behavior-inline:contain;scrollbar-width:thin}.tab-btn{padding:var(--sp-2) var(--sp-5);border:1px solid transparent;border-radius:var(--r-xs);background:transparent;cursor:pointer;font-size:var(--fs-base);font-weight:500;color:var(--txt-2);font-family:inherit;transition:background var(--dur-1) var(--ease),color var(--dur-1) var(--ease),border-color var(--dur-1) var(--ease);letter-spacing:.5px}.tab-btn:hover{background:var(--surface-hover);color:var(--txt)}.tab-btn.active{background:var(--accent-solid);color:var(--on-solid);border-color:var(--accent-solid);font-weight:600}.pill-group{display:flex;flex-wrap:wrap;gap:6px}.pill-group .pill{padding:7px var(--sp-3);border:1px solid var(--line);border-radius:var(--r-full);background:var(--surface);color:var(--txt-2);cursor:pointer;font-size:var(--fs-base);font-weight:600;transition:background var(--dur-1) var(--ease),color var(--dur-1) var(--ease),border-color var(--dur-1) var(--ease),box-shadow var(--dur-1) var(--ease),transform var(--dur-1) var(--ease-out)}.pill-group .pill:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}.pill-group .pill:active{transform:scale(.97);transition-duration:var(--dur-0)}.pill-group .pill.active{background:var(--accent-solid);color:var(--on-solid);border-color:var(--accent-solid);box-shadow:var(--sh-1)}#coursesPage .pill-group,#mySkillsPage .pill-group{display:inline-flex;flex-wrap:wrap;gap:2px;padding:3px;border-radius:var(--r-md);background:var(--surface-3);border:1px solid var(--line)}#coursesPage .pill-group .pill,#mySkillsPage .pill-group .pill{border:0;border-radius:var(--r-sm);background:transparent;color:var(--txt-2);padding:0 var(--sp-3)}#coursesPage .pill-group .pill:hover,#mySkillsPage .pill-group .pill:hover{color:var(--accent);background:transparent}#coursesPage .pill-group .pill.active,#mySkillsPage .pill-group .pill.active{background:var(--surface);color:var(--accent);box-shadow:var(--sh-1),0 0 0 1px var(--line)}.cs{position:relative;display:inline-block;min-width:140px;font-size:var(--fs-base);user-select:none}.cs-trigger{width:100%;padding:10px 36px 10px 14px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface);color:var(--txt);cursor:pointer;font-size:var(--fs-base);font-weight:500;text-align:left;transition:border-color var(--dur-1) var(--ease),box-shadow var(--dur-1) var(--ease);position:relative;display:flex;align-items:center;justify-content:space-between;font-family:inherit}.cs-trigger:hover{border-color:var(--line-3)}.cs-trigger.open{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-ring)}.cs-arrow{display:inline-block;width:8px;height:8px;border-right:1.5px solid var(--txt-3);border-bottom:1.5px solid var(--txt-3);transform:rotate(45deg) translate(-2px,-2px);transition:transform var(--dur-2) var(--ease);margin-left:10px;flex-shrink:0}.cs-trigger.open .cs-arrow{transform:rotate(225deg) translate(-2px,-2px);border-color:var(--accent)}.cs-label{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cs-options{position:absolute;top:calc(100% + 4px);left:0;right:0;background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r-sm);box-shadow:var(--sh-3);max-height:340px;overflow:hidden;opacity:0;transform:translateY(-4px) scale(.96);transform-origin:top center;visibility:hidden;transition:opacity var(--dur-0) var(--ease-in-out),transform var(--dur-0) var(--ease-in-out),visibility 0s linear var(--dur-0);pointer-events:none;z-index:200}.cs-options.open{opacity:1;transform:none;visibility:visible;pointer-events:auto;transition:opacity var(--dur-2) var(--ease-out),transform var(--dur-2) var(--ease-out),visibility 0s linear 0s}.cs-search-wrap{padding:var(--sp-2);border-bottom:1px solid var(--line-2);position:sticky;top:0;background:var(--surface-2)}.cs-search{width:100%;padding:var(--sp-2) var(--sp-3) var(--sp-2) 32px;border:1px solid var(--line);border-radius:var(--r-xs);font-family:inherit;font-size:var(--fs-md);background:var(--field) url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='%2393A1B8'><path fill-rule='evenodd' d='M9 3.5a5.5 5.5 0 100 11 5.5 5.5 0 000-11zM2 9a7 7 0 1112.452 4.391l3.328 3.329a.75.75 0 11-1.06 1.06l-3.329-3.328A7 7 0 012 9z' clip-rule='evenodd'/></svg>") no-repeat 10px center;background-size:14px;outline:none;color:var(--txt);transition:border-color var(--dur-1) var(--ease),background-color var(--dur-1) var(--ease)}.cs-search:focus{border-color:var(--accent);background-color:var(--field-focus)}.cs-list{max-height:280px;overflow-y:auto;padding:var(--sp-1) 0}.cs-option{padding:9px var(--sp-3);cursor:pointer;font-size:var(--fs-base);color:var(--txt-2);transition:background-color var(--dur-1) var(--ease),color var(--dur-1) var(--ease);position:relative}.cs-option:hover{background:var(--surface-hover);color:var(--txt)}.cs-option.selected{background:var(--accent-soft);color:var(--accent);font-weight:600}.cs-option.selected::after{content:"✓";position:absolute;right:14px;top:50%;transform:translateY(-50%);color:var(--accent);font-weight:700;font-size:var(--fs-base)}.cs-empty{padding:var(--sp-5);text-align:center;color:var(--txt-3);font-size:var(--fs-md)}.tab-pane{display:none}.tab-pane.active{display:block}.skill-pill{display:inline-flex;align-items:center;gap:6px;padding:5px var(--sp-3);border-radius:var(--r-full);font-size:var(--fs-sm);font-weight:600;margin:3px var(--sp-1) 3px 0;border:1px solid transparent;cursor:default;transition:transform var(--dur-1) var(--ease)}.skill-pill:hover{transform:translateY(var(--lift-1))}.skill-pill .lv{font-size:var(--fs-2xs);padding:1px 5px;border-radius:var(--r-full);background:rgba(255,255,255,.32);font-weight:700}.skill-pill.l0{background:var(--surface-3);color:var(--txt-2);border-color:var(--line)}.skill-pill.l1{background:var(--info-soft);color:var(--info-ink);border-color:var(--info-line)}.skill-pill.l2{background:var(--ok-soft);color:var(--ok-ink);border-color:var(--ok-line)}.skill-pill.l3{background:var(--gold-soft);color:var(--gold-ink);border-color:var(--gold-line);box-shadow:var(--sh-1)}.skill-pill.expired{opacity:.55;text-decoration:line-through}.skill-legend{display:flex;gap:10px;flex-wrap:wrap;font-size:var(--fs-xs);color:var(--txt-3);align-items:center;padding:var(--sp-3) 0 var(--sp-4);margin-bottom:var(--sp-1);border-bottom:1px solid var(--line)}.skill-legend .legend-title{font-size:var(--fs-meta);color:var(--txt-3);margin-right:var(--sp-2)}.skill-legend .legend-item{display:inline-flex;align-items:center;gap:var(--sp-2);font-size:var(--fs-meta);color:var(--txt-2)}.skill-legend .legend-item b{font-weight:600;color:var(--txt)}.skill-legend .dot{width:26px;height:20px;border-radius:7px;display:inline-block;border:1.5px solid}.skill-legend .l0 .dot{background:var(--rar0-tint);border-color:var(--rar0-line)}.skill-legend .l1 .dot{background:var(--rar1-tint);border-color:var(--rar1-line)}.skill-legend .l2 .dot{background:var(--rar2-tint);border-color:var(--rar2-line)}.skill-legend .l3 .dot{background:var(--rar3-tint);border-color:var(--rar3-line);box-shadow:inset 0 0 0 1px var(--rar3-line)}.ms-back{display:inline-flex;align-items:center;gap:var(--sp-2);background:transparent;border:0;padding:0;margin:0 0 var(--sp-3);color:var(--accent);font-family:inherit;font-size:var(--fs-base);font-weight:600;cursor:pointer}.ms-back:hover{text-decoration:underline}.ms-xref{display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap;font-size:var(--fs-meta);color:var(--txt-2);padding:var(--sp-3) 0 var(--sp-2)}.ms-xref b{color:var(--txt);font-weight:700;font-variant-numeric:tabular-nums}.ms-xref-go{margin-left:auto;background:transparent;border:1px solid var(--line);border-radius:var(--r-ctl);padding:0 var(--sp-3);color:var(--accent);font-family:inherit;font-size:var(--fs-meta);font-weight:600;cursor:pointer;white-space:nowrap}.ms-xref-go:hover{border-color:var(--accent);background:var(--accent-soft)}.ms-note{margin-top:var(--sp-5);font-size:var(--fs-meta);color:var(--txt-3)}.ms-note b{color:var(--txt-2)}.uc-acct-note{margin-top:var(--sp-2);font-size:var(--fs-micro);color:var(--txt-3)}.cs-empty-act{justify-content:center}.acct-item[hidden]{display:none}.stat-grid{display:flex;gap:var(--sp-4);flex-wrap:wrap;margin-bottom:var(--sp-4)}.stat-card{background:var(--accent-soft);border:1px solid var(--accent-soft-2);border-radius:var(--r-md);padding:var(--sp-4) var(--sp-6);flex:1;min-width:120px;text-align:center}.stat-num{font-size:2rem;font-weight:800;color:var(--accent);font-variant-numeric:tabular-nums;line-height:1.15;font-family:var(--font-latin)}.stat-lbl{font-size:var(--fs-md);color:var(--txt-2);margin-top:var(--sp-1)}.table-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface)}table{width:100%;border-collapse:collapse;font-size:var(--fs-md)}th{background:var(--surface-3);color:var(--txt-2);font-weight:700;padding:10px var(--sp-3);text-align:left;border-bottom:1px solid var(--line);white-space:nowrap}td{padding:10px var(--sp-3);border-bottom:1px solid var(--line-2);vertical-align:middle;color:var(--txt)}tr:last-child td{border-bottom:none}tr:hover td{background:var(--surface-hover)}.score-input{width:70px;padding:var(--sp-1) var(--sp-2);border:1px solid var(--line);border-radius:var(--r-xs);font-size:var(--fs-base);text-align:center;background:var(--field);color:var(--txt);font-family:var(--font-latin);font-variant-numeric:tabular-nums}.score-input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-ring)}.save-score-btn{padding:5px var(--sp-3);background:var(--ok-solid);color:var(--on-solid);border:none;border-radius:var(--r-xs);cursor:pointer;font-size:var(--fs-md);margin-left:var(--sp-1);font-family:inherit;font-weight:600}.save-score-btn:hover{filter:brightness(1.08)}.status-badge{display:inline-block;padding:3px 10px;border-radius:var(--r-full);font-size:var(--fs-xs);font-weight:700;border:1px solid transparent}.s-wait{background:var(--warn-soft);color:var(--warn-ink);border-color:var(--warn-line)}.s-ok{background:var(--ok-soft);color:var(--ok-ink);border-color:var(--ok-line)}.s-ai{background:var(--info-soft);color:var(--info-ink);border-color:var(--info-line)}.s-fail{background:var(--err-soft);color:var(--err-ink);border-color:var(--err-line)}.loading-msg{color:var(--txt-3);text-align:center;padding:var(--sp-5);font-size:var(--fs-base)}.busy-ring{display:inline-block;vertical-align:-.14em;margin-right:.45em;width:1em;height:1em;border-radius:50%;border:2px solid var(--line-2);border-top-color:var(--accent);animation:busySpin var(--dur-busy-spin) linear infinite}@keyframes busySpin{to{transform:rotate(360deg)}}.progress-bar{width:100%;background:var(--surface-3);border:1px solid var(--line-2);border-radius:var(--r-sm);margin:var(--sp-2) 0;overflow:hidden;display:none}.progress-bar.show{display:block}.progress-fill{width:0%;height:8px;background:linear-gradient(90deg,var(--accent-solid),var(--brand-400));transition:width var(--dur-3) var(--ease);border-radius:var(--r-sm)}.rubric-box{background:var(--warn-soft);border:1px solid var(--warn-line);border-radius:var(--r-sm);padding:var(--sp-4);margin:10px 0;font-size:var(--fs-md);color:var(--warn-ink);white-space:pre-wrap;display:none;max-height:200px;overflow-y:auto;line-height:1.65}.rubric-box.show{display:block}.sr-row{display:flex;justify-content:space-between;gap:var(--sp-3);align-items:flex-start;border:1px solid var(--line);border-radius:var(--r-md);padding:var(--sp-3);margin-bottom:var(--sp-2);background:var(--surface)}.sr-row-main{flex:1 1 auto;min-width:0}.sr-row-head{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px}.sr-def{color:var(--txt-3);font-size:var(--fs-md);margin-top:4px;white-space:pre-wrap;overflow-wrap:anywhere}.sr-row-weight{flex:0 0 auto;display:flex;align-items:center;gap:4px}.sr-row-weight input{width:64px;text-align:right;margin-bottom:0}.sr-type-seg{display:inline-flex;border:1px solid var(--line);border-radius:var(--r-full);overflow:hidden;margin-right:var(--sp-2);vertical-align:middle;flex-shrink:0}.sr-seg-opt{font-size:var(--fs-micro);padding:2px 10px;background:var(--field);color:var(--txt-3);border:none;cursor:pointer;font:inherit;line-height:1.4;white-space:nowrap;transition:background var(--dur-1) var(--ease),color var(--dur-1) var(--ease)}.sr-seg-opt+.sr-seg-opt{border-left:1px solid var(--line)}.sr-seg-opt:hover{filter:brightness(0.95)}.sr-seg-opt.active{background:var(--accent-solid);color:var(--on-solid);font-weight:600}.sr-seg-opt:focus-visible{outline:none;box-shadow:inset 0 0 0 2px var(--accent);position:relative;z-index:1}.sr-type-seg.readonly .sr-seg-opt{cursor:default}.sr-type-seg.readonly .sr-seg-opt:hover{filter:none}.sr-suggest-badge{display:inline-block;font-size:var(--fs-micro);padding:2px 8px;border-radius:var(--r-full);margin-right:var(--sp-2);white-space:nowrap;background:var(--warn-soft);color:var(--warn-ink);border:1px dashed var(--warn-line);cursor:help}.sr-verbatim-badge{display:inline-block;font-size:var(--fs-micro);padding:2px 8px;border-radius:var(--r-full);margin-right:var(--sp-2);white-space:normal;background:var(--err-soft);color:var(--err-ink);border:1px solid var(--err-line);font-weight:700;cursor:help}.sr-def-toggle{display:block;margin-top:6px}.sr-def-toggle summary{cursor:pointer;color:var(--accent);font-size:var(--fs-md);list-style:none;width:fit-content;max-width:100%}.sr-def-toggle summary::-webkit-details-marker{display:none}.sr-def-toggle summary::before{content:'▸ ';font-size:.85em}.sr-def-toggle[open] summary::before{content:'▾ '}.sr-weight-banner{font-size:var(--fs-body);font-weight:600;padding:var(--sp-2) var(--sp-3);border-radius:var(--r-sm);margin-bottom:var(--sp-3);background:var(--field);color:var(--txt-2)}.sr-weight-banner.ok{background:var(--ok-soft);color:var(--ok-ink)}.sr-weight-banner.warn{background:var(--warn-soft);color:var(--warn-ink)}.sr-coverage{font-size:var(--fs-md);color:var(--txt-3);margin-bottom:var(--sp-3)}.sr-actions{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:var(--sp-6) var(--sp-3);margin-top:var(--sp-3)}.sr-actions-io{display:flex;flex-wrap:wrap;gap:var(--sp-2)}.sr-save-btn{margin-top:0;margin-left:auto}.sr-alert{border-radius:var(--r-sm);padding:var(--sp-3);margin-bottom:var(--sp-3);font-size:var(--fs-md);line-height:1.6}.sr-alert ul{margin:6px 0 0;padding-left:1.2em}.sr-alert-err{background:var(--err-soft);color:var(--err-ink);border:1px solid var(--err-line)}.sr-alert-warn{background:var(--warn-soft);color:var(--warn-ink);border:1px solid var(--warn-line)}.sr-alert-info{background:var(--info-soft);color:var(--info-ink);border:1px solid var(--info-line)}.sr-advisory-gate b{display:block;margin-bottom:2px}.sr-assist-actions{margin-top:var(--sp-2)}.sr-sxs{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-3);margin:var(--sp-3) 0}.sr-sxs-pane{min-width:0}.sr-sxs-head{font-size:var(--fs-meta);color:var(--txt-3);font-weight:700;margin-bottom:var(--sp-2)}.sr-sxs-text{margin:0;max-height:32rem;overflow:auto;white-space:pre-wrap;word-break:break-word;background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r-sm);padding:var(--sp-3);font-size:var(--fs-body);line-height:1.6;color:var(--txt-2)}.sr-sxs .sr-preview{margin:0}@media (max-width:820px){.sr-sxs{grid-template-columns:1fr}.sr-sxs-text{max-height:18rem}}.sr-status-band{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);flex-wrap:wrap;background:var(--info-soft);color:var(--info-ink);border:1px solid var(--info-line);border-radius:var(--r-sm);padding:var(--sp-2) var(--sp-3);margin-bottom:var(--sp-3);font-size:var(--fs-body)}.sr-status-band .sr-steps{font-size:var(--fs-meta);opacity:.85}.sr-draft-revive{display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap}.sr-draft-revive .btn-secondary{padding:4px 10px;font-size:var(--fs-body)}.sr-draft{margin-top:var(--sp-3)}.sr-preview{margin:var(--sp-3) 0}.sr-trial-total{font-weight:700;font-size:var(--fs-lg);color:var(--txt);margin:var(--sp-2) 0}.sr-step{display:flex;gap:var(--sp-3);align-items:flex-start;margin:var(--sp-3) 0}.sr-step-num{flex:0 0 auto;width:1.8rem;height:1.8rem;border-radius:50%;background:var(--accent-soft);color:var(--accent);font-weight:700;display:flex;align-items:center;justify-content:center;font-size:var(--fs-body)}.sr-step-body{flex:1 1 auto;min-width:0}.sr-step-title{font-weight:700;font-size:var(--fs-lg);color:var(--txt);margin-bottom:2px}.sr-step-desc{color:var(--txt-3);font-size:var(--fs-md);margin-bottom:var(--sp-2)}.sr-file-links{display:flex;flex-wrap:wrap;gap:var(--sp-4)}.sr-file-link{color:var(--accent);text-decoration:underline;font-size:var(--fs-body);cursor:pointer}.sr-file-link:hover{color:var(--accent-hover)}.upload-zone.sr-drag{border-color:var(--accent);background:var(--accent-soft-2)}.sr-legacy-box{border:1px solid var(--warn-line);background:var(--warn-soft);border-radius:var(--r-md);padding:var(--sp-3);margin-bottom:var(--sp-3)}.sr-legacy-head{font-weight:700;color:var(--warn-ink);margin-bottom:var(--sp-2)}.sr-legacy-text{white-space:pre-wrap;font-family:inherit;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-sm);padding:var(--sp-3);max-height:240px;overflow:auto;color:var(--txt-2);font-size:var(--fs-md);margin:0 0 var(--sp-2)}.sr-legacy-hint{color:var(--txt-3);font-size:var(--fs-md)}.cs-toolbar{display:flex;align-items:center;gap:var(--sp-3);flex-wrap:wrap;background:var(--bg);border:0;border-bottom:1px solid var(--line);border-radius:0;padding:0 0 var(--sp-4);margin-bottom:var(--sp-6);position:sticky;top:calc(var(--nav-safe-h) + 5px);z-index:50;box-shadow:none}.cs-toolbar .tb-search{flex:1;min-width:180px;padding:10px 14px 10px 36px;font-family:inherit;border:1px solid var(--line);border-radius:var(--r-sm);font-size:var(--fs-base);background:var(--field) url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='%2393A1B8'><path fill-rule='evenodd' d='M9 3.5a5.5 5.5 0 100 11 5.5 5.5 0 000-11zM2 9a7 7 0 1112.452 4.391l3.328 3.329a.75.75 0 11-1.06 1.06l-3.329-3.328A7 7 0 012 9z' clip-rule='evenodd'/></svg>") no-repeat 12px center;background-size:15px;color:var(--txt);transition:border-color var(--dur-1) var(--ease),box-shadow var(--dur-1) var(--ease);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.cs-toolbar .tb-search::placeholder{color:var(--txt-3)}.cs-toolbar .tb-search:focus{outline:none;border-color:var(--accent);background-color:var(--field-focus);box-shadow:0 0 0 3px var(--accent-ring)}.tb-spacer{flex:1}.tb-add-btn{background:var(--accent-solid);color:var(--on-solid);border:none;padding:10px var(--sp-5);border-radius:var(--r-ctl);font-family:inherit;font-size:var(--fs-base);font-weight:600;cursor:pointer;white-space:nowrap;letter-spacing:.5px;box-shadow:var(--sh-2);transition:background var(--dur-1) var(--ease),box-shadow var(--dur-1) var(--ease),transform var(--dur-1) var(--ease-out)}.tb-add-btn:hover{background:var(--accent-solid-hover);box-shadow:var(--sh-3);transform:translateY(var(--lift-1))}.tb-add-btn:active{transform:translateY(0);box-shadow:var(--sh-1);transition-duration:var(--dur-0)}.tb-add-btn.gold{background:var(--niu-gold);color:var(--brand-900);box-shadow:var(--sh-1)}.tb-add-btn.gold:hover{background:var(--niu-gold-600);box-shadow:var(--sh-2)}.course-page-head{display:flex;align-items:baseline;gap:var(--sp-3);margin-bottom:var(--sp-6);flex-wrap:wrap}.course-page-title{font-size:var(--fs-page);font-weight:600;line-height:var(--lh-page);letter-spacing:var(--ls-page);color:var(--txt)}.course-page-kicker{font-size:var(--fs-meta);color:var(--txt-3)}.course-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,17.5rem),1fr));gap:var(--sp-4)}.course-card{position:relative;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-obj);padding:var(--sp-5);cursor:pointer;overflow:hidden;display:flex;flex-direction:column;min-height:11rem;box-shadow:var(--sh-1);transition:transform var(--dur-1) var(--ease-out),box-shadow var(--dur-1) var(--ease-out),border-color var(--dur-1) var(--ease)}.course-card:hover{transform:translateY(var(--lift-2));box-shadow:var(--sh-2);border-color:var(--line-3)}.course-card:active{transform:translateY(var(--lift-1));box-shadow:var(--sh-2);transition-duration:var(--dur-0)}.course-card .cc-top{display:flex;align-items:center;gap:var(--sp-3)}.course-card .cc-top>.status-tag,.course-card .cc-top>.role-badge{margin-left:auto}.course-card .cc-name{font-size:var(--fs-obj);font-weight:600;color:var(--txt);line-height:1.4;letter-spacing:-.006em;min-width:0;margin-top:var(--sp-3)}.course-card .cc-code{font-size:var(--fs-xs);color:var(--txt-3);font-family:var(--font-mono);letter-spacing:.5px;white-space:nowrap}.cc-meta{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:var(--sp-2) 0 var(--sp-3);font-size:var(--fs-meta);color:var(--txt-2);line-height:1.55}.cc-meta .sep{color:var(--txt-4)}.cc-mono{width:2.9rem;height:2.9rem;border-radius:var(--r-md);display:grid;place-items:center;font-size:1.25rem;font-weight:800;flex:0 0 auto}.cc-mono.m1{background:var(--m1-bg);color:var(--m1-ink)}.cc-mono.m2{background:var(--m2-bg);color:var(--m2-ink)}.cc-mono.m3{background:var(--m3-bg);color:var(--m3-ink)}.cc-mono.m4{background:var(--m4-bg);color:var(--m4-ink)}.cc-mono.m5{background:var(--m5-bg);color:var(--m5-ink)}.cc-mono.m6{background:var(--m6-bg);color:var(--m6-ink)}.cc-id{min-width:0;line-height:1.3}.cc-sem{font-size:var(--fs-meta);color:var(--txt-2)}.cc-go{margin-left:auto;color:var(--txt-4)}.cc-chip{font-size:var(--fs-xs);font-weight:600;padding:3px 9px;border-radius:var(--r-xs);background:var(--surface-3);color:var(--txt-2);border:1px solid var(--line-2)}.cc-chip.dept{background:var(--accent-soft);color:var(--accent);border-color:var(--accent-soft-2)}.badge-req{font-size:var(--fs-xs);font-weight:700;padding:3px 9px;border-radius:var(--r-xs)}.badge-req.req{background:var(--accent-solid);color:var(--on-solid)}.badge-req.elec{background:var(--surface-3);color:var(--txt-2);border:1px solid var(--line)}.cc-foot{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-2);flex-wrap:wrap;border-top:1px solid var(--line-2);padding-top:10px;margin-top:auto}.role-badge{font-size:var(--fs-xs);font-weight:700;padding:3px 10px;border-radius:var(--r-chip);display:inline-flex;align-items:center;gap:var(--sp-1);min-height:1.6rem;line-height:1.2}.role-badge.owner{background:var(--gold-soft);color:var(--gold-ink);border:1px solid var(--gold-line)}.role-badge.co{background:var(--vio-soft);color:var(--vio-ink);border:1px solid var(--vio-line)}.role-badge.ta{background:var(--accent-soft);color:var(--accent);border:1px solid var(--accent-soft-2)}.mr-test-badge{font-size:var(--fs-xs);font-weight:700;padding:3px 10px;border-radius:var(--r-full);margin-left:6px;background:var(--warn-soft);color:var(--warn-ink);border:1px solid var(--warn-line)}.status-tag{font-size:var(--fs-xs);font-weight:700;padding:3px 10px;border-radius:var(--r-chip);display:inline-flex;align-items:center;gap:var(--sp-1);min-height:1.6rem;line-height:1.2;border:1px solid transparent}.status-tag.approved{background:var(--ok-soft);color:var(--ok-ink);border-color:var(--ok-line)}.status-tag.pending{background:var(--warn-soft);color:var(--warn-ink);border-color:var(--warn-line)}.status-tag.rejected{background:var(--err-soft);color:var(--err-ink);border-color:var(--err-line)}.pending-bell{font-size:var(--fs-xs);font-weight:700;padding:3px 10px;border-radius:var(--r-chip);background:var(--gold-soft);color:var(--gold-ink);display:inline-flex;align-items:center;gap:var(--sp-1);min-height:1.6rem;line-height:1.2;border:1px solid var(--gold-line)}.status-tag .ic,.role-badge .ic,.pending-bell .ic{width:.95rem;height:.95rem;flex:0 0 auto}.course-card.cc-lead{padding:var(--sp-6);box-shadow:var(--sh-2);border-color:var(--accent)}.course-card.cc-lead .cc-name{font-size:var(--fs-sec);letter-spacing:var(--ls-sec)}.course-card.cc-muted{background:transparent;box-shadow:none}.course-card.cc-muted .cc-name,.course-card.cc-muted .cc-meta{color:var(--txt-2)}.course-card.cc-muted:hover{transform:none;background:var(--surface);box-shadow:var(--sh-1)}.cs-empty-state{text-align:center;padding:60px var(--sp-5);color:var(--txt-3)}.cs-empty-state .ic{width:2.6rem;height:2.6rem;font-size:2.6rem;line-height:1;display:block;margin:0 auto var(--sp-3);opacity:.5;color:var(--txt-4);vertical-align:middle}.cs-empty-state .t{font-size:var(--fs-xl);font-weight:600;color:var(--txt-2);margin-bottom:6px}.cs-empty-state .d{font-size:var(--fs-base)}.asg-cols,.asg-row{display:grid;grid-template-columns:2.5rem minmax(0,1.6fr) minmax(9rem,1fr) minmax(10rem,.9fr) 1.1rem;align-items:center;gap:var(--sp-3) var(--sp-4)}.asg-row{padding:var(--sp-3) var(--sp-5);background:transparent;border:0;border-top:1px solid var(--line-2);border-radius:0;margin:0;cursor:pointer;transition:background var(--dur-1) var(--ease)}.asg-row:hover{background:var(--surface-hover)}.asg-row:active{background:var(--surface-3)}.asg-main{flex:1 1 auto;min-width:0}.asg-name{font-size:var(--fs-xl);font-weight:700;color:var(--txt);margin-bottom:var(--sp-1);overflow:hidden;text-overflow:ellipsis;white-space:normal;overflow-wrap:anywhere;line-height:1.35}.asg-when{font-size:var(--fs-md);color:var(--txt-2);display:flex;flex-wrap:wrap;gap:6px;align-items:center}.asg-count{flex:0 0 auto;text-align:center;min-width:64px}.asg-count b{display:block;font-size:1.25rem;color:var(--accent);line-height:1.15;font-variant-numeric:tabular-nums;font-family:var(--font-latin)}.asg-count span{font-size:var(--fs-xs);color:var(--txt-3)}.asg-go{flex:0 0 auto;color:var(--txt-4);font-size:1.1rem}.asg-row .asg-name{font-size:var(--fs-obj);font-weight:700;color:var(--txt);line-height:1.35;overflow-wrap:anywhere}.asg-row>.asg-when{font-size:var(--fs-meta);color:var(--txt-2);line-height:1.4}.asg-row>.asg-count{display:flex;align-items:baseline;gap:4px}.asg-tag{display:inline-flex;align-items:center;gap:var(--sp-1);min-height:1.6rem;padding:2px var(--sp-2);border-radius:var(--r-chip);font-size:var(--fs-xs);font-weight:700;line-height:1.3;border:1px solid transparent;white-space:normal;max-width:100%}.asg-tag .ic{width:.95rem;height:.95rem;flex:0 0 auto}.asg-tag.ok{background:var(--ok-soft);color:var(--ok-ink);border-color:var(--ok-line)}.asg-tag.none{background:transparent;color:var(--txt-2);border:1px dashed var(--line-3)}.asg-tag.risk{background:var(--warn-soft);color:var(--warn-ink);border-color:var(--warn-line)}.asg-tag.shut{background:var(--surface-3);color:var(--txt-2);border-color:var(--line-2)}.asg-tag.hist{background:var(--hist-soft);color:var(--hist-ink);border-color:var(--hist-line)}.asg-back{background:none;border:none;color:var(--accent);font-weight:600;font-size:var(--fs-base);cursor:pointer;padding:6px 10px;border-radius:var(--r-ctl);margin-bottom:10px;display:inline-flex;align-items:center;gap:5px;font-family:inherit}.asg-back:hover{background:var(--accent-soft)}.asg-hero{display:flex;align-items:flex-start;gap:var(--sp-3);flex-wrap:wrap;padding-bottom:var(--sp-4);border-bottom:1px solid var(--line-2);margin-bottom:var(--sp-4)}.asg-hero:last-child{padding-bottom:0;border-bottom:0;margin-bottom:0}.asg-hero h2{font-size:var(--fs-sec);font-weight:600;letter-spacing:var(--ls-sec);color:var(--txt);margin:0 0 6px;line-height:1.3}.tab-btn.asg-tabbar-label{cursor:default;white-space:nowrap;display:inline-flex;align-items:center;background:transparent;color:var(--txt);border-color:transparent}.tab-btn.asg-tabbar-label:hover{background:transparent;color:var(--txt)}.asg-settings-row{display:flex;align-items:center;gap:var(--sp-3);flex-wrap:wrap;margin-bottom:var(--sp-3)}.breadcrumb{display:flex;align-items:center;gap:6px;font-size:var(--fs-base);color:var(--txt-3);margin-bottom:var(--sp-4);flex-wrap:wrap}.breadcrumb a{color:var(--accent);text-decoration:none;font-weight:600;cursor:pointer}.breadcrumb a:hover{text-decoration:underline}.course-head{background:transparent;border:0;border-bottom:1px solid var(--line);border-radius:0;padding:var(--sp-5) 0 var(--sp-6);margin-bottom:var(--sp-5);position:relative;overflow:visible;box-shadow:none}.course-head::before{content:none}.course-head h2{font-size:var(--fs-page);font-weight:600;letter-spacing:var(--ls-page);color:var(--txt);margin-bottom:6px;line-height:var(--lh-page)}.course-head .ch-code{font-size:var(--fs-sm);color:var(--txt-3);font-family:var(--font-mono);margin-bottom:var(--sp-3)}.course-head .ch-meta{display:flex;flex-wrap:wrap;gap:var(--sp-2);align-items:center;font-size:var(--fs-meta);color:var(--txt-2)}.course-head .ch-meta .sep{color:var(--txt-4)}.course-head .ch-title-row{display:flex;align-items:center;gap:var(--sp-2);margin-bottom:6px}.course-head .ch-title-row h2{margin-bottom:0}.ch-edit-btn{background:none;border:none;cursor:pointer;font-size:var(--fs-body);padding:4px 6px;border-radius:var(--r-xs);line-height:1;color:var(--txt-3);flex:0 0 auto}.ch-edit-btn:hover{background:var(--surface-hover);color:var(--txt)}#courseDetail .section{background:transparent;border:0;border-bottom:1px solid var(--line);border-radius:0;padding:var(--sp-6) 0;margin-bottom:var(--sp-5);box-shadow:none}#courseDetail .section h3{padding-bottom:0;border-bottom:0}#courseDetail .btn-secondary,#courseDetail .upload-btn,#coursesPage .cs-trigger,#coursesPage .tb-search{border-radius:var(--r-ctl)}.flow-intro{font-size:var(--fs-body);color:var(--txt-2);margin:6px 0 var(--sp-4);line-height:1.65}.flow-error{padding:var(--sp-2);color:var(--err-ink)}.flow-muted{font-size:var(--fs-meta);color:var(--txt-3)}.flow-muted-micro{font-size:var(--fs-micro);color:var(--txt-3)}.flow-section-title{font-size:var(--fs-body);font-weight:700;color:var(--txt-2);margin-bottom:var(--sp-2)}.flow-section-title.spaced{margin-top:var(--sp-5)}.coverage-note{font-size:var(--fs-meta);color:var(--txt-3);margin-bottom:10px}.coverage-count{font-size:var(--fs-meta);color:var(--txt-2)}.tag-warn{background:var(--warn-soft);color:var(--warn-ink)}.tag-error{background:var(--err-soft);color:var(--err-ink)}.file-link{color:var(--accent);text-decoration:none;font-weight:600}.file-link:hover{text-decoration:underline}.assign-list-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:var(--sp-1)}.assign-list-head h3{margin:0;flex:1}.asg-hero-main{flex:1 1 240px;min-width:0}.assign-section-title,.submission-form-title{margin-top:0}.join-layout{display:flex;gap:26px;flex-wrap:wrap;align-items:flex-start}.invite-hint{margin-bottom:var(--sp-5)}.join-qr-wrap{text-align:center}.join-qr{width:200px;height:200px;background:var(--on-solid);border:1px solid var(--line);border-radius:var(--r-ctl);padding:var(--sp-2);box-sizing:border-box}.join-qr svg{display:block;width:100%;height:100%}.join-side{flex:1;min-width:250px}.join-copy-row{display:flex;gap:var(--sp-2);margin-bottom:18px;align-items:center}.join-code{flex:1;margin:0;font-family:var(--font-mono);font-size:1.35rem;font-weight:700;letter-spacing:.08em;color:var(--accent);background:var(--accent-soft);border:1px solid var(--line);border-radius:var(--r-chip);padding:10px 14px;user-select:all}.join-mode-option{display:flex;align-items:flex-start;gap:11px;cursor:pointer;padding:14px;background:var(--surface-3);border:1px solid var(--line);border-radius:var(--r-ctl)}.assign-window-box,.new-assign-row,.student-submission-card{background:var(--surface-3);border:1px solid var(--line);border-radius:var(--r-row)}.assign-window-box{padding:var(--sp-3);margin-bottom:var(--sp-4)}.new-assign-row{padding:14px;margin-bottom:var(--sp-4);flex-direction:column;gap:var(--sp-2)}.new-assign-primary{display:flex;gap:var(--sp-2)}.new-assign-fields{display:flex;gap:var(--sp-2);flex-wrap:wrap;align-items:flex-end}.assign-field-label{font-size:var(--fs-meta);color:var(--txt-2);flex:1 1 160px}.assign-field-label.late-check{flex:0 0 auto;display:flex;align-items:center;gap:var(--sp-1);padding-bottom:var(--sp-2)}.scope-note{font-size:var(--fs-meta);color:var(--txt-2);background:var(--surface-3);border-radius:var(--r-chip);padding:var(--sp-2) 10px;margin-bottom:14px}.rubric-explain{font-size:var(--fs-meta);color:var(--txt-3);margin-left:var(--sp-2)}.rubric-explain.is-risk{color:var(--warn-ink)}.injection-mark{background:var(--warn-soft);color:var(--warn-ink)}.score-drop-mark{background:var(--err-soft);color:var(--err-ink);border-color:var(--err-line);white-space:nowrap}.skill-endorse-btn{background:var(--accent-solid)}.status-badge.is-small{font-size:var(--fs-micro)}.subs-edit-actions{display:flex;gap:var(--sp-2);align-items:center;margin-bottom:var(--sp-2);flex-wrap:wrap}.subs-edit-actions label{font-size:var(--fs-meta);margin:0}.edit-hint{font-size:var(--fs-meta);color:var(--txt-3);margin-bottom:var(--sp-1)}.student-submission-card{padding:14px;margin-bottom:var(--sp-4)}.student-submission-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:var(--sp-2)}.student-submission-file{font-size:var(--fs-body);color:var(--txt-2)}.student-submission-time{font-size:var(--fs-meta);color:var(--txt-3)}.student-submission-note{font-size:var(--fs-meta);color:var(--warn-ink);margin-top:6px}.student-score{margin-top:10px;font-size:1.4rem;font-weight:700;color:var(--accent);font-variant-numeric:tabular-nums}.student-score span{font-size:var(--fs-base);font-weight:600;color:var(--txt-2)}.student-feedback{margin-top:var(--sp-2);font-size:var(--fs-body);color:var(--txt);white-space:pre-wrap;background:var(--surface);border:1px solid var(--line-2);border-radius:var(--r-chip);padding:10px}.submission-history{margin-top:10px}.submission-history summary{cursor:pointer;font-size:var(--fs-meta);color:var(--txt-2);user-select:none}.submission-history-row{font-size:var(--fs-meta);color:var(--txt-2);padding:5px 0;border-bottom:1px dashed var(--line)}.submission-history-fb{margin:var(--sp-1) 0 var(--sp-2);min-width:0}.submission-history-fb summary{cursor:pointer;font-size:var(--fs-micro);color:var(--txt-3);user-select:none}.submission-history-fb .student-feedback{margin-top:var(--sp-1);font-size:var(--fs-meta);overflow-wrap:anywhere}.submission-history-nofb{font-size:var(--fs-micro);color:var(--txt-3);margin:var(--sp-1) 0 var(--sp-2)}.submission-closed{text-align:left;background:var(--surface-3);color:var(--txt-2);border:1px solid var(--line);border-radius:var(--r-chip);padding:var(--sp-3)}.submission-closed.is-ok{background:var(--ok-soft);color:var(--ok-ink);border-color:var(--ok-line)}.submission-closed.is-warn{background:var(--warn-soft);color:var(--warn-ink);border-color:var(--warn-line)}.ai-grade-note{font-size:var(--fs-meta);color:var(--warn-ink);margin-top:2px}.submission-count-note{font-size:var(--fs-micro);color:var(--txt-3);margin-top:2px}.flow-warning-text{font-size:var(--fs-body);color:var(--warn-ink);margin:0 0 var(--sp-3)}.plagiarism-mark{background:var(--warn-soft);color:var(--warn-ink)}.plagiarism-note{font-weight:600}.plg-sec td{padding:0}.plg-box{background:var(--surface-3);border:1px solid var(--line);border-radius:var(--r-chip);padding:var(--sp-3);margin:var(--sp-2) 0;text-align:left}.plg-box-title{font-size:var(--fs-body);font-weight:700;color:var(--warn-ink);margin-bottom:var(--sp-2)}.plg-match{border-top:1px dashed var(--line);padding-top:var(--sp-2);margin-top:var(--sp-2)}.plg-match:first-child{border-top:none;padding-top:0;margin-top:0}.plg-who{font-size:var(--fs-body);font-weight:600;color:var(--txt);margin-bottom:var(--sp-1)}.plg-gemma{font-size:var(--fs-meta);color:var(--txt-2);background:var(--surface);border:1px solid var(--line-2);border-radius:var(--r-xs);padding:6px var(--sp-2);margin-bottom:var(--sp-2);white-space:pre-wrap}.plg-spans-wrap{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-2)}@media (max-width:640px){.plg-spans-wrap{grid-template-columns:1fr}}.plg-spans-col{font-size:var(--fs-meta);color:var(--txt-2)}.plg-spans-col b{display:block;color:var(--txt-3);font-weight:600;margin-bottom:var(--sp-1)}.plg-span{background:var(--surface);border:1px solid var(--line-2);border-radius:var(--r-xs);padding:6px 8px;margin-bottom:6px;white-space:pre-wrap;overflow-wrap:anywhere}.plg-group-block{border:1px solid var(--line);border-radius:var(--r-chip);padding:var(--sp-3);margin-bottom:var(--sp-2)}.plg-group-head{display:flex;align-items:center;justify-content:space-between;font-weight:700;margin-bottom:var(--sp-2)}.plg-members{display:flex;flex-wrap:wrap;gap:6px}.plg-member-chip{display:inline-flex;align-items:center;gap:4px;font-size:var(--fs-meta);padding:4px 10px;border-radius:var(--r-full);border:1px solid var(--line);background:var(--surface);color:var(--txt-2);cursor:pointer}.plg-member-chip.on{background:var(--ok-soft);color:var(--ok-ink);border-color:var(--ok-line)}.plg-member-chip.disabled{opacity:.45;cursor:not-allowed}.plg-actions{display:flex;gap:var(--sp-2);margin-top:var(--sp-2)}@keyframes csPulse{0%{background-position:200% 0}100%{background-position:-200% 0}}.skeleton{background:linear-gradient(90deg,var(--skeleton-a) 25%,var(--skeleton-b) 37%,var(--skeleton-a) 63%);background-size:400% 100%;animation:csPulse 1.3s ease infinite;border-radius:var(--r-sm);display:inline-block}.sk-pill{height:26px;width:96px;border-radius:var(--r-full);margin:3px var(--sp-1) 3px 0}.sk-line{height:52px;width:100%;border-radius:var(--r-md);margin-bottom:10px;display:block}.ucan-pill{display:inline-flex;align-items:center;gap:6px;padding:5px var(--sp-3);border-radius:var(--r-full);font-size:var(--fs-sm);font-weight:600;margin:3px var(--sp-1) 3px 0;cursor:default;border:1px solid var(--gold-line);background:var(--accent-soft);color:var(--accent);transition:transform var(--dur-1) var(--ease)}.ucan-pill:hover{transform:translateY(var(--lift-1))}.ucan-pill .nt{font-size:var(--fs-2xs);padding:1px 6px;border-radius:var(--r-full);background:var(--warn-soft);color:var(--warn-ink);font-weight:700}.ucan-pill .lv{font-size:var(--fs-2xs);padding:1px 5px;border-radius:var(--r-full);background:var(--accent-soft-2);color:var(--accent);font-weight:700}.skill-subhead{font-size:var(--fs-base);font-weight:700;color:var(--txt);margin:var(--sp-1) 0 10px;display:flex;align-items:center;gap:var(--sp-2)}.skill-subhead .tag{font-size:var(--fs-2xs);font-weight:700;padding:2px var(--sp-2);border-radius:5px}.skill-subhead .tag.li{background:var(--accent-soft);color:var(--accent);border:1px solid var(--accent-soft-2)}.skill-subhead .tag.uc{background:var(--gold-soft);color:var(--gold-ink);border:1px solid var(--gold-line)}.skill-collection{display:flex;align-items:center;gap:var(--sp-3);max-width:360px;margin:var(--sp-3) 0}.skill-collection .rail{flex:1;height:2px;background:var(--line-2);border-radius:2px;overflow:hidden}.skill-collection .rail i{display:block;height:100%;background:var(--accent)}.skill-collection .n{font-size:var(--fs-meta);color:var(--txt-2);white-space:nowrap}.skill-collection .n b{color:var(--txt);font-weight:600;font-variant-numeric:tabular-nums}.skill-group-title{display:flex;align-items:center;gap:var(--sp-2);margin:var(--sp-7) 0 var(--sp-3);color:var(--txt-2)}.skill-group-title h4{font-size:var(--fs-body);font-weight:600;color:var(--txt-2);margin:0}.skill-group-title .n{font-size:var(--fs-meta);color:var(--txt-3)}.skill-group-title .uc-ico{width:20px;height:20px;margin:0}.ucan-grid{display:grid;gap:14px}.ucan-grid,.ucan-grid.pending{grid-template-columns:repeat(auto-fit,minmax(min(100%,13.125rem),1fr))}.ucan-card{--uc-line:var(--rar0-line);--uc-tint:var(--rar0-tint);--uc-level-ink:var(--rar0-ink);border:1.5px solid var(--uc-line);border-radius:var(--r-obj);background:var(--surface);overflow:hidden;display:flex;flex-direction:column;min-width:0;position:relative;min-height:272px;cursor:pointer;transition:border-color var(--dur-1) var(--ease),box-shadow var(--dur-1) var(--ease-out),transform var(--dur-1) var(--ease-out)}.ucan-card.l0{--uc-line:var(--rar0-line);--uc-tint:var(--rar0-tint);--uc-level-ink:var(--rar0-ink)}.ucan-card.l1{--uc-line:var(--rar1-line);--uc-tint:var(--rar1-tint);--uc-level-ink:var(--rar1-ink)}.ucan-card.l2{--uc-line:var(--rar2-line);--uc-tint:var(--rar2-tint);--uc-level-ink:var(--rar2-ink);--uc-glow:var(--rar2-glow)}.ucan-card.l3{--uc-line:var(--rar3-line);--uc-tint:var(--rar3-tint);--uc-level-ink:var(--rar3-ink);--uc-glow:var(--rar3-glow);box-shadow:inset 0 0 0 1px var(--rar3-line)}.ucan-card:hover{transform:translateY(var(--lift-1));box-shadow:var(--sh-1)}.ucan-card.l3:hover{box-shadow:inset 0 0 0 1px var(--rar3-line),var(--sh-1)}@media (hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference){.ucan-card.l2::before,.ucan-card.l3::before{content:"";position:absolute;inset:0;z-index:2;pointer-events:none;background-image:radial-gradient(circle 150px at var(--gx,50%) var(--gy,50%),var(--uc-glow) 0%,transparent 72%);opacity:0;transform:translateZ(0);transition:opacity var(--dur-2) var(--ease-out)}.ucan-card.l2:hover::before,.ucan-card.l2:focus-within::before,.ucan-card.l3:hover::before,.ucan-card.l3:focus-within::before{opacity:1}}.ucan-card .uc-art{height:104px;background:var(--uc-tint);border-bottom:1px solid var(--uc-line);display:grid;place-items:center;position:relative;flex:0 0 104px}.ucan-card .uc-art .uc-ico{width:54px;height:54px;margin:0;background:transparent;box-shadow:none}.ucan-card .uc-body{padding:var(--sp-3) 14px 0;flex:1;min-width:0;display:flex;flex-direction:column}.ucan-card .uc-name{font-weight:600;font-size:var(--fs-obj);color:var(--txt);line-height:1.4;letter-spacing:-.004em;min-height:2.8em;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}.ucan-card .uc-status-line{display:flex;align-items:center;margin-top:var(--sp-2)}.ucan-card .uc-footer{margin-top:var(--sp-3);padding:9px 14px 12px;border-top:1px solid var(--line);display:flex;align-items:center;justify-content:flex-end;gap:6px;color:var(--uc-level-ink);flex:0 0 auto}.ucan-card .uc-footer .uc-date{margin-right:auto;font-size:var(--fs-micro);color:var(--txt-2);font-family:var(--font-latin)}.ucan-card .uc-level{font-family:var(--font-mono);font-size:var(--fs-meta);font-weight:700}.ucan-card .uc-evidence{font-size:var(--fs-micro);font-weight:600}.proj-pill{display:inline-block;padding:3px 10px;border-radius:var(--r-full);font-size:var(--fs-xs);font-weight:600;background:var(--accent-soft);color:var(--accent);border:1px solid var(--accent-soft-2);margin:2px var(--sp-1) 2px 0}.skill-projection{margin-top:var(--sp-8);padding-top:17px;border-top:1px solid var(--line)}.skill-projection .h{font-size:var(--fs-body);font-weight:600;color:var(--txt-2);margin-bottom:6px}.skill-projection .items{font-size:var(--fs-meta);color:var(--txt);line-height:2}.skill-projection .items .sep{color:var(--txt-3);margin:0 var(--sp-2)}.skill-projection .items .lv{color:var(--txt-3);font-family:var(--font-mono);font-size:var(--fs-micro)}.skill-projection .note{font-size:var(--fs-micro);color:var(--txt-3);margin-top:var(--sp-2)}.skill-book-actions{display:flex;gap:var(--sp-2);flex-wrap:wrap;margin-top:var(--sp-5)}.dismissed-skills{margin:var(--sp-4) 0 10px}.dismissed-skills>summary{font-size:var(--fs-meta);color:var(--txt-3);cursor:pointer}.uc-actions{display:flex;gap:var(--sp-2);flex-wrap:wrap;margin-top:var(--sp-3)}.ucan-card .uc-actions{margin-top:auto;padding-top:var(--sp-2)}.uc-act{font-size:var(--fs-xs);font-weight:700;padding:6px 10px;border-radius:var(--r-ctl);border:1px solid var(--line);background:var(--surface);color:var(--txt-2);cursor:pointer;font-family:inherit;transition:background var(--dur-1) var(--ease),border-color var(--dur-1) var(--ease)}.uc-act:hover{background:var(--surface-hover)}.uc-act.ok{border-color:var(--ok-line);color:var(--ok-ink)}.uc-act.ok:hover{background:var(--ok-soft)}.uc-act.no{border-color:var(--err-line);color:var(--err-ink)}.uc-act.no:hover{background:var(--err-soft)}.uc-state{font-size:var(--fs-xs);font-weight:700;padding:2px var(--sp-2);border-radius:var(--r-full);background:var(--ok-soft);color:var(--ok-ink);border:1px solid var(--ok-line);white-space:nowrap}.uc-state.pend{background:var(--warn-soft);color:var(--warn-ink);border-color:var(--warn-line)}.ucan-card.needconf{border-style:dashed}.uc-pend-note{font-size:var(--fs-meta);color:var(--txt-2);background:transparent;border:0;border-radius:0;padding:0;margin:2px 0 var(--sp-3);line-height:1.6}.prof-chip{position:absolute;top:9px;right:9px;min-width:22px;height:22px;padding:0 6px;border-radius:7px;display:grid;place-items:center;font-size:var(--fs-micro);font-weight:700;white-space:nowrap;border:1px solid}.prof-chip.p1{background:var(--prof-b-bg);color:var(--prof-b-ink);border-color:var(--prof-b-line)}.prof-chip.p2{background:var(--prof-s-bg);color:var(--prof-s-ink);border-color:var(--prof-s-line)}.prof-chip.p3{background:var(--prof-g-bg);color:var(--prof-g-ink);border-color:var(--prof-g-line)}.prof-sel{font-size:var(--fs-sm);padding:2px 6px;border:1px solid var(--line);border-radius:var(--r-xs);background:var(--surface);color:var(--txt-2);font-family:inherit}@media (max-width:520px){.ucan-grid.pending{grid-template-columns:1fr}}.ucan-detail-modal{max-width:720px}.uc-detail-head{display:flex;align-items:center;gap:var(--sp-4);padding:0 var(--sp-1) var(--sp-5);border-bottom:1px solid var(--line)}.uc-detail-head h3{margin:0 0 var(--sp-2);font-size:var(--fs-2xl)}.uc-detail-icon{width:72px;height:72px;flex:0 0 72px;display:grid;place-items:center;border-radius:var(--r-md);background:var(--accent-soft);color:var(--accent)}.uc-detail-icon .uc-ico{width:54px;height:54px;margin:0}.uc-detail-head .uc-evidence{display:inline-flex;font-size:var(--fs-xs);font-weight:700;color:var(--txt-2);border:1px solid var(--line);border-radius:var(--r-full);padding:2px var(--sp-2)}.uc-detail-head .prof-chip{position:static;display:inline-grid;margin-left:var(--sp-2);vertical-align:middle}.uc-detail-section{padding:var(--sp-5) var(--sp-1);border-bottom:1px solid var(--line-2)}.uc-detail-section:last-child{border-bottom:0;padding-bottom:0}.uc-detail-section h4{font-size:var(--fs-lg);margin:0 0 var(--sp-3);color:var(--txt)}.uc-detail-section p{font-size:var(--fs-base);color:var(--txt-2);line-height:1.7}.uc-detail-row{display:flex;align-items:baseline;justify-content:space-between;gap:var(--sp-4);padding:7px 0;border-bottom:1px solid var(--line-2);font-size:var(--fs-base)}.uc-detail-row span{color:var(--txt-3)}.uc-detail-row b{color:var(--txt);font-weight:600;text-align:right;overflow-wrap:anywhere}.uc-detail-evidence{margin-top:var(--sp-4);font-size:var(--fs-base);color:var(--txt)}.uc-detail-evidence p{margin-top:var(--sp-1);padding-left:var(--sp-3);border-left:1px solid var(--line)}.uc-detail-section blockquote{margin:var(--sp-4) 0 0;padding:var(--sp-3) var(--sp-4);border-radius:var(--r-row);background:var(--surface-3);color:var(--txt-2);font-size:var(--fs-base);line-height:1.7}.uc-detail-section blockquote cite{display:block;margin-top:var(--sp-1);color:var(--txt-3);font-size:var(--fs-micro);font-style:normal}.uc-current-level{margin-bottom:var(--sp-3)}.uc-level-meanings{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--sp-2)}.uc-level-meanings span{padding:var(--sp-2) var(--sp-3);border:1px solid var(--line-2);border-radius:var(--r-md);font-size:var(--fs-xs);color:var(--txt-3)}.uc-level-meanings b{display:block;color:var(--txt-2);font-size:var(--fs-sm)}.uc-prof-title{margin:var(--sp-5) 0 var(--sp-2);font-size:var(--fs-sm);font-weight:600;color:var(--txt-2)}.uc-prof-scales{display:flex;gap:var(--sp-2);flex-wrap:wrap}.uc-prof-scale{display:flex;align-items:center;gap:var(--sp-2);padding:6px var(--sp-3);border:1px solid;border-radius:var(--r-full);font-size:var(--fs-sm);font-weight:700;opacity:.72}.uc-prof-scale.current{opacity:1;box-shadow:var(--sh-1)}.uc-prof-scale.p1{background:var(--prof-b-bg);color:var(--prof-b-ink);border-color:var(--prof-b-line)}.uc-prof-scale.p2{background:var(--prof-s-bg);color:var(--prof-s-ink);border-color:var(--prof-s-line)}.uc-prof-scale.p3{background:var(--prof-g-bg);color:var(--prof-g-ink);border-color:var(--prof-g-line)}.uc-detail-projections{margin:var(--sp-2) 0}.uc-detail-actions{display:flex;gap:var(--sp-2);flex-wrap:wrap}@media (max-width:520px){.uc-detail-head{align-items:flex-start}.uc-detail-icon{width:60px;height:60px;flex-basis:60px}.uc-detail-icon .uc-ico{width:44px;height:44px}.uc-level-meanings{grid-template-columns:1fr}}.skd-row{display:flex;align-items:center;gap:var(--sp-2);margin:var(--sp-1) 0}.skd-name{flex:0 0 230px;font-size:var(--fs-sm);color:var(--txt)}.skd-bar{flex:1;height:10px;background:var(--surface-3);border:1px solid var(--line-2);border-radius:5px;overflow:hidden}.skd-fill{height:100%;background:linear-gradient(90deg,var(--accent-solid),var(--vio-ink));border-radius:5px}.skd-num{flex:0 0 170px;font-size:var(--fs-xs);color:var(--txt-2);font-variant-numeric:tabular-nums}.skd-lv{color:var(--txt-3);margin-left:6px}.skd-sub{font-size:var(--fs-xs);color:var(--txt-3);margin:-2px 0 6px 238px}@media (max-width:640px){.skd-name{flex-basis:120px}.skd-sub{margin-left:0}}.subs-toolbar{display:flex;gap:var(--sp-2);flex-wrap:wrap;align-items:center;margin-bottom:10px}.subs-toolbar input{flex:1;min-width:160px;margin-bottom:0;padding:var(--sp-2) var(--sp-3);border:1px solid var(--line);border-radius:var(--r-sm);background:var(--field);color:var(--txt);font-family:inherit;font-size:var(--fs-base)}.subs-toolbar input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-ring)}.subs-chip{font-size:var(--fs-sm);font-weight:700;padding:var(--sp-1) 10px;border-radius:var(--r-full);border:1px solid var(--line);background:var(--surface);color:var(--txt-2);cursor:pointer;white-space:nowrap;font-family:inherit;transition:background var(--dur-1) var(--ease),border-color var(--dur-1) var(--ease),color var(--dur-1) var(--ease),transform var(--dur-1) var(--ease-out)}.subs-chip:hover{border-color:var(--accent);color:var(--accent)}.subs-chip:active{transform:scale(.97);transition-duration:var(--dur-0)}.subs-chip.on{background:var(--accent-solid);border-color:var(--accent-solid);color:var(--on-solid)}.subs-row{cursor:pointer}.subs-row:hover td{background:var(--surface-hover)}.subs-row .caret{color:var(--txt-4);font-size:var(--fs-xs)}.subs-edit td{background:var(--surface-3)}.subs-n{display:inline-block;margin-left:var(--sp-2);padding:1px 7px;border-radius:var(--r-full);background:var(--surface-3);color:var(--txt-2);border:1px solid var(--line-2);font-size:var(--fs-2xs);font-weight:700}.subs-new{display:inline-block;margin-left:6px;padding:1px 7px;border-radius:var(--r-full);background:var(--warn-soft);color:var(--warn-ink);border:1px solid var(--warn-line);font-size:var(--fs-2xs);font-weight:700}.subs-sec td{background:var(--surface-3);color:var(--txt-2);font-size:var(--fs-sm);padding-left:26px}.subs-hist{cursor:pointer}.subs-hist td{background:var(--surface-3);font-size:var(--fs-md);border-top:1px dashed var(--line)}.subs-hist:hover td{background:var(--surface-hover)}.subs-hist .h-when{padding-left:26px;color:var(--txt-3);white-space:nowrap}.subs-hist .h-when::before{content:'↳ ';color:var(--txt-4)}.subs-sid{margin-left:5px;color:var(--txt-3);font-size:var(--fs-sm);font-weight:500;white-space:nowrap;font-family:var(--font-mono)}.member-row{display:flex;align-items:center;gap:var(--sp-3);padding:11px var(--sp-4);border:1px solid var(--line);border-radius:var(--r-md);margin-bottom:var(--sp-2);background:var(--surface);flex-wrap:wrap;transition:border-color var(--dur-1) var(--ease),transform var(--dur-1) var(--ease-out),box-shadow var(--dur-1) var(--ease)}.member-row:hover{border-color:var(--line-3);transform:translateY(var(--lift-1));box-shadow:var(--sh-1)}.member-row .mr-name{font-weight:700;color:var(--txt);font-size:var(--fs-base)}.member-row .mr-id{font-size:var(--fs-xs);color:var(--txt-3);font-family:var(--font-mono)}.member-row .mr-spacer{flex:1}.mr-btn{border:1px solid transparent;border-radius:var(--r-xs);padding:6px var(--sp-3);cursor:pointer;font-size:var(--fs-md);font-weight:600;font-family:inherit;transition:background var(--dur-1) var(--ease),border-color var(--dur-1) var(--ease),transform var(--dur-1) var(--ease-out)}.mr-btn.approve{background:var(--ok-solid);color:var(--on-solid)}.mr-btn.approve:hover{filter:brightness(1.08)}.mr-btn.reject{background:var(--err-soft);color:var(--err-ink);border-color:var(--err-line)}.mr-btn.reject:hover{border-color:var(--err-solid)}.mr-btn.remove{background:var(--surface-3);color:var(--txt-2);border-color:var(--line)}.mr-btn.remove:hover{background:var(--surface-hover);border-color:var(--line-3)}.mr-btn:active{transform:scale(.96);transition-duration:var(--dur-0)}.tab-btn .tab-dot{display:inline-block;width:8px;height:8px;border-radius:var(--r-full);background:var(--err-solid);margin-left:5px;vertical-align:middle}.mf-label{display:block;font-size:var(--fs-md);font-weight:600;color:var(--txt-2);margin:var(--sp-3) 0 6px}.mf-input{width:100%;padding:10px var(--sp-3);border:1px solid var(--line);border-radius:var(--r-sm);font-size:var(--fs-base);background:var(--field);color:var(--txt);font-family:inherit;transition:border-color var(--dur-1) var(--ease),box-shadow var(--dur-1) var(--ease)}.mf-input::placeholder{color:var(--txt-3)}.mf-input:focus{outline:none;border-color:var(--accent);background:var(--field-focus);box-shadow:0 0 0 3px var(--accent-ring)}.mf-hint{font-size:var(--fs-sm);color:var(--txt-3);margin-top:6px;line-height:1.55}.mf-err{background:var(--err-soft);color:var(--err-ink);border:1px solid var(--err-line);border-radius:var(--r-sm);padding:8px 12px;margin-top:10px;font-size:var(--fs-sm);line-height:1.55}.mf-err[hidden]{display:none}.guide-lede{font-size:var(--fs-base);color:var(--txt-2);line-height:1.75;margin-bottom:var(--sp-5)}.guide-steps{list-style:none;margin:0;padding:0;counter-reset:guide-step}.guide-steps>li{position:relative;counter-increment:guide-step;margin-left:13px;padding:0 0 var(--sp-5) var(--sp-6);border-left:1px solid var(--line-2)}.guide-steps>li:last-child{border-left-color:transparent;padding-bottom:0}.guide-steps>li::before{content:counter(guide-step);position:absolute;left:-14px;top:0;width:27px;height:27px;box-sizing:border-box;display:grid;place-items:center;border-radius:var(--r-full);background:var(--accent-soft);border:1px solid var(--accent-soft-2);color:var(--accent);font-size:var(--fs-xs);font-weight:700;font-family:var(--font-latin);font-variant-numeric:tabular-nums}.guide-steps .t{display:block;font-size:var(--fs-lg);font-weight:700;color:var(--txt);line-height:1.5;margin-bottom:4px}.guide-steps .d{display:block;font-size:var(--fs-md);color:var(--txt-2);line-height:1.8}.guide-steps .d b{color:var(--txt);font-weight:700}.guide-foot{margin-top:var(--sp-5);padding-top:var(--sp-4);border-top:1px solid var(--line-2);font-size:var(--fs-meta);color:var(--txt-3)}.uc-ico{width:1.2em;height:1.2em;vertical-align:-.22em;margin-right:.24em;flex:0 0 auto;fill:none;stroke:var(--ucan-ink);stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}@keyframes m-rise{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@keyframes m-rise-sm{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}@keyframes m-card-in{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}@keyframes m-fade-in{from{opacity:0}to{opacity:1}}@keyframes m-fade-out{from{opacity:1}to{opacity:0}}@keyframes m-modal-in{from{opacity:0;transform:translateY(28px) scale(.96)}to{opacity:1;transform:none}}@keyframes m-modal-out{from{opacity:1;transform:none}to{opacity:0;transform:scale(.985)}}@keyframes m-sheet-in{from{opacity:0;transform:translateY(100%)}to{opacity:1;transform:none}}@keyframes m-sheet-out{from{opacity:1;transform:none}to{opacity:0;transform:translateY(100%)}}@keyframes m-pop{0%{opacity:0;transform:scale(.82)}60%{opacity:1;transform:scale(1.05)}100%{opacity:1;transform:scale(1)}}.page.active{animation:m-rise var(--dur-3) var(--ease-out) both}.tab-pane.active{animation:m-rise-sm var(--dur-2) var(--ease-out) both}.m-stagger>*{animation:m-card-in var(--dur-3) var(--ease-out) both;animation-delay:calc(var(--stagger)*7)}.m-stagger>*:nth-child(1){animation-delay:0ms}.m-stagger>*:nth-child(2){animation-delay:var(--stagger)}.m-stagger>*:nth-child(3){animation-delay:calc(var(--stagger)*2)}.m-stagger>*:nth-child(4){animation-delay:calc(var(--stagger)*3)}.m-stagger>*:nth-child(5){animation-delay:calc(var(--stagger)*4)}.m-stagger>*:nth-child(6){animation-delay:calc(var(--stagger)*5)}.m-stagger>*:nth-child(7){animation-delay:calc(var(--stagger)*6)}.asg-row,.grade-card,.ucan-card{animation:m-rise-sm var(--dur-2) var(--ease-out) both;animation-delay:calc(var(--stagger-row)*5)}.asg-row:nth-child(1),.grade-card:nth-child(1),.ucan-card:nth-child(1){animation-delay:0ms}.asg-row:nth-child(2),.grade-card:nth-child(2),.ucan-card:nth-child(2){animation-delay:var(--stagger-row)}.asg-row:nth-child(3),.grade-card:nth-child(3),.ucan-card:nth-child(3){animation-delay:calc(var(--stagger-row)*2)}.asg-row:nth-child(4),.grade-card:nth-child(4),.ucan-card:nth-child(4){animation-delay:calc(var(--stagger-row)*3)}.asg-row:nth-child(5),.grade-card:nth-child(5),.ucan-card:nth-child(5){animation-delay:calc(var(--stagger-row)*4)}.m-in{animation:m-rise-sm var(--dur-2) var(--ease-out) both}.modal-overlay.show{animation:m-fade-in var(--dur-2) var(--ease-out) both}.modal-overlay.show>.modal{animation:m-modal-in var(--dur-3) var(--ease-out) both}.modal-overlay.m-closing{display:flex;pointer-events:none;animation:m-fade-out var(--dur-0) var(--ease-in-out) both}.modal-overlay.m-closing>.modal{animation:m-modal-out var(--dur-0) var(--ease-in-out) both}.pending-bell,.subs-new{animation:m-pop var(--dur-2) var(--ease-out) both;animation-delay:var(--dur-3);transform-origin:center}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.cw-layout{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--cw-gap);align-items:start}.cw-main{min-width:0}.cw-rail{display:grid;gap:var(--cw-gap);grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr));align-content:start;min-width:0}.cw-rail[hidden]{display:none}@media (min-width:1440px){.cw-layout.has-rail{grid-template-columns:minmax(0,1fr) var(--rail-w)}.cw-layout.has-rail .cw-rail{grid-template-columns:minmax(0,1fr)}}#courseGridWrap{container-type:inline-size;container-name:cwgrid}@container cwgrid (max-width:599px){.course-grid{grid-template-columns:minmax(0,1fr)}}@container cwgrid (min-width:600px){.course-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@container cwgrid (min-width:960px){.course-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@container cwgrid (min-width:1480px){.course-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}.course-grid.is-grouped{display:flex;flex-direction:column;gap:clamp(18px,1.6vw,30px)}.sem-group{border:0;border-radius:var(--r-xl);padding:clamp(14px,1.2vw,22px);background:var(--wash-past)}.sem-group.is-now{background:var(--wash-now)}.sem-head{display:flex;align-items:center;gap:var(--sp-3);flex-wrap:wrap;margin:0 2px var(--sp-4)}.sem-tag{display:inline-flex;align-items:center;gap:var(--sp-1);min-height:1.6rem;padding:0 var(--sp-2);border-radius:var(--r-chip);background:var(--surface);color:var(--wash-past-ink);font-size:var(--fs-xs);font-weight:800}.sem-tag .ic{width:.95rem;height:.95rem;flex:0 0 auto}.sem-group.is-now .sem-tag{color:var(--wash-now-ink)}.sem-title{font-size:var(--fs-sec);font-weight:700;letter-spacing:var(--ls-sec)}.sem-meta{font-size:var(--fs-meta);color:var(--txt-2)}.sk-mod{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:var(--sp-4) var(--sp-5);display:grid;gap:var(--sp-4);min-width:0}.sk-mod-h{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3)}.sk-mod-h h2{font-size:var(--fs-obj);font-weight:700;display:flex;align-items:center;gap:var(--sp-2)}.sk-mod-h h2 .ic{color:var(--txt-3)}.sk-mod-more{background:none;border:0;color:var(--accent);font-weight:600;font-size:var(--fs-meta);cursor:pointer;border-radius:var(--r-sm)}.sk-tally{display:flex;align-items:baseline;gap:var(--sp-2)}.sk-tally b{font:700 2.2rem/1 var(--font-latin);letter-spacing:-.03em;color:var(--txt)}.sk-tally span{color:var(--txt-2);font-size:var(--fs-meta)}.rar-bar{display:flex;gap:2px;height:.7rem;border-radius:4px;overflow:hidden;background:var(--line-2)}.rar-bar i{display:block;height:100%;flex-basis:0}.rar-bar .r0,.rar-sw.r0{background:var(--rar0-line)}.rar-bar .r1,.rar-sw.r1{background:var(--rar1-line)}.rar-bar .r2,.rar-sw.r2{background:var(--rar2-line)}.rar-bar .r3,.rar-sw.r3{background:var(--rar3-line)}.rar-legend{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-1) var(--sp-4);font-size:var(--fs-meta);color:var(--txt-2)}.rar-legend li{display:flex;align-items:center;gap:var(--sp-2)}.rar-legend b{margin-left:auto;color:var(--txt);font-family:var(--font-latin)}.rar-sw{width:.75rem;height:.75rem;border-radius:3px;flex:0 0 auto}.sk-note{font-size:var(--fs-meta);color:var(--txt-2);line-height:1.55}.sk-sub{font-size:var(--fs-meta);font-weight:700;color:var(--txt-2);padding-top:var(--sp-3);border-top:1px solid var(--line-2)}.skc-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,8.6rem),1fr));gap:var(--sp-2)}.skc{display:flex;flex-direction:column;gap:2px;padding:var(--sp-2);background:var(--surface);border:1.5px solid var(--rar0-line);border-radius:var(--r-md);text-align:left;cursor:pointer;font:inherit;color:inherit;min-width:0}.skc.l1{border-color:var(--rar1-line)}.skc.l2{border-color:var(--rar2-line)}.skc.l3{border-color:var(--rar3-line);box-shadow:inset 0 0 0 2px var(--surface),inset 0 0 0 3px var(--rar3-line)}.skc-art{height:3rem;display:grid;place-items:center;border-radius:var(--r-sm);background:var(--rar0-tint)}.skc.l1 .skc-art{background:var(--rar1-tint)}.skc.l2 .skc-art{background:var(--rar2-tint)}.skc.l3 .skc-art{background:var(--rar3-tint)}.skc-art .uc-ico{width:1.9rem;height:1.9rem}.skc-name{font-size:var(--fs-meta);line-height:1.3;color:var(--txt);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.skc-lv{font-size:var(--fs-micro);font-weight:700;color:var(--rar0-ink)}.skc.l1 .skc-lv{color:var(--rar1-ink)}.skc.l2 .skc-lv{color:var(--rar2-ink)}.skc.l3 .skc-lv{color:var(--rar3-ink)}.skc-date{font-size:var(--fs-micro);color:var(--txt-2);font-family:var(--font-latin);line-height:1.35}.sk-err{display:grid;gap:var(--sp-2);font-size:var(--fs-meta);color:var(--txt-2)}@media (min-width:1920px){.cw-layout.has-rail .skc-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}.cw-todo{list-style:none;margin:0;padding:0;display:grid;gap:2px}.cw-todo-row{width:100%;display:grid;grid-template-columns:2.5rem minmax(0,1fr) auto;align-items:center;gap:var(--sp-3);padding:var(--sp-2);border:0;background:transparent;border-radius:var(--r-md);cursor:pointer;text-align:left;font:inherit;color:inherit}.cw-todo-row:hover{background:var(--surface-hover)}.cw-todo-t{min-width:0}.cw-todo-t b{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cw-todo-t small{font-size:var(--fs-micro);color:var(--txt-2);font-family:var(--font-mono)}.asg-list{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden;container-type:inline-size;container-name:asglist}.asg-list.is-teacher .asg-cols,.asg-row.is-teacher{grid-template-columns:2.5rem minmax(0,1.5fr) minmax(9rem,1fr) minmax(10rem,.9fr) 5.5rem 1.1rem}.asg-cols{padding:var(--sp-2) var(--sp-5);background:var(--surface-3);border-bottom:1px solid var(--line);font-size:var(--fs-micro);font-weight:700;color:var(--txt-2);letter-spacing:.04em}.asg-cols+.asg-row{border-top:0}.ft-tile{width:2.5rem;height:2.5rem;border-radius:var(--r-md);display:grid;place-items:center;flex:0 0 auto;background:var(--ft-bg);border:1px solid var(--ft-line);color:var(--ft-ink)}.ft-tile .ic{width:1.3rem;height:1.3rem}@container asglist (max-width:859px){.asg-cols{display:none}.asg-row,.asg-row.is-teacher{grid-template-columns:2.5rem minmax(0,1fr) 1.1rem;grid-template-areas:"ft main go" "ft when when" "ft st st" "ft cnt cnt";row-gap:var(--sp-2)}.asg-row>.ft-tile{grid-area:ft;align-self:start}.asg-row>.asg-main{grid-area:main}.asg-row>.asg-when{grid-area:when}.asg-row>.asg-st{grid-area:st}.asg-row>.asg-count{grid-area:cnt}.asg-row>.asg-go{grid-area:go}}.note-bar{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:var(--sp-3);align-items:center;padding:var(--sp-3) var(--sp-4);border:1px solid var(--line);border-radius:var(--r-lg);background:var(--surface)}.note-bar>.ft-tile{background:var(--surface);border-color:var(--line);color:var(--txt-2)}.note-bar.is-warn{background:var(--warn-soft);border-color:var(--warn-line)}.note-bar.is-ok{background:var(--ok-soft);border-color:var(--ok-line)}.note-bar.is-err{background:var(--err-soft);border-color:var(--err-line)}.note-bar.is-info{background:var(--info-soft);border-color:var(--info-line)}.note-bar.is-hist{background:var(--hist-soft);border-color:var(--hist-line)}.note-bar b{display:block;font-size:var(--fs-body)}.note-bar p{font-size:var(--fs-meta);color:var(--txt-2);line-height:1.55}@media (max-width:640px){.note-bar{grid-template-columns:auto minmax(0,1fr)}}@media (min-width:1920px){#mySkillsPage .ucan-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,14.5rem),1fr))}}@media (min-width:2560px){#mySkillsPage .ucan-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,16rem),1fr))}}.arc-evsum{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--sp-2) var(--sp-4);margin-bottom:var(--sp-3);font-size:var(--fs-meta);color:var(--txt-2);min-width:0}.arc-evsum b{color:var(--txt)}.arc-evsum .arc-evwarn{color:var(--warn-ink);font-weight:700}.arc-evsum.is-bad{padding:var(--sp-3) var(--sp-4);border:1px solid var(--err-line);border-radius:var(--r-lg);background:var(--err-soft);color:var(--err-ink)}.arc-evsum.is-bad b{color:var(--err-ink)}.arc-evdo{flex:1 1 100%;color:var(--txt);line-height:1.55}.arc-dz{position:relative;display:grid;justify-items:center;gap:var(--sp-2);text-align:center;padding:clamp(26px,3vw,48px) var(--sp-5);border:1.5px dashed var(--line-3);border-radius:var(--r-xl);background:var(--surface);color:var(--txt);cursor:pointer;transition:border-color var(--dur-1) var(--ease),background-color var(--dur-1) var(--ease)}.arc-dz:hover,.arc-dz:focus-within,.arc-dz.is-over{border-color:var(--accent);background:var(--accent-soft)}.arc-dz input[type=file]{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.arc-dz b{font-size:var(--fs-obj)}.arc-dz p{font-size:var(--fs-meta);color:var(--txt-2);max-width:44rem;line-height:1.55}.arc-dz-tile{width:3.2rem;height:3.2rem;border-radius:var(--r-lg);display:grid;place-items:center;background:var(--accent-soft);color:var(--accent)}.arc-dz-tile .ic{width:1.6rem;height:1.6rem}.arc-dz-fine{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:var(--sp-1) var(--sp-3);font-size:var(--fs-micro);color:var(--txt-2)}.arc-dz.is-compact{grid-template-columns:auto minmax(0,1fr) auto;justify-items:start;align-items:center;text-align:left;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4)}.arc-dz.is-compact .arc-dz-tile{width:2.5rem;height:2.5rem;border-radius:var(--r-md)}.arc-dz.is-compact .arc-dz-tile .ic{width:1.25rem;height:1.25rem}.arc-dz.is-off,.arc-dz.is-off:hover,.arc-dz.is-off:focus-within{border-color:var(--line-3);background:var(--surface-3);cursor:not-allowed}.arc-dz.is-off .arc-dz-tile{background:var(--surface);color:var(--txt-2)}.arc-decl{display:flex;align-items:center;gap:var(--sp-2);min-height:44px;margin-top:var(--sp-3);font-size:var(--fs-body);font-weight:600;line-height:1.45;cursor:pointer}.arc-decl input{width:1.1rem;height:1.1rem;margin:0;flex:none;accent-color:var(--accent-solid)}.arc-flow{list-style:none;margin:0;padding:0;display:grid;gap:var(--sp-3);counter-reset:arcflow}.arc-flow li{display:grid;grid-template-columns:1.7rem minmax(0,1fr);gap:var(--sp-3);font-size:var(--fs-meta);color:var(--txt-2);line-height:1.55}.arc-flow li::before{counter-increment:arcflow;content:counter(arcflow);width:1.7rem;height:1.7rem;border-radius:50%;display:grid;place-items:center;background:var(--surface-3);border:1px solid var(--line);font-family:var(--font-latin);font-size:var(--fs-micro);font-weight:700;color:var(--txt-2)}.arc-flow li b{display:block;color:var(--txt);font-size:var(--fs-body)}.arc-flow li.is-cur::before{background:var(--accent-solid);border-color:var(--accent-solid);color:var(--txt-inv)}.arc-upl{list-style:none;margin:0;padding:0}.arc-upl li{display:grid;grid-template-columns:2.5rem minmax(0,1fr) minmax(8rem,14rem) auto;gap:var(--sp-3);align-items:center;padding:var(--sp-3) var(--sp-4);border-top:1px solid var(--line-2)}.arc-upl li:first-child{border-top:0}.arc-upl li>span{min-width:0}.arc-upl .nm{display:block;min-width:0;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.arc-upl .arc-sz{display:block;font-size:var(--fs-micro);color:var(--txt-2);font-family:var(--font-latin)}.arc-prog{height:.45rem;border-radius:3px;background:var(--line-2);overflow:hidden}.arc-prog i{display:block;height:100%;border-radius:3px;background:var(--accent-solid)}.arc-prog.is-done i{background:var(--ok-ink)}@media (max-width:640px){.arc-upl li{grid-template-columns:2.5rem minmax(0,1fr) auto}.arc-upl .arc-prog{grid-column:2/-1}}.arc-parse{display:grid;justify-items:center;gap:var(--sp-2);text-align:center;padding:clamp(22px,2.4vw,40px) var(--sp-5)}.arc-parse b{font-size:var(--fs-obj)}.arc-parse p{font-size:var(--fs-meta);color:var(--txt-2)}.arc-parse-tile{width:3.2rem;height:3.2rem;border-radius:var(--r-lg);display:grid;place-items:center;background:var(--info-soft);color:var(--info-ink)}.arc-parse-tile .ic{width:1.6rem;height:1.6rem}.arc-parse .arc-spin,.arc-wait .arc-spin{transform-origin:50% 50%;animation:busySpin var(--dur-busy-spin) linear infinite}.arc-bsum{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--sp-3) var(--sp-4);margin-bottom:var(--sp-4);min-width:0}.arc-bsum h2{display:flex;align-items:center;gap:var(--sp-2);font-size:var(--fs-sec);font-weight:700}.arc-bsum h2 .ic{color:var(--txt-3)}.arc-bsum p{font-size:var(--fs-meta);color:var(--txt-2)}.arc-bsum p b{color:var(--txt);font-family:var(--font-latin)}.arc-bsum .pill-group{max-width:100%;overflow-x:auto;flex-wrap:nowrap}.arc-bsum .pill-group .pill{flex:none;white-space:nowrap}.arc-zgrid{display:grid;gap:var(--sp-4);grid-template-columns:repeat(auto-fill,minmax(min(100%,25rem),1fr))}.arc-zc{display:flex;flex-direction:column;gap:var(--sp-3);min-width:0;padding:var(--sp-4);background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg)}.arc-zc.is-warn{background:var(--warn-soft);border-color:var(--warn-line)}.arc-zc.is-err{background:var(--err-soft);border-color:var(--err-line)}.arc-zc.is-mute{background:var(--surface-3);border-color:var(--line)}.arc-zgrid>.arc-zc.is-wide{grid-column:1/-1}.arc-zc-h{display:grid;grid-template-columns:2.5rem minmax(0,1fr) auto;gap:var(--sp-3);align-items:start}.arc-zc-h>span{min-width:0}.arc-zc-t{display:block;font-size:var(--fs-obj);font-weight:700;line-height:1.35}.arc-zc-fn{display:block;margin-top:2px;font-family:var(--font-mono);font-size:var(--fs-micro);color:var(--txt-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.arc-zc dl{margin:0;display:grid;grid-template-columns:auto minmax(0,1fr);gap:var(--sp-1) var(--sp-4);font-size:var(--fs-meta)}.arc-zc dt{color:var(--txt-2)}.arc-zc dd{margin:0;min-width:0;font-weight:600}.arc-zc-msg{font-size:var(--fs-meta);line-height:1.55;color:var(--txt)}.arc-zc-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,9rem),1fr));gap:var(--sp-2)}.arc-zc-f{display:flex;align-items:center;flex-wrap:wrap;gap:var(--sp-2);padding-top:var(--sp-3);border-top:1px solid var(--line-2)}.arc-zc.is-warn .arc-zc-f,.arc-zc.is-err .arc-zc-f{border-top-color:var(--line)}.arc-twostep{display:grid;gap:var(--sp-2);padding:var(--sp-3);border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface-3);font-size:var(--fs-meta)}.arc-twostep ul{margin:0;padding-left:1.1rem;color:var(--txt-2)}.arc-twostep b{font-family:var(--font-latin)}.arc-grp-row{display:grid;grid-template-columns:minmax(13rem,.8fr) minmax(0,2.4fr) minmax(9rem,.55fr);gap:var(--sp-4);align-items:start;padding:var(--sp-4);border-top:1px solid var(--line-2)}.arc-grp-row:first-child{border-top:0}.arc-grp-row.is-need{background:var(--surface-3)}.arc-cands{display:flex;flex-wrap:wrap;gap:var(--sp-2)}.arc-cand{display:inline-flex;align-items:center;gap:var(--sp-2);min-height:44px;padding:var(--sp-1) var(--sp-3) var(--sp-1) var(--sp-2);border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface);font-size:var(--fs-meta);cursor:pointer;transition:border-color var(--dur-1) var(--ease),background-color var(--dur-1) var(--ease)}.arc-cand:has(input:checked){border-color:var(--accent);background:var(--accent-soft)}.arc-cand input{width:1.05rem;height:1.05rem;margin:0;accent-color:var(--accent-solid)}.arc-cand.is-bad{border-color:var(--err-line);background:var(--err-soft)}.arc-cand.is-new{border-style:dashed;border-color:var(--warn-line)}.arc-ava{width:2rem;height:2rem;border-radius:50%;display:grid;place-items:center;flex:none;font-size:var(--fs-micro);font-weight:800;background:var(--m5-bg);color:var(--m5-ink)}.arc-sid{font-family:var(--font-mono);font-size:var(--fs-micro);color:var(--txt-2)}@media (max-width:980px){.arc-grp-row{grid-template-columns:minmax(0,1fr)}}.arc-skwrap{max-width:100%;max-height:calc(100svh - 12rem);max-height:calc(100dvh - 12rem);overflow:auto;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg)}.arc-sktable{width:100%;min-width:48rem;border-collapse:separate;border-spacing:0;font-size:var(--fs-meta)}.arc-sktable th,.arc-sktable td{padding:var(--sp-2) var(--sp-3);text-align:left;vertical-align:middle;border-top:1px solid var(--line-2)}.arc-sktable th{position:sticky;top:0;z-index:2;background:var(--surface-3);border-top:0;border-bottom:1px solid var(--line);font-size:var(--fs-micro);font-weight:700;color:var(--txt-2);vertical-align:bottom}.arc-sktable tbody th{top:auto;z-index:auto;background:var(--surface);border-top:1px solid var(--line-2);border-bottom:0;font-size:var(--fs-meta);font-weight:400;color:var(--txt);vertical-align:middle}.arc-sktable .arc-sname{position:sticky;left:0;z-index:1;min-width:12rem;background:var(--surface);box-shadow:1px 0 0 var(--line-2)}.arc-sktable thead .arc-sname{z-index:3;background:var(--surface-3)}.arc-sktable .arc-skgh>th{background:var(--surface-3);color:var(--txt-2);font-size:var(--fs-micro);font-weight:700}.arc-sktable .is-self>th,.arc-sktable .is-self>td{background:var(--surface-3)}.arc-skh{display:flex;flex-direction:column;align-items:flex-start;gap:var(--sp-1);min-width:7.5rem}.arc-skh-nm{display:flex;align-items:center;gap:var(--sp-2);color:var(--txt);font-size:var(--fs-micro);line-height:1.25}.arc-skglyph{width:1.6rem;height:1.6rem;border-radius:var(--r-xs);display:grid;place-items:center;flex:none;background:var(--ft-bg);border:1px solid var(--ft-line)}.arc-skglyph .uc-ico{width:1.05rem;height:1.05rem}.arc-colck{padding:0;border:0;background:none;color:var(--accent);font-size:var(--fs-micro);font-weight:600;cursor:pointer}.arc-selfnote{display:inline-flex;align-items:center;gap:var(--sp-1);margin-top:2px;font-size:var(--fs-micro);font-weight:700;color:var(--txt-2)}.arc-pick{display:inline-flex;align-items:center;gap:var(--sp-2);min-height:44px;padding:0 var(--sp-2);border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface);color:var(--txt-2);font-size:var(--fs-micro);white-space:nowrap;cursor:pointer;transition:border-color var(--dur-1) var(--ease),background-color var(--dur-1) var(--ease)}.arc-pick input{width:1.05rem;height:1.05rem;margin:0;accent-color:var(--accent-solid)}.arc-pick:has(input:checked){border-color:var(--accent);background:var(--accent-soft);color:var(--txt)}.arc-pick:has(input:disabled){cursor:not-allowed;opacity:.62}.arc-cf{font-family:var(--font-latin);font-weight:700;color:var(--txt)}.arc-pick.is-low .arc-cf{color:var(--txt-2)}.arc-pick.is-flag{border-color:var(--err-line);background:var(--err-soft)}.arc-pick.is-done,.arc-pick.is-done:has(input:checked),.arc-pick.is-done:has(input:disabled){cursor:default;opacity:1;border-color:var(--ok-line);background:var(--ok-soft);color:var(--txt)}.arc-pick.is-revoked,.arc-pick.is-revoked:has(input:disabled){cursor:default;opacity:1;border-style:dashed;background:var(--surface-3);color:var(--txt-2)}.arc-pick.is-revoked .arc-cf{color:var(--txt-2);text-decoration:line-through}.arc-cellst{display:grid;gap:var(--sp-1);justify-items:start}.arc-revoke{padding:0 var(--sp-3);font-size:var(--fs-micro)}.arc-batchbar{display:flex;align-items:center;flex-wrap:wrap;gap:var(--sp-3) var(--sp-4);margin-top:var(--sp-4);padding:var(--sp-3) var(--sp-4);background:var(--surface);border-top:1px solid var(--line)}.arc-batchbar-sum{font-size:var(--fs-meta);color:var(--txt-2)}.arc-batchbar-sum b{color:var(--txt);font-family:var(--font-latin)}.arc-batchbar-sp{flex:1}.arc-files{list-style:none;margin:0;padding:0}.arc-files>li{display:grid;grid-template-columns:minmax(13rem,.8fr) minmax(0,2.6fr);gap:var(--sp-4);align-items:start;padding:var(--sp-4);border-top:1px solid var(--line-2)}.arc-files>li:first-child{border-top:0}.arc-fl{list-style:none;margin:0;padding:0;display:grid;gap:var(--sp-2)}.arc-fl>li{border:1px solid var(--line-2);border-radius:var(--r-sm)}.arc-fl>li:has(input:checked){border-color:var(--accent);background:var(--accent-soft)}.arc-flrow{display:grid;grid-template-columns:auto 2rem minmax(0,1fr) auto auto;gap:var(--sp-2);align-items:center;min-height:44px;padding:var(--sp-1) var(--sp-2);cursor:pointer}.arc-flrow:has(input:disabled){cursor:default}.arc-flrow input{width:1.05rem;height:1.05rem;margin:0;accent-color:var(--accent-solid)}.arc-flrow>.ft-tile{width:2rem;height:2rem}.arc-flrow>.ft-tile .ic{width:1rem;height:1rem}.arc-flrow .nm{min-width:0;font-size:var(--fs-meta);font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.arc-flrow .arc-sz{font-size:var(--fs-micro);color:var(--txt-2);font-family:var(--font-latin);white-space:nowrap}.arc-main-tag{font-size:var(--fs-micro);font-weight:800;color:var(--accent)}@media (max-width:980px){.arc-files>li{grid-template-columns:minmax(0,1fr)}}.arc-fld{display:grid;gap:var(--sp-1);min-width:0;font-size:var(--fs-micro);font-weight:600;color:var(--txt-2)}.arc-fld input,.arc-fld select{width:100%;min-width:0;margin:0;padding:0 var(--sp-3);border:1px solid var(--line-3);border-radius:var(--r-md);background:var(--field);color:var(--txt);font-family:inherit;font-size:var(--fs-meta);font-weight:500}.arc-fld input:focus,.arc-fld select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-ring)}.arc-fld small{font-weight:500;color:var(--txt-2)}.arc-fld.is-wide{grid-column:1/-1}.arc-semck{display:flex;align-items:center;align-self:flex-start;gap:var(--sp-2);min-height:44px;font-size:var(--fs-meta);font-weight:600;line-height:1.45;cursor:pointer}.arc-semck input{width:1.05rem;height:1.05rem;margin:0;flex:none;accent-color:var(--accent-solid)}.arc-probs{font-size:var(--fs-meta);color:var(--txt-2)}.arc-probs summary{display:inline-flex;align-items:center;gap:var(--sp-2);min-height:44px;font-weight:600;cursor:pointer;list-style:none}.arc-probs summary::-webkit-details-marker{display:none}.arc-probs summary::before{content:"";width:.45rem;height:.45rem;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(-45deg);transition:transform var(--dur-1) var(--ease)}.arc-probs[open] summary::before{transform:rotate(45deg)}.arc-probs ul{margin:var(--sp-1) 0 0;padding-left:1.1rem;line-height:1.6}.arc-quota{font-size:var(--fs-meta);color:var(--txt-2)}.arc-quota b{color:var(--txt);font-family:var(--font-latin)}.arc-quota .is-over{color:var(--err-ink);font-weight:700}.arc-attr{display:grid;gap:var(--sp-2);padding-top:var(--sp-3);border-top:1px solid var(--line)}.arc-zc.is-warn .arc-attr{border-top-color:var(--warn-line)}.arc-attr-h{display:flex;align-items:center;flex-wrap:wrap;gap:var(--sp-2);font-size:var(--fs-body);font-weight:700;line-height:1.4}.arc-attr-h .ic{color:var(--txt-3)}.arc-attr-h small{flex:1 1 100%;font-size:var(--fs-micro);font-weight:500;color:var(--txt-2)}.arc-attr-list{list-style:none;margin:0;padding:0;display:grid;gap:var(--sp-2)}.arc-attr-row{display:grid;grid-template-columns:minmax(9rem,.8fr) minmax(0,1.9fr) minmax(11rem,1fr);gap:var(--sp-2) var(--sp-4);align-items:start;padding:var(--sp-3);background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md)}.arc-attr-nm{min-width:0}.arc-attr-nm b{display:block;line-height:1.35}.arc-attr-nm small{display:block;margin-top:2px;font-family:var(--font-mono);font-size:var(--fs-micro);color:var(--txt-2);overflow-wrap:anywhere}.arc-attr-sug{display:grid;gap:var(--sp-1);min-width:0;font-size:var(--fs-meta);line-height:1.5}.arc-attr-sug small{display:block;font-size:var(--fs-micro);color:var(--txt-2)}.arc-attr-act{display:grid;gap:var(--sp-1);min-width:0}.arc-attr-sel{min-width:0;margin:0;padding:0 var(--sp-3);border-color:var(--line-3);border-radius:var(--r-md);font-size:var(--fs-meta)}.arc-attr-act small{font-size:var(--fs-micro);color:var(--txt-2)}.arc-ai{display:inline-flex;align-items:center;padding:0 var(--sp-1);border:1px solid var(--info-line);border-radius:var(--r-xs);background:var(--info-soft);color:var(--info-ink);font-size:var(--fs-micro);font-weight:800;line-height:1.5;vertical-align:middle}.arc-conf{font-family:var(--font-latin);font-weight:700;white-space:nowrap}.arc-wait{display:inline-flex;align-items:center;gap:var(--sp-2);color:var(--info-ink);font-weight:700}.arc-wait .ic{width:1rem;height:1rem}@media (max-width:980px){.arc-attr-row{grid-template-columns:minmax(0,1fr)}}.arc-retype{display:flex;align-items:center;flex-wrap:wrap;gap:var(--sp-2);margin-top:var(--sp-2);padding:var(--sp-2) var(--sp-3);border:1px dashed var(--warn-line);border-radius:var(--r-sm);background:var(--warn-soft);font-size:var(--fs-micro);color:var(--txt)}.arc-retype .ic{width:1rem;height:1rem;flex:none;color:var(--warn-ink)}.arc-retype input{width:9.5rem;max-width:100%;padding:0 var(--sp-3);border:1px solid var(--line-3);border-radius:var(--r-sm);background:var(--field);color:var(--txt);font-family:var(--font-mono);font-size:var(--fs-meta)}.arc-retype input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-ring)}.arc-who{display:flex;align-items:center;gap:var(--sp-2);min-width:0}.arc-who>span:last-child{min-width:0}.arc-who b{display:block;line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.arc-who .arc-sid{display:block}.arc-role{font-size:var(--fs-micro);color:var(--txt-2)}.arc-addm{display:inline-flex;align-items:center;gap:var(--sp-1);min-height:44px;padding:0 var(--sp-3);border:1px dashed var(--line-3);border-radius:var(--r-sm);background:transparent;color:var(--accent);font-size:var(--fs-meta);font-weight:600;cursor:pointer;transition:border-color var(--dur-1) var(--ease),background-color var(--dur-1) var(--ease)}.arc-addm:hover{border-color:var(--accent);background:var(--accent-soft)}.arc-addm .ic{width:1rem;height:1rem}.arc-merge{display:flex;align-items:flex-start;gap:var(--sp-2);margin-top:var(--sp-2);padding:var(--sp-2) var(--sp-3);border:1px solid var(--info-line);border-radius:var(--r-sm);background:var(--info-soft);font-size:var(--fs-micro);line-height:1.5;color:var(--txt)}.arc-merge .ic{width:1rem;height:1rem;flex:none;margin-top:2px;color:var(--info-ink)}.arc-evtog{display:inline-flex;align-items:center;gap:var(--sp-1);min-height:44px;padding:0 var(--sp-2);border:0;border-radius:var(--r-sm);background:transparent;color:var(--accent);font-size:var(--fs-micro);font-weight:600;white-space:nowrap;cursor:pointer;transition:background-color var(--dur-1) var(--ease)}.arc-evtog:hover{background:var(--accent-soft)}.arc-evtog .ic{width:.95rem;height:.95rem;transition:transform var(--dur-1) var(--ease)}.arc-evtog[aria-expanded="true"] .ic{transform:rotate(180deg)}.arc-sktable .arc-evi>td{padding:var(--sp-3) var(--sp-4);background:var(--surface-3)}.arc-evi-list{list-style:none;margin:0;padding:0;display:grid;gap:var(--sp-2)}.arc-evi-list li{display:grid;grid-template-columns:9rem minmax(0,1fr);gap:var(--sp-3);font-size:var(--fs-meta);line-height:1.6}.arc-evi-list li>b{font-size:var(--fs-micro);color:var(--txt-2)}.arc-evi-list q{color:var(--txt)}.arc-evi-list small{display:block;font-size:var(--fs-micro);color:var(--txt-2)}@media (max-width:760px){.arc-evi-list li{grid-template-columns:minmax(0,1fr);gap:2px}}.arc-diff{list-style:none;margin:0;padding:0;display:grid;gap:var(--sp-2)}.arc-diff>li{display:grid;grid-template-columns:minmax(9rem,.8fr) minmax(0,1.9fr) auto;gap:var(--sp-2) var(--sp-4);align-items:start;padding:var(--sp-3);background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md)}.arc-diff .arc-dlg{grid-column:1/-1}.arc-diff-fs{display:grid;gap:2px;min-width:0;font-size:var(--fs-meta);line-height:1.5}.arc-diff-fs b{font-size:var(--fs-micro);color:var(--txt-2)}.arc-diff-fs .arc-mf{font-family:var(--font-mono);font-size:var(--fs-micro);overflow-wrap:anywhere}@media (max-width:760px){.arc-diff>li{grid-template-columns:minmax(0,1fr)}}.arc-dlg{display:grid;gap:var(--sp-2);margin-top:var(--sp-2);padding:var(--sp-3) var(--sp-4);border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface-3);font-size:var(--fs-meta)}.arc-dlg[hidden]{display:none}.arc-dlg>b{font-size:var(--fs-body);line-height:1.4}.arc-dlg p{line-height:1.55;color:var(--txt-2)}.arc-dlg.is-danger{border-color:var(--err-line);background:var(--err-soft)}.arc-dlg.is-danger p{color:var(--txt)}.arc-remove{margin-top:var(--sp-2);color:var(--err-ink);border-color:var(--err-line)}.arc-remove:hover{background:var(--err-soft);border-color:var(--err-solid);color:var(--err-ink)}:root{--nav-h:65px;--crumb-h:52px}.breadcrumb{position:sticky;margin-left:calc(var(--sp-6)*-1);margin-right:calc(var(--sp-6)*-1);padding-left:var(--sp-6);padding-right:var(--sp-6);border-bottom:1px solid transparent;background:transparent;transition:border-color var(--dur-2) var(--ease),background var(--dur-2) var(--ease),backdrop-filter var(--dur-2) var(--ease);top:var(--nav-h);z-index:60;box-sizing:border-box;height:var(--crumb-h);padding-top:0;padding-bottom:0;flex-wrap:nowrap;white-space:nowrap}.breadcrumb.is-stuck{background:var(--stick-glass);-webkit-backdrop-filter:blur(12px) saturate(130%);backdrop-filter:blur(12px) saturate(130%);border-bottom-color:var(--line-2)}@supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){.breadcrumb{background:transparent}.breadcrumb.is-stuck{background:var(--bg)}}.crumb-act{margin-left:auto;flex:0 0 auto;display:flex;align-items:center}.crumb-act:empty{display:none}.crumb-act .asg-back{margin-bottom:0}.breadcrumb>a,.breadcrumb>span:not(#cdCrumbName){flex:0 0 auto}#cdCrumbName{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis}.tab-pane,#cdSubsDiv{scroll-margin-top:calc(var(--nav-safe-h) + var(--crumb-safe-h) + var(--sp-4))}.upload-zone.primary{border-color:var(--accent);background:var(--accent-soft)}.upload-zone.primary:hover{background:var(--accent-soft-2)}.upload-zone.primary .icon{color:var(--accent)}:root{--nav-safe-h:calc(var(--nav-h) + var(--safe-top));--crumb-safe-h:max(var(--crumb-h),44px)}body.as-student{--nav-h:calc(65px + var(--as-bar-h));--nav-safe-h:calc(var(--nav-h) + var(--safe-top))}html,body{max-width:100%;overflow-x:clip}.page.active:not(#homePage){min-height:100svh;min-height:100dvh;overflow-x:clip}nav,.modal,.table-wrap{border-width:var(--hairline)}nav{min-height:var(--nav-safe-h);padding-top:calc(10px + var(--safe-top));padding-bottom:10px;padding-left:max(var(--sp-8),env(safe-area-inset-left));padding-right:max(var(--sp-8),env(safe-area-inset-right))}.logo{min-width:0}.logo span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.container{width:100%;min-width:0;padding-left:var(--page-pad-left);padding-right:var(--page-pad-right);padding-bottom:max(var(--sp-6),var(--safe-bottom))}@media (min-width:721px){.container.cw-wide{max-width:calc(var(--wrap-max) + 2 * var(--gutter));--page-pad-left:max(var(--gutter),env(safe-area-inset-left));--page-pad-right:max(var(--gutter),env(safe-area-inset-right))}#coursesPage>nav,#courseDetail>nav,#mySkillsPage>nav{padding-left:max(var(--gutter),calc((100% - var(--wrap-max)) / 2),env(safe-area-inset-left));padding-right:max(var(--gutter),calc((100% - var(--wrap-max)) / 2),env(safe-area-inset-right))}}.auth-shell{width:100%;align-items:safe center;overflow-y:auto;overscroll-behavior-y:contain;padding-top:max(var(--sp-6),var(--safe-top));padding-right:max(var(--sp-6),env(safe-area-inset-right));padding-bottom:max(var(--sp-6),var(--safe-bottom));padding-left:max(var(--sp-6),env(safe-area-inset-left))}.breadcrumb{margin-left:calc(var(--page-pad-left)*-1);margin-right:calc(var(--page-pad-right)*-1);padding-left:var(--page-pad-left);padding-right:var(--page-pad-right)}.breadcrumb{top:var(--nav-safe-h);height:var(--crumb-safe-h)}.modal{width:min(600px,100%);max-height:calc(100svh - var(--safe-top) - var(--safe-bottom) - var(--sp-8));max-height:calc(100dvh - var(--safe-top) - var(--safe-bottom) - var(--sp-8));max-height:min(90svh,860px,calc(100svh - var(--safe-top) - var(--safe-bottom) - var(--sp-8)));max-height:min(90dvh,860px,calc(100dvh - var(--safe-top) - var(--safe-bottom) - var(--sp-8)));overflow-y:auto;overscroll-behavior:contain;scrollbar-gutter:stable}.pdf-modal-content{max-width:860px;width:100%;display:flex;flex-direction:column;height:min(88svh,calc(100svh - var(--safe-top) - var(--safe-bottom) - var(--sp-8)));height:min(88dvh,calc(100dvh - var(--safe-top) - var(--safe-bottom) - var(--sp-8)))}.pdf-modal-content iframe{min-height:min(24rem,52dvh)}:where(button,[role="button"],input:not([type="hidden"]):not([type="checkbox"]):not([type="radio"]),select,textarea){min-height:44px}:where(button,.modal-close,.acct-btn,.acct-item,.thm-seg button,.tab-btn,.pill,.subs-chip,.uc-act,.mr-btn,.cs-option,.asg-back,.view-feedback-btn,.admin-corner){min-width:44px;min-height:44px}.pill-group .pill{display:inline-flex;align-items:center}.breadcrumb a{display:inline-flex;align-items:center;min-height:44px}.file-link{display:inline-flex;align-items:center;min-height:44px}#tab-reset label{display:flex;align-items:center;gap:var(--sp-2);min-height:44px}#tab-reset input[type="checkbox"]{width:22px;height:22px;flex:0 0 22px}.table-wrap{width:100%;max-width:100%;overflow-x:auto;overflow-y:auto;overscroll-behavior-inline:contain;-webkit-overflow-scrolling:touch;scrollbar-gutter:stable}.table-wrap table{min-width:100%}#cdSubsDiv .table-wrap table{min-width:720px}#adminDash .table-wrap table{min-width:max(100%,680px)}.admin-account-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;max-width:520px}.tab-btn{flex:0 0 auto;white-space:nowrap}#cdTabBar{flex-wrap:wrap}@media (max-width:720px){:root{--page-pad:var(--sp-4)}nav{padding-left:var(--page-pad-left);padding-right:var(--page-pad-right);gap:var(--sp-2)}.gtip-anchor{position:static}.gtip{top:calc(100% + var(--sp-1));left:var(--page-pad-left);right:var(--page-pad-right);width:auto;display:flex;flex-direction:column}.gtip-t{order:1}.gtip-act{order:2}.gtip-d{order:3}.gtip-b{order:4}.gtip-w{order:5}.notif-mount{position:static}.notif-panel{left:var(--page-pad-left);right:var(--page-pad-right);width:auto;top:calc(100% + var(--sp-1))}.container{padding-top:var(--sp-4)}.section{padding:var(--sp-4)}.course-grid,.ucan-grid,.ucan-grid.pending{grid-template-columns:minmax(0,1fr)}.course-card.cc-lead{grid-column:span 1}.cs-toolbar{position:static;align-items:stretch}.cs-toolbar .cs,.cs-toolbar .tb-search{flex:1 1 100%;width:100%;min-width:0}.cs-toolbar .pill-group{width:100%}.tb-spacer{display:none}.new-assign-primary{flex-wrap:wrap}.new-assign-primary>*{flex:1 1 100%;min-width:0}.subs-edit-actions,.subs-edit textarea,.subs-edit .edit-hint{max-width:calc(100vw - 64px);box-sizing:border-box}.admin-account-grid{grid-template-columns:1fr;max-width:none}.stat-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.stat-card{min-width:0}#adminDash .adm-sidebar{position:fixed;left:0;top:0;bottom:0;height:100dvh;width:80vw;max-width:296px;background:var(--nav-bg);color:var(--nav-fg);overflow-y:auto;transform:translateX(-100%);transition:transform var(--dur-2) var(--ease-out);box-shadow:var(--sh-4);z-index:300}#adminDash .adm-sidebar.open{transform:none}#adminDash .adm-drawer-backdrop{display:block;position:fixed;inset:0;background:var(--overlay);z-index:290;opacity:0;pointer-events:none;transition:opacity var(--dur-2) var(--ease)}#adminDash .adm-drawer-backdrop.open{opacity:1;pointer-events:auto}#adminDash .adm-topbar{display:flex;align-items:center;gap:10px;padding:10px var(--sp-4);background:var(--nav-bg);color:var(--nav-fg);border-bottom:2px solid var(--nav-line);position:sticky;top:var(--nav-safe-h);z-index:200}#adminDash .adm-hb{background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.18);color:var(--nav-fg);border-radius:var(--r-sm);width:36px;height:36px;font-size:1.05rem;cursor:pointer;flex:0 0 auto;display:flex;align-items:center;justify-content:center}#adminDash .adm-tb-title{font-weight:800;font-size:var(--fs-md);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#adminDash .adm-main{padding:var(--sp-4) var(--sp-4) var(--sp-8)}#adminDash .adm-wall-grid,#adminDash .adm-stat-tiles{grid-template-columns:1fr}#adminDash .adm-gauge-group{grid-template-columns:repeat(2,1fr)}#adminDash .adm-kv{grid-template-columns:110px 1fr}#adminDash .adm-danger-row{flex-direction:column;align-items:flex-start}}@media (max-width:480px){.logo span{display:none}.acct-nm{display:none}.acct-btn{padding:5px}.acct-caret{display:none}.card{padding:var(--sp-6) var(--sp-5)}.modal{--modal-pad:var(--sp-5);border-radius:var(--r-lg)}.uc-detail-head{flex-direction:column}.stat-grid{grid-template-columns:1fr}.asg-main{flex-basis:100%}.asg-count{margin-left:0;text-align:left;display:flex;align-items:baseline;gap:var(--sp-2)}.asg-count b{display:inline}}@media (max-height:500px){.auth-shell{align-items:flex-start}.modal-overlay{align-items:flex-start}.acct-menu{max-height:calc(100dvh - var(--nav-safe-h) - var(--safe-bottom))}.gtip{display:flex;flex-direction:column;max-height:calc(100svh - var(--nav-safe-h) - var(--sp-6));max-height:calc(100dvh - var(--nav-safe-h) - var(--sp-6))}.gtip-t,.gtip-d,.gtip-w,.gtip-act{flex:0 0 auto}.gtip-b{flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;pointer-events:auto}}@media (max-width:767px){.modal-overlay{align-items:flex-end;padding-left:0;padding-right:0;padding-bottom:0}.modal{width:100%;max-width:none!important;border-bottom-left-radius:0;border-bottom-right-radius:0;padding-bottom:calc(var(--modal-pad) + env(safe-area-inset-bottom));max-height:min(90svh,calc(100svh - var(--safe-top) - var(--sp-8)));max-height:min(90dvh,calc(100dvh - var(--safe-top) - var(--sp-8)))}.modal>.modal-foot{padding-bottom:calc(var(--modal-pad) + env(safe-area-inset-bottom))}.modal-overlay.show>.modal{animation:m-sheet-in var(--dur-3) var(--ease-out) both}.modal-overlay.m-closing>.modal{animation:m-sheet-out var(--dur-0) var(--ease-in-out) both}.pdf-modal-content{max-width:none;height:min(88dvh,calc(100dvh - var(--safe-top) - var(--sp-8)))}}.notif-mount{display:flex;align-items:center}@media (min-width:721px){.notif-mount{position:relative}}.notif-btn{position:relative;display:flex;align-items:center;justify-content:center;width:40px;height:40px;padding:0;border-radius:var(--r-full);background:transparent;border:1px solid transparent;color:var(--nav-fg);cursor:pointer;transition:background var(--dur-1) var(--ease)}.notif-btn:hover{background:var(--nav-hover)}.notif-btn[aria-expanded="true"]{background:var(--nav-hover);border-color:var(--nav-line)}.notif-btn .ic{width:1.3em;height:1.3em}.notif-badge{position:absolute;top:2px;right:2px;min-width:16px;height:16px;padding:0 4px;border-radius:var(--r-full);background:var(--err-solid);color:var(--on-solid);font-size:10px;font-weight:700;line-height:16px;text-align:center}.notif-badge[hidden]{display:none}.notif-panel{position:absolute;max-height:min(70svh,480px);max-height:min(70dvh,480px);overflow-y:auto;overscroll-behavior:contain;background:var(--surface-2);color:var(--txt);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--sh-4);padding:var(--sp-2);z-index:300;opacity:0;transform:translateY(-6px) scale(.96);pointer-events:none;transform-origin:top right;visibility:hidden;transition:opacity var(--dur-0) var(--ease-in-out),transform var(--dur-0) var(--ease-in-out),visibility 0s linear var(--dur-0)}@media (min-width:721px){.notif-panel{top:calc(100% + 10px);right:0;left:auto;width:min(22rem,calc(100vw - var(--sp-8) - var(--sp-8)))}}.notif-panel.open{opacity:1;transform:none;pointer-events:auto;visibility:visible;transition:opacity var(--dur-2) var(--ease-out),transform var(--dur-2) var(--ease-out),visibility 0s linear 0s}.notif-head{padding:var(--sp-2) var(--sp-3) var(--sp-1);font-size:var(--fs-2xs);font-weight:700;letter-spacing:1px;color:var(--txt-3)}.notif-stale{margin:0 var(--sp-2) var(--sp-2);padding:var(--sp-2) var(--sp-3);border-radius:var(--r-sm);background:var(--err-soft);color:var(--err-ink);font-size:var(--fs-xs);font-weight:600}.notif-stale[hidden]{display:none}.notif-empty{padding:var(--sp-6) var(--sp-3);text-align:center;color:var(--txt-3);font-size:var(--fs-sm)}.notif-item{width:100%;display:flex;align-items:flex-start;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);border:none;border-radius:var(--r-sm);background:transparent;color:var(--txt);font-family:inherit;text-align:left;cursor:pointer;transition:background var(--dur-1) var(--ease)}.notif-item:hover{background:var(--accent-soft)}.notif-item-ic{flex:0 0 auto;font-size:var(--fs-lg);line-height:1.3}.notif-item-txt{min-width:0;display:flex;flex-direction:column;gap:1px}.notif-item-course{font-size:var(--fs-sm);font-weight:600;color:var(--txt);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.notif-item-label{font-size:var(--fs-xs);color:var(--txt-2)}.imp-pending{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--sp-3);margin-bottom:var(--sp-4);padding:var(--sp-3) var(--sp-4);background:var(--warn-soft);border:1px solid var(--warn-line);color:var(--warn-ink);border-radius:var(--r-md);font-size:var(--fs-sm)}.imp-pending-act{display:flex;gap:var(--sp-2);flex-wrap:wrap}.imp-report{margin-top:var(--sp-3)}.imp-summary{display:flex;flex-wrap:wrap;gap:var(--sp-2);margin-bottom:var(--sp-3)}.imp-stat{flex:1 1 5.5rem;min-width:5.5rem;text-align:center;padding:var(--sp-2) var(--sp-1);border-radius:var(--r-sm);background:var(--surface-2);border:1px solid var(--line)}.imp-stat b{display:block;font-size:var(--fs-lg,1.1rem);line-height:1.3}.imp-stat span{display:block;font-size:var(--fs-2xs);color:var(--txt-3)}.imp-stat-insert{background:var(--ok-soft);border-color:var(--ok-line);color:var(--ok-ink)}.imp-stat-update{background:var(--accent-soft,var(--surface-2));border-color:var(--line)}.imp-stat-noop{color:var(--txt-3)}.imp-stat-error{background:var(--err-soft);border-color:var(--err-line);color:var(--err-ink)}.imp-gate{padding:var(--sp-2) var(--sp-3);border-radius:var(--r-sm);margin-bottom:var(--sp-3);font-size:var(--fs-sm);font-weight:600}.imp-gate-ok{background:var(--ok-soft);border:1px solid var(--ok-line);color:var(--ok-ink)}.imp-gate-block{background:var(--err-soft);border:1px solid var(--err-line);color:var(--err-ink)}.imp-rows{display:flex;flex-direction:column;gap:var(--sp-2);max-height:22rem;overflow-y:auto;overscroll-behavior:contain;margin-bottom:var(--sp-3);padding-right:2px}.imp-row{border:1px solid var(--line);border-radius:var(--r-sm);padding:var(--sp-2) var(--sp-3);background:var(--surface-2)}.imp-row-error{border-color:var(--err-line);background:var(--err-soft)}.imp-row-warn{border-color:var(--warn-line)}.imp-row-noop{border-color:var(--line-3);opacity:.8}.imp-row-ok{border-color:var(--ok-line)}.imp-row-head{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-2);font-size:var(--fs-xs);font-weight:700;margin-bottom:4px}.imp-row-num{color:var(--txt-3)}.imp-row-fields{display:flex;flex-wrap:wrap;gap:var(--sp-1) var(--sp-3);font-size:var(--fs-sm)}.imp-field b{color:var(--txt-3);font-weight:600}.imp-row-msgs{margin:6px 0 0;padding-left:1.1em;font-size:var(--fs-xs)}.imp-msg-error{color:var(--err-ink)}.imp-msg-warning{color:var(--warn-ink)}.imp-warn-block{display:flex;gap:var(--sp-2);align-items:flex-start;background:var(--warn-soft);border:1px solid var(--warn-line);border-radius:var(--r-sm);padding:var(--sp-2) var(--sp-3);margin:0 0 var(--sp-3)}.imp-warn-block-icon{flex:0 0 auto;font-size:var(--fs-md);line-height:1.3}.imp-warn-block ul{margin:0;padding-left:1.1em;font-size:var(--fs-sm)}.imp-warn-block li{color:var(--warn-ink)}.imp-warn-block li+li{margin-top:4px}.imp-actions{display:flex;gap:var(--sp-2);flex-wrap:wrap}.imp-apply-warn-hint{align-self:center;font-size:var(--fs-xs);color:var(--warn-ink);font-weight:600}.imp-actions .upload-btn,.imp-actions .btn-secondary{flex:1 1 14rem;margin-top:0;padding:10px 16px}.imp-actions .upload-btn:disabled{opacity:.55;cursor:not-allowed}.imp-report>.imp-actions{margin-bottom:var(--sp-3)}.imp-report>.imp-rows{margin-bottom:0}.imp-pending-unknown{background:var(--surface-2);border-color:var(--line-3);color:var(--txt-2)}.imp-done{background:var(--ok-soft);border:1px solid var(--ok-line);color:var(--ok-ink);padding:var(--sp-3);border-radius:var(--r-sm);font-size:var(--fs-sm)}.imp-done-note{margin-bottom:var(--sp-2);padding-bottom:var(--sp-2);border-bottom:1px solid var(--ok-line);font-size:var(--fs-xs);font-weight:600;line-height:1.5}.gb-dropzone{border:2px dashed var(--line-3);border-radius:var(--r-md);padding:var(--sp-5) var(--sp-3);text-align:center;cursor:pointer;color:var(--txt-3);font-size:var(--fs-sm);margin-bottom:var(--sp-2);transition:border-color var(--dur-1) var(--ease-out),background var(--dur-1) var(--ease-out)}.gb-dropzone:hover,.gb-dropzone.gb-drop-over{border-color:var(--accent,var(--line-3));background:var(--surface-2)}.gb-dropzone .ic{width:28px;height:28px;margin-bottom:6px;opacity:.7}.gb-file-label{margin-top:4px;font-weight:600;color:var(--txt-2)}.gb-sheet-list{display:flex;flex-direction:column;gap:var(--sp-2);max-height:26rem;overflow-y:auto;overscroll-behavior:contain;margin:var(--sp-2) 0;padding-right:2px}.gb-sheet-card{border:1px solid var(--line);border-radius:var(--r-sm);padding:var(--sp-2) var(--sp-3);background:var(--surface-2)}.gb-sheet-create{border-color:var(--ok-line)}.gb-sheet-diff{border-color:var(--accent-soft-2)}.gb-sheet-blocked,.gb-sheet-error{border-color:var(--err-line);background:var(--err-soft)}.gb-sheet-unmatched{border-color:var(--warn-line)}.gb-sheet-head{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-2);flex-wrap:wrap}.gb-sheet-check{display:flex;align-items:center;gap:6px;font-weight:700;cursor:pointer}.gb-sheet-check input[disabled]{cursor:not-allowed}.gb-sheet-name{font-size:var(--fs-sm)}.gb-sheet-body{margin-top:6px}.gb-sheet-meta{display:flex;flex-wrap:wrap;gap:4px var(--sp-2);font-size:var(--fs-xs);color:var(--txt-2);margin-bottom:2px}.gb-sheet-counts{font-size:var(--fs-xs);color:var(--txt-3)}.gb-sheet-reason{margin-top:4px;font-size:var(--fs-xs);color:var(--err-ink)}.gb-needs{margin-top:6px;padding-top:6px;border-top:1px dashed var(--line-3)}.gb-needs .mf-label{margin-top:4px;font-size:var(--fs-2xs)}.gb-needs .mf-input{padding:6px 8px;margin-bottom:4px}.gb-offering-choice{display:flex;align-items:center;gap:8px;padding:6px 4px;font-size:var(--fs-sm);cursor:pointer}.gb-offering-choice input[type="radio"]{flex:0 0 auto}.gb-offering-choice span{color:var(--txt-2)}.gb-badge{font-size:var(--fs-2xs);font-weight:700;padding:2px 8px;border-radius:999px;white-space:nowrap}.gb-badge-create{background:var(--ok-soft);color:var(--ok-ink)}.gb-badge-diff{background:var(--warn-soft);color:var(--warn-ink)}.gb-badge-blocked,.gb-badge-error{background:var(--err-soft);color:var(--err-ink)}.gb-badge-unmatched{background:var(--surface-3);color:var(--txt-2)}.gb-diff-list{display:flex;flex-direction:column;gap:var(--sp-1);max-height:16rem;overflow-y:auto;overscroll-behavior:contain;margin-bottom:var(--sp-2)}.gb-plan-file{font-size:var(--fs-xs);color:var(--txt-3);padding:6px var(--sp-2);margin-bottom:var(--sp-2);background:var(--surface-2);border-radius:var(--r-sm);word-break:break-all}.gb-plan-file b{color:var(--txt-2)}.gb-check-row{cursor:pointer;gap:var(--sp-2)}.gb-check-row input[type=checkbox]{width:16px;height:16px;flex:none}.gb-check-row input[disabled]{cursor:not-allowed}.imp-pending button:disabled,.imp-actions button:disabled{opacity:.55}.grade-overall{display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap;margin:var(--sp-2) 0;padding:var(--sp-2) var(--sp-3);border-radius:var(--r-md);border:1px solid var(--line-2);background:var(--surface-3);font-size:var(--fs-sm)}.grade-overall-label{color:var(--txt-3);font-weight:600}.grade-tier-badge{display:inline-block;padding:2px var(--sp-2);border-radius:var(--r-full);font-weight:700;font-size:var(--fs-sm)}.grade-overall-note{color:var(--txt-2);font-size:var(--fs-meta);line-height:1.5;padding:var(--sp-2) var(--sp-3);border-radius:var(--r-md);border:1px dashed var(--line-3);background:var(--surface-3)}.grade-items{display:flex;flex-direction:column;gap:var(--sp-2);margin:var(--sp-2) 0}.grade-item-card{padding:var(--sp-2) var(--sp-3);border-radius:var(--r-md);border:1px solid var(--line-2);background:var(--surface-2)}.grade-item-title{font-size:var(--fs-sm);font-weight:600;color:var(--txt)}.grade-item-tier{font-size:var(--fs-meta);font-weight:700;margin-top:2px}.grade-item-tier-note{font-weight:500;color:var(--txt-2)}.grade-item-desc{font-size:var(--fs-meta);color:var(--txt-2);margin-top:4px;line-height:1.5}.grade-overall.grade-tier-excellent .grade-tier-badge,.grade-item-card.grade-tier-excellent .grade-item-tier{background:var(--ok-soft);color:var(--ok-ink)}.grade-overall.grade-tier-good .grade-tier-badge,.grade-item-card.grade-tier-good .grade-item-tier{background:var(--accent-soft);color:var(--accent)}.grade-overall.grade-tier-fair .grade-tier-badge,.grade-item-card.grade-tier-fair .grade-item-tier{background:var(--warn-soft);color:var(--warn-ink)}.grade-overall.grade-tier-needs .grade-tier-badge,.grade-item-card.grade-tier-needs .grade-item-tier{background:var(--warn-soft);color:var(--warn-ink);border:1px solid var(--warn-line)}.grade-overall.grade-tier-below .grade-tier-badge,.grade-item-card.grade-tier-below .grade-item-tier{background:var(--err-soft);color:var(--err-ink)}.modal pre .grade-overall,.modal pre .grade-items,.modal pre .student-feedback{font-family:var(--font-ui)}.modal pre .grade-overall,.modal pre .grade-overall-note{background:var(--surface-2)}.fb-card{border-radius:var(--r-md);padding:var(--sp-2) var(--sp-3);margin:var(--sp-2) 0;border:1px solid var(--line-2)}.fb-card-label{font-weight:700;font-size:var(--fs-sm);margin-bottom:4px}.fb-card-body{font-size:var(--fs-body);color:var(--txt);white-space:pre-wrap;overflow-wrap:anywhere}.fb-card-teacher{background:var(--accent-soft-2);border-color:var(--accent)}.fb-card-teacher .fb-card-label{color:var(--accent-active)}.fb-card-ai{background:var(--accent-soft);border-color:var(--accent-soft-2)}.fb-card-ai .fb-card-label{color:var(--accent)}.fb-card-ai .grade-overall{background:transparent;border:none;margin:0 0 var(--sp-2) 0;padding:0}.modal pre .fb-card{font-family:var(--font-ui)}.grade-item-card.grade-item-pending{border-color:var(--warn-line);background:var(--warn-soft)}.grade-item-card.grade-item-pending .grade-item-title{color:var(--warn-ink)}.grade-item-card.grade-item-pending .grade-item-tier-note{color:var(--warn-ink);font-weight:600}.grade-item-card.grade-item-teacher{border-color:var(--ok-line);background:var(--surface-2)}.grade-item-card.grade-item-teacher .grade-item-tier-note{color:var(--ok-ink)}.crit-score-row{display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap;margin-top:var(--sp-2)}.crit-score-row label{font-size:var(--fs-meta);color:var(--txt-2);margin:0}.crit-score-row .score-input{width:64px}.crit-score-hint{font-size:var(--fs-micro);color:var(--txt-3)}.score-total-note{display:block;width:100%;font-size:var(--fs-meta);line-height:1.5;padding:var(--sp-2) var(--sp-3);border-radius:var(--r-md);border:1px solid var(--warn-line);background:var(--warn-soft);color:var(--warn-ink);margin-bottom:var(--sp-2)}.score-total-note.is-ready{border-color:var(--ok-line);background:var(--ok-soft);color:var(--ok-ink)}.score-total-note.is-override{border-color:var(--line-2);background:var(--surface-3);color:var(--txt-2)}#adminDash .adm-shell{display:flex;align-items:stretch;min-height:calc(100dvh - var(--nav-safe-h))}@media (min-width:721px){#adminDash .adm-sidebar{width:232px;flex:0 0 232px;background:var(--nav-bg);color:var(--nav-fg);position:sticky;top:var(--nav-safe-h);height:calc(100dvh - var(--nav-safe-h));overflow-y:auto;z-index:40}}#adminDash .adm-side-nav{padding:var(--sp-4) var(--sp-2)}#adminDash .adm-side-group{margin-bottom:var(--sp-4)}#adminDash .adm-side-group-label{font-size:var(--fs-2xs);font-weight:800;letter-spacing:.06em;color:var(--nav-fg-2);padding:4px var(--sp-3) 6px;display:flex;align-items:center;gap:6px}#adminDash .adm-nav-item{display:flex;align-items:center;gap:9px;text-align:left;width:100%;padding:9px var(--sp-3);border:0;background:transparent;color:var(--nav-fg-2);border-radius:var(--r-md);font-size:var(--fs-sm);font-weight:600;cursor:pointer;margin-bottom:2px;transition:background var(--dur-1) var(--ease),color var(--dur-1) var(--ease)}#adminDash .adm-nav-item:hover{background:var(--nav-hover);color:var(--nav-fg)}#adminDash .adm-nav-item.active{background:rgba(255,255,255,.16);color:var(--nav-fg);font-weight:700}#adminDash .adm-nav-item.active::after{content:"";margin-left:auto;width:5px;height:5px;border-radius:var(--r-full);background:var(--niu-gold)}#adminDash .adm-nav-item.adm-nav-top{font-size:var(--fs-base);font-weight:700;color:var(--nav-fg)}#adminDash .adm-nav-item.adm-nav-warnish{color:var(--niu-red)}#adminDash .adm-badge{margin-left:auto;font-family:var(--font-latin);font-size:var(--fs-2xs);font-weight:800;background:rgba(255,255,255,.16);border-radius:var(--r-full);padding:1px 7px}#adminDash .adm-nav-item.active .adm-badge{background:rgba(0,0,0,.22)}#adminDash .adm-content{flex:1;min-width:0;display:flex;flex-direction:column}@media (min-width:721px){#adminDash .adm-topbar{display:none}}#adminDash .adm-main{flex:1;min-width:0;max-width:none}@media (min-width:721px){#adminDash .adm-main{padding:var(--sp-6) var(--sp-7) var(--sp-10)}}#adminDash .adm-crumb{font-size:var(--fs-xs);color:var(--txt-3);margin-bottom:3px}#adminDash .adm-page-head{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-4);flex-wrap:wrap;margin-bottom:var(--sp-5)}#adminDash .adm-page-title{font-size:var(--fs-2xl);font-weight:800;letter-spacing:-.015em;display:flex;align-items:center;gap:10px}#adminDash .adm-page-title svg.ic{color:var(--accent)}#adminDash .adm-page-kicker{font-size:var(--fs-xs);color:var(--txt-3)}#adminDash .adm-ov-head-right{display:flex;align-items:center;gap:var(--sp-4);flex-wrap:wrap}#adminDash .adm-freq-picker{display:inline-flex;border:1px solid var(--line);border-radius:var(--r-full);padding:2px;background:var(--surface-2);gap:2px}#adminDash .adm-freq-btn{border:0;background:transparent;color:var(--txt-3);font-family:var(--font-latin);font-size:var(--fs-2xs);font-weight:800;padding:4px 10px;border-radius:var(--r-full);cursor:pointer;transition:background var(--dur-1) var(--ease),color var(--dur-1) var(--ease)}#adminDash .adm-freq-btn:hover{color:var(--txt)}#adminDash .adm-freq-btn.active{background:var(--accent-solid);color:var(--on-solid)}#adminDash .adm-page{display:none}#adminDash .adm-page.active{display:block;animation:m-rise-sm var(--dur-2) var(--ease-out) both}#adminDash .adm-panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--sh-1);margin-bottom:var(--sp-4)}#adminDash .adm-panel-head{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);border-bottom:1px solid var(--line-2)}#adminDash .adm-panel-head h3{font-size:var(--fs-md);font-weight:800;display:flex;align-items:center;gap:8px}#adminDash .adm-panel-head h3 svg.ic{color:var(--accent)}#adminDash .adm-panel-body{padding:var(--sp-4)}#adminDash .adm-panel-body.tight{padding:0}#adminDash .adm-panel-body h4{font-size:var(--fs-md);font-weight:800;margin-bottom:var(--sp-3)}#adminDash .adm-hint{font-size:var(--fs-sm);color:var(--txt-2);line-height:1.7;max-width:70ch;margin-bottom:var(--sp-4)}#adminDash .adm-hint b{color:var(--txt)}#adminDash .adm-stat-tiles{display:grid;gap:var(--sp-3);margin-bottom:var(--sp-4)}@media (min-width:721px){#adminDash .adm-stat-tiles{grid-template-columns:repeat(3,1fr)}}#adminDash .adm-tile{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:var(--sp-4);box-shadow:var(--sh-1)}#adminDash .adm-tile .adm-t-lbl{font-size:var(--fs-xs);color:var(--txt-3);font-weight:700;margin-bottom:7px;display:flex;align-items:center;justify-content:space-between;gap:8px}#adminDash .adm-tile .adm-t-val{font-family:var(--font-latin);font-variant-numeric:tabular-nums;font-size:var(--fs-3xl);font-weight:800;line-height:1;letter-spacing:-.02em}#adminDash .adm-tile .adm-t-val.sm{font-size:var(--fs-xl)}#adminDash .adm-tile .adm-t-sub{font-size:var(--fs-micro);color:var(--txt-3);margin-top:6px}#adminDash .adm-spark{display:block;width:100%;height:22px;margin-top:6px}#adminDash .adm-spark-line{fill:none;stroke:var(--accent);stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}#adminDash .adm-wall-grid{display:grid;gap:var(--sp-4);margin-bottom:var(--sp-4);align-items:stretch}#adminDash .adm-kv{display:grid;gap:7px var(--sp-4);font-size:var(--fs-sm)}@media (min-width:721px){#adminDash .adm-wall-grid{grid-template-columns:repeat(3,1fr)}#adminDash .adm-kv{grid-template-columns:minmax(96px,140px) 1fr}}#adminDash .adm-kv dt{color:var(--txt-3);font-weight:700}#adminDash .adm-kv dd{color:var(--txt)}#adminDash .adm-kv.compact{gap:3px var(--sp-3);font-size:var(--fs-xs)}@media (min-width:721px){#adminDash .adm-kv.compact{grid-template-columns:auto 1fr}}#adminDash .adm-vllm-lanes{display:grid;gap:var(--sp-3)}@media (min-width:721px){#adminDash .adm-vllm-lanes{grid-template-columns:repeat(4,1fr)}}#adminDash .adm-vllm-lane{border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface-2);padding:var(--sp-3);display:flex;flex-direction:column;gap:6px}#adminDash .adm-vllm-lane-name{font-size:var(--fs-xs);color:var(--txt-3);font-weight:700}#adminDash .adm-vllm-lane-model{font-family:var(--font-latin);font-size:var(--fs-sm);color:var(--txt);overflow-wrap:anywhere}#adminDash .adm-vllm-lane .adm-pill{align-self:flex-start}#adminDash .adm-gauge-group{display:grid;gap:var(--sp-4);padding:var(--sp-2) 0}@media (min-width:721px){#adminDash .adm-gauge-group{grid-template-columns:repeat(auto-fit,minmax(88px,1fr))}}#adminDash .adm-gauge-div{border-top:1px solid var(--line-2);margin:0}@media (min-width:721px){#adminDash .adm-gauge-group.sub{grid-template-columns:repeat(auto-fit,minmax(72px,1fr))}}#adminDash .adm-gauge-item{display:flex;flex-direction:column;align-items:center;text-align:center;gap:0}#adminDash .adm-gauge{position:relative;width:88px;height:88px;flex:0 0 auto}#adminDash .adm-gauge.lg{width:116px;height:116px}#adminDash .adm-gauge.sm{width:72px;height:72px}#adminDash .adm-gauge svg{width:100%;height:100%;transform:rotate(-90deg);display:block;overflow:visible}#adminDash .adm-gauge-track{fill:none;stroke:var(--line);stroke-width:9}#adminDash .adm-gauge-arc{fill:none;stroke:var(--accent-solid);stroke-width:9;stroke-linecap:round;transition:stroke-dashoffset var(--dur-3) var(--ease-out)}#adminDash .adm-gauge.ok .adm-gauge-arc{stroke:var(--ok-solid)}#adminDash .adm-gauge.warn .adm-gauge-arc{stroke:var(--warn-solid)}#adminDash .adm-gauge.err .adm-gauge-arc{stroke:var(--err-solid)}#adminDash .adm-gauge.unknown .adm-gauge-arc{stroke:var(--line-3)}#adminDash .adm-gauge.nolimit .adm-gauge-arc{stroke:transparent}#adminDash .adm-gauge-center{position:absolute;inset:0;display:flex;align-items:center;justify-content:center}#adminDash .adm-gauge-num{font-family:var(--font-latin);font-variant-numeric:tabular-nums;font-weight:800;font-size:var(--fs-xl);line-height:1;letter-spacing:-.01em;color:var(--txt)}#adminDash .adm-gauge.lg .adm-gauge-num{font-size:var(--fs-2xl)}#adminDash .adm-gauge.sm .adm-gauge-num{font-size:var(--fs-sm)}#adminDash .adm-gauge.unknown .adm-gauge-num{color:var(--txt-4);font-size:var(--fs-sm);font-weight:700}#adminDash .adm-gauge.sm.unknown .adm-gauge-num{font-size:var(--fs-2xs)}#adminDash .adm-gauge-num .adm-gauge-unit{font-size:.6em;font-weight:700;margin-left:1px;color:var(--txt-3)}#adminDash .adm-gauge-lbl{font-size:var(--fs-xs);font-weight:700;color:var(--txt-2);margin-top:7px}#adminDash .adm-gauge-sub{font-size:var(--fs-2xs);color:var(--txt-3);font-family:var(--font-latin);font-variant-numeric:tabular-nums}#adminDash .adm-gauge-sub2{font-size:var(--fs-micro);color:var(--txt-4);margin-top:1px}#adminDash .adm-cap-row{display:flex;flex-direction:column;align-items:center;gap:var(--sp-3);flex:1 1 auto;min-height:0}#adminDash .adm-cap{position:relative;flex:1 1 auto;width:56px;min-height:140px;border-radius:var(--r-xl);background:var(--surface-3);border:1px solid var(--line);overflow:hidden;cursor:default}#adminDash .adm-cap-fill{position:absolute;left:0;right:0;bottom:0;height:100%;background:var(--accent-solid);transform:scaleY(var(--cap-fill,0));transform-origin:bottom;transition:transform var(--dur-3) var(--ease-out)}#adminDash .adm-cap-row.ok .adm-cap-fill{background:var(--ok-solid)}#adminDash .adm-cap-row.warn .adm-cap-fill{background:var(--warn-solid)}#adminDash .adm-cap-row.err .adm-cap-fill{background:var(--err-solid)}#adminDash .adm-cap-row.unknown .adm-cap-fill{background:var(--line-3)}#adminDash .adm-cap-side{flex:0 0 auto;width:100%;min-width:0;display:flex;flex-direction:column;align-items:center;text-align:center;gap:2px}#adminDash .adm-cap-num{font-family:var(--font-latin);font-variant-numeric:tabular-nums;font-weight:800;font-size:var(--fs-2xl);line-height:1;letter-spacing:-.02em;color:var(--txt)}#adminDash .adm-cap-num.mut{font-size:var(--fs-sm);font-weight:700;color:var(--txt-4)}#adminDash .adm-cap-lbl{font-size:var(--fs-xs);font-weight:700;color:var(--txt-2)}#adminDash .adm-cap-sub{font-size:var(--fs-2xs);color:var(--txt-3);font-family:var(--font-latin);font-variant-numeric:tabular-nums;overflow-wrap:anywhere}#adminDash .adm-cap-side .adm-kv.compact{margin-top:auto;padding-top:var(--sp-2);display:flex;flex-wrap:wrap;justify-content:center;gap:0 6px}#adminDash .adm-cap-side .adm-kv.compact dt,#adminDash .adm-cap-side .adm-kv.compact dd{margin:0}#adminDash .adm-wall-grid>.adm-panel,#adminDash .adm-wall-side>.adm-panel{margin-bottom:0;display:flex;flex-direction:column}#adminDash .adm-wall-grid>.adm-panel>.adm-panel-body,#adminDash .adm-wall-side>.adm-panel>.adm-panel-body{flex:1 1 auto;display:flex;flex-direction:column;min-height:0}#adminDash .adm-wall-side{display:flex;flex-direction:column;gap:var(--sp-4);min-width:0}#adminDash .adm-wall-side>.adm-panel{min-width:0;flex:1 1 auto}#adminDash .adm-panel-wide>.adm-panel-body>.adm-gauge-group{flex:1 1 auto;align-content:center}#adminDash .adm-pill{display:inline-flex;align-items:center;gap:5px;font-size:var(--fs-2xs);font-weight:800;padding:2px 9px;border-radius:var(--r-full);border:1px solid transparent;line-height:1.7;white-space:nowrap}#adminDash .adm-pill.ok{background:var(--ok-soft);color:var(--ok-ink);border-color:var(--ok-line)}#adminDash .adm-pill.warn{background:var(--warn-soft);color:var(--warn-ink);border-color:var(--warn-line)}#adminDash .adm-pill.err{background:var(--err-soft);color:var(--err-ink);border-color:var(--err-line)}#adminDash .adm-pill.info{background:var(--info-soft);color:var(--info-ink);border-color:var(--info-line)}#adminDash .adm-pill.mut{background:var(--surface-3);color:var(--txt-3);border-color:var(--line)}#adminDash .adm-pill .adm-dot{width:6px;height:6px;border-radius:var(--r-full);background:currentColor}#adminDash .adm-toolbar{display:flex;gap:var(--sp-2);align-items:center;flex-wrap:wrap;margin-bottom:var(--sp-3);--ad-ctrl-h:44px}#adminDash .adm-search-box{position:relative;flex:1 1 260px;min-width:200px;height:var(--ad-ctrl-h)}#adminDash .adm-search-box input{width:100%;height:100%;box-sizing:border-box;padding:0 14px 0 34px;font-size:var(--fs-base)}#adminDash .adm-search-box svg.ic{position:absolute;left:11px;top:50%;transform:translateY(-50%);color:var(--txt-3);pointer-events:none;font-size:1em}#adminDash #adStuDept,#adminDash #adStuSem{width:auto;flex:0 1 160px;min-width:112px}#adminDash .adm-toolbar select{height:var(--ad-ctrl-h);box-sizing:border-box;margin-bottom:0;font-size:var(--fs-base);padding:0 14px}#adminDash .adm-toolbar .adm-pill{height:var(--ad-ctrl-h);box-sizing:border-box}#adminDash .adm-toolbar .adm-list-refresh{height:var(--ad-ctrl-h);box-sizing:border-box;display:inline-flex;align-items:center;gap:6px;margin:0;padding:0 14px;font-size:var(--fs-sm);white-space:nowrap}#adminDash .adm-toolbar .adm-list-refresh svg.ic{font-size:1em}#adminDash .adm-list-stamp{font-size:var(--fs-2xs);color:var(--txt-3);font-variant-numeric:tabular-nums;white-space:nowrap;margin-left:auto}#adminDash .adm-lookup-card{border:1px solid var(--line);border-radius:var(--r-md);padding:var(--sp-4);background:var(--surface-2);margin-bottom:var(--sp-3)}#adminDash .adm-lookup-empty{color:var(--txt-3);font-size:var(--fs-sm);padding:var(--sp-8) 0;text-align:center;border:1px dashed var(--line);border-radius:var(--r-md)}#adminDash .adm-lookup-top{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--sp-3);flex-wrap:wrap}#adminDash .adm-lookup-name{font-weight:800;font-size:var(--fs-base)}#adminDash .adm-lookup-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:var(--sp-3)}#adminDash .adm-lookup-actions button{padding:8px 16px;font-size:var(--fs-base);white-space:nowrap;margin-top:0}#adminDash .table-wrap td .upload-btn{margin-top:0}#adminDash .adm-action-copy{font-size:var(--fs-xs);color:var(--txt-3);margin-top:8px;line-height:1.7}#adminDash .adm-acct-row{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3);border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface-2);margin-bottom:8px;flex-wrap:wrap}#adminDash .adm-acct-ava{width:36px;height:36px;border-radius:var(--r-full);background:var(--accent-soft-2);color:var(--accent);display:flex;align-items:center;justify-content:center;font-weight:800;flex:0 0 auto}#adminDash .adm-acct-txt{flex:1;min-width:140px}#adminDash .adm-acct-txt b{display:block;font-size:var(--fs-base)}#adminDash .adm-acct-txt span{font-size:var(--fs-xs);color:var(--txt-3);font-family:var(--font-mono)}#adminDash .adm-pager{display:flex;align-items:center;justify-content:flex-end;gap:var(--sp-2);margin-top:var(--sp-3)}#adminDash .adm-pager .adm-pg-info{font-size:var(--fs-xs);color:var(--txt-3)}#adminDash .adm-danger-zone{border:1px solid var(--err-line);background:var(--err-soft);border-radius:var(--r-lg);padding:var(--sp-5)}#adminDash .adm-danger-zone h4{color:var(--err-ink);font-size:var(--fs-lg);margin-bottom:6px;display:flex;align-items:center;gap:9px}#adminDash .adm-danger-zone>p{font-size:var(--fs-sm);color:var(--err-ink);line-height:1.7;margin-bottom:var(--sp-4)}#adminDash .adm-danger-row{display:flex;justify-content:space-between;gap:var(--sp-4);flex-wrap:wrap;padding:var(--sp-4) 0}@media (min-width:721px){#adminDash .adm-danger-row{align-items:center}}#adminDash .adm-rst-opts{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:4px var(--sp-4);margin:var(--sp-2) 0 var(--sp-3)}#adminDash .adm-rst-opt{display:flex;align-items:center;gap:9px;padding:5px 0;font-size:var(--fs-sm);color:var(--err-ink)}#adminDash .adm-rst-opt input{width:17px;height:17px;accent-color:var(--err-solid)}#adminDash .adm-danger-result{margin-top:var(--sp-4);font-size:var(--fs-sm);border-radius:var(--r-md);padding:var(--sp-3) var(--sp-4);border:1px solid var(--line)}#adminDash .adm-link-acts{display:flex;flex-wrap:wrap;gap:var(--sp-3);margin-top:var(--sp-4)}#adminDash .adm-link-acts>button{width:auto;margin:0;padding:0 18px;white-space:nowrap}#adminDash .adm-form-row{margin-bottom:var(--sp-3);max-width:460px}#adminDash .adm-form-row .mf-label{margin-top:0}#adminDash .adm-form-note{margin-top:var(--sp-3);border-radius:var(--r-md);padding:10px 12px;font-size:var(--fs-sm);line-height:1.7;background:var(--info-soft);border:1px solid var(--info-line);color:var(--info-ink)}#adminDash .adm-form-note.ok{background:var(--ok-soft);border-color:var(--ok-line);color:var(--ok-ink)}#adminDash .adm-form-note.warn{background:var(--warn-soft);border-color:var(--warn-line);color:var(--warn-ink)}#adminDash .adm-form-note.err{background:var(--err-soft);border-color:var(--err-line);color:var(--err-ink)}#adConfirmModal .adm-cm-desc{font-size:var(--fs-sm);color:var(--txt-2);margin-bottom:var(--sp-3)}.adm-cm-warn{background:var(--warn-soft);border:1px solid var(--warn-line);color:var(--warn-ink);border-radius:var(--r-md);padding:10px var(--sp-3);font-size:var(--fs-xs);line-height:1.7;margin-bottom:var(--sp-3)}#adConfirmModal .adm-cm-impact{margin:0 0 var(--sp-3);padding-left:1.25em;font-size:var(--fs-sm);color:var(--err-ink);line-height:1.8}#adConfirmModal .adm-cm-check{display:flex;align-items:flex-start;gap:9px;font-size:var(--fs-sm);color:var(--txt-2);margin-bottom:var(--sp-3);cursor:pointer}#adConfirmModal .adm-cm-check[hidden]{display:none}#adConfirmModal .adm-cm-check input{margin-top:3px;width:17px;height:17px;flex:0 0 auto}#adConfirmModal #adCmInput{font-family:var(--font-mono)}#adConfirmModal #adCmPhraseRow{margin-bottom:var(--sp-3)}#adConfirmModal #adCmPhraseRow .mf-label,#adConfirmModal #adCmSecretRow .mf-label{margin-top:0;font-size:var(--fs-xs)}#adConfirmModal #adCmSecretRow{margin-bottom:var(--sp-3)}#adConfirmModal .adm-cm-secret-hint{margin:6px 0 0;font-size:var(--fs-2xs);color:var(--txt-3);line-height:1.6}#adConfirmModal .modal{scrollbar-gutter:auto}#adConfirmModal .modal-foot{display:flex;gap:var(--sp-3);align-items:stretch}#adConfirmModal .modal-foot>button{flex:1 1 0;width:auto;margin-top:0;min-height:44px;box-sizing:border-box;font-size:var(--fs-base);padding:0 var(--sp-4);border-width:1px;border-style:solid;display:flex;align-items:center;justify-content:center;text-align:center}#adOtpModal .adm-otp-row{display:flex;gap:var(--sp-3);align-items:stretch;margin-bottom:var(--sp-3)}#adOtpModal .adm-otp-row .mf-input{width:auto;flex:1 1 auto;margin:0;letter-spacing:1px}#adOtpModal .adm-otp-row .btn-secondary{width:auto;flex:0 0 auto;padding:0 16px;white-space:nowrap}#adDetailModal .adm-detail-kv{display:grid;grid-template-columns:96px 1fr;gap:8px var(--sp-3);font-size:var(--fs-sm);margin-bottom:var(--sp-4)}#adDetailModal .adm-detail-kv dt{color:var(--txt-3);font-weight:700}#adDetailModal .adm-detail-kv dd{color:var(--txt);word-break:break-all}#adDetailModal .adm-detail-sec-title{font-size:var(--fs-xs);font-weight:800;color:var(--txt-3);letter-spacing:.04em;margin:0 0 8px;padding-top:var(--sp-3);border-top:1px solid var(--line-2)}#adDetailModal .adm-detail-events{max-height:220px;overflow-y:auto;border:1px solid var(--line);border-radius:var(--r-md)}#adDetailModal .adm-detail-events table{width:100%;border-collapse:collapse;font-size:var(--fs-xs)}#adDetailModal .adm-detail-events th,#adDetailModal .adm-detail-events td{padding:6px 9px;text-align:left;border-bottom:1px solid var(--line-2)}#adDetailModal .adm-detail-events tr:last-child td{border-bottom:0}@media (min-width:721px){#adminDash .adm-drawer-backdrop{display:none}}@media (min-width:721px) and (max-width:1200px){#adminDash .adm-wall-grid{grid-template-columns:repeat(2,1fr)}}@media (min-width:721px) and (max-width:1000px){#adminDash .adm-stat-tiles{grid-template-columns:repeat(2,1fr)}}@media (min-width:1201px){#adminDash .adm-wall-grid{grid-template-columns:2fr 1fr}}@media (min-width:721px) and (max-width:1200px){#adminDash .adm-wall-grid>.adm-panel-wide{grid-column:1 / -1}#adminDash .adm-wall-side{grid-column:1 / -1;flex-direction:row}#adminDash .adm-wall-side>.adm-panel{flex:1 1 0;min-width:0}}body.modal-scroll-lock{overflow:hidden;scrollbar-gutter:stable}.tg-sub-modal{max-width:860px;width:100%}#tgSubModal .tg-sub-head{min-width:0;width:100%}#tgSubModal .tg-sub-head td{vertical-align:top}#tgSubModal .subs-edit-actions{position:sticky;bottom:0;z-index:1;margin:var(--sp-4) calc(var(--modal-pad)*-1) 0;padding:var(--sp-3) var(--modal-pad) var(--modal-pad);background:var(--surface-2);box-shadow:var(--modal-sb-bleed) 0 0 0 var(--surface-2)}#tgSubModal .subs-edit-actions::before{content:'';position:absolute;left:0;right:0;top:calc(var(--sp-4)*-1);height:var(--sp-4);background:linear-gradient(to top,var(--surface-2),transparent);pointer-events:none}#tgSubModal .tg-sub-hist{margin-top:var(--sp-4);border-top:1px solid var(--line-2);padding-top:var(--sp-3)}#tgSubModal .tg-sub-hist-note{font-size:var(--fs-sm);color:var(--txt-2);margin-bottom:var(--sp-2)}#tgSubModal .tg-sub-hist .table-wrap table{min-width:0}.crit-ai-orig{font-size:var(--fs-micro);color:var(--txt-3);padding:1px 6px;border-radius:var(--r-full);background:var(--surface-3);border:1px solid var(--line-2)}#cdSubsDiv .subs-row.is-open td{background:var(--accent-soft)}@media (max-width:767px){#tgSubModal .subs-edit-actions{padding-bottom:calc(var(--modal-pad) + env(safe-area-inset-bottom))}.tg-sub-modal{max-height:calc(100svh - var(--safe-top));max-height:calc(100dvh - var(--safe-top))}#tgSubModal .subs-edit-actions,#tgSubModal .subs-edit textarea,#tgSubModal .subs-edit .edit-hint{max-width:none}#tgSubModal .tg-sub-head,#tgSubModal .tg-sub-hist .table-wrap table{min-width:480px}}#adminDash .adm-list-scroll{max-height:min(64dvh,640px)}#adminDash .adm-list-scroll{margin-bottom:var(--sp-4)}#adminDash .adm-row-actions{display:flex;gap:6px;flex-wrap:nowrap}#adminDash .adm-row-actions button{white-space:nowrap}#adminDash .adm-power-card .adm-panel-head{flex-wrap:wrap;row-gap:var(--sp-2)}#adminDash .adm-power-badges{display:flex;gap:var(--sp-2);flex-wrap:wrap}#adminDash .adm-power-caps{display:flex;gap:var(--sp-6);justify-content:center;align-items:center;flex:1 1 auto}#adminDash .adm-power-footer{margin-top:auto;padding-top:var(--sp-3);border-top:1px solid var(--line-2);text-align:center;display:flex;flex-direction:column;gap:2px;font-size:var(--fs-2xs);color:var(--txt-3);font-variant-numeric:tabular-nums}.imp-progress{display:flex;flex-direction:column;gap:var(--sp-2);padding:var(--sp-3) var(--sp-4);border-radius:var(--r-md);background:var(--surface-2);border:1px solid var(--line)}.imp-progress-label{font-size:var(--fs-sm);color:var(--txt-2);font-weight:600}.imp-progress-track{height:.5rem;border-radius:var(--r-full);overflow:hidden;background:var(--surface-3);border:1px solid var(--line-2)}.imp-progress-bar{height:100%;border-radius:var(--r-full);background:var(--accent-solid)}.imp-progress-bar.is-indeterminate{width:100%;background:linear-gradient(90deg,var(--accent-solid) 25%,var(--brand-400) 37%,var(--accent-solid) 63%);background-size:400% 100%;animation:csPulse var(--dur-busy-flow) linear infinite reverse}.imp-progress-note{font-size:var(--fs-xs);color:var(--txt-3);line-height:1.6}.imp-progress .btn-secondary{align-self:flex-start}.asg-desc-box{font-size:var(--fs-body);color:var(--txt-2);white-space:pre-wrap;background:var(--surface-3);border:1px solid var(--line-2);border-radius:var(--r-chip);padding:10px 14px;overflow-wrap:anywhere}.asg-desc-box.is-empty{color:var(--txt-3);font-style:italic}.subs-group-tag{display:inline-block;padding:1px 8px;border-radius:var(--r-chip);background:var(--accent-soft);color:var(--accent);font-weight:700;font-size:var(--fs-sm)}.grp-panel{margin-top:var(--sp-4)}.grp-list{display:flex;flex-direction:column;gap:var(--sp-3)}.grp-card{border:1px solid var(--line-2);border-radius:var(--r-lg);padding:var(--sp-3) var(--sp-4);background:var(--surface-1)}.grp-card-head{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-2);flex-wrap:wrap;margin-bottom:var(--sp-2)}.grp-card-name{font-weight:700;font-size:var(--fs-md)}.grp-card-actions{display:flex;gap:6px;flex-wrap:wrap}.grp-member-chips{display:flex;flex-wrap:wrap;gap:var(--sp-2)}.grp-member-chip{display:inline-flex;align-items:center;gap:8px;padding:4px 10px;border-radius:var(--r-full);background:var(--surface-2);font-size:var(--fs-sm);max-width:100%}.grp-chip-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;word-break:keep-all;flex:0 1 auto;min-width:0}.grp-member-chip .cs{display:inline-block!important;width:auto!important;min-width:104px;flex:0 0 auto}.grp-member-chip .cs-trigger{padding:4px 26px 4px 10px;font-size:var(--fs-sm);font-weight:500;border-radius:var(--r-full);background:var(--surface)}.grp-member-chip .cs-arrow{width:6px;height:6px;margin-left:6px}.grp-member-chip .cs-options{min-width:180px;right:auto}.grp-unassigned{margin-top:var(--sp-5);padding-top:var(--sp-5);border-top:1px dashed var(--line-2)}.grp-unassigned-title{margin-bottom:var(--sp-3)}.grp-empty{color:var(--txt-3);font-size:var(--fs-sm)}.grp-add-row{display:flex;gap:var(--sp-2);flex-wrap:wrap;align-items:center;margin-top:var(--sp-5)}.grp-add-row .mf-input{margin:0;flex:1 1 240px;min-width:0}.grp-add-row .upload-btn{flex:0 0 auto}.my-group-card{border:1px solid var(--line-2);border-radius:var(--r-lg);padding:var(--sp-3) var(--sp-4);background:var(--surface-1);margin-bottom:var(--sp-3)}.my-group-title{font-weight:700;margin-bottom:var(--sp-2)}.my-group-members{display:flex;flex-wrap:wrap;gap:6px}.my-group-chip{display:inline-block;padding:2px 10px;border-radius:var(--r-full);background:var(--surface-2);font-size:var(--fs-sm);white-space:nowrap;word-break:keep-all}.my-group-note{margin-top:calc(var(--sp-2) * -1);margin-bottom:var(--sp-3);font-size:var(--fs-sm)}.join-xp[hidden]{display:none!important}.join-xp{position:fixed;inset:0;z-index:12000;display:grid;grid-template-rows:minmax(220px,38svh) 1fr;overflow:auto;overscroll-behavior:contain;padding:max(24px,env(safe-area-inset-top)) max(22px,env(safe-area-inset-right)) max(24px,env(safe-area-inset-bottom)) max(22px,env(safe-area-inset-left));background:var(--bg);color:var(--txt);isolation:isolate}.join-xp:before,.join-xp:after{content:"";position:fixed;z-index:-2;border-radius:50%;filter:blur(12px);pointer-events:none}.join-xp:before{width:80vw;height:80vw;left:-42vw;top:-28vw;background:var(--glow-a)}.join-xp:after{width:92vw;height:92vw;right:-48vw;bottom:-54vw;background:var(--glow-b)}.join-xp-grid{position:fixed;inset:0;z-index:-3;opacity:.5;pointer-events:none;background-image:linear-gradient(var(--line-2) 1px,transparent 1px),linear-gradient(90deg,var(--line-2) 1px,transparent 1px);background-size:48px 48px;mask-image:linear-gradient(to bottom,black,transparent 74%)}.join-xp-orbits{position:relative;width:min(72vw,330px);aspect-ratio:1;margin:auto;animation:joinXpFloat var(--dur-platform-float) var(--ease-in-out) infinite}.join-xp-orbits>i{position:absolute;inset:8%;border:1px solid var(--line-3);border-radius:50%;opacity:.72}.join-xp-orbits>i:nth-child(2){inset:20%;border-style:dashed;border-color:var(--gold-line);animation:joinXpSpin var(--dur-platform-dash) linear infinite reverse}.join-xp-orbits>i:nth-child(3){inset:31%;border-color:var(--accent);opacity:.44}.join-xp-core{position:absolute;inset:34%;display:grid;place-items:center;text-align:center;gap:5px;border:1px solid var(--line-3);border-radius:32%;background:var(--surface-2);box-shadow:var(--sh-4),0 0 46px var(--accent-ring)}.join-xp-core img{width:38%;height:auto}.join-xp-core b{font:800 .68rem/1.05 var(--font-latin);letter-spacing:.12em;color:var(--txt)}.join-xp-node{position:absolute;width:48px;height:48px;display:grid;place-items:center;border:1px solid var(--line-3);border-radius:35%;background:var(--surface-2);box-shadow:var(--sh-2);font-weight:800;color:var(--accent)}.join-xp-node.n1{top:3%;right:13%;animation:joinXpNode var(--dur-platform-node-a) var(--ease-in-out) infinite}.join-xp-node.n2{left:0;bottom:20%;animation:joinXpNode var(--dur-platform-node-b) var(--ease-in-out) var(--delay-platform-node-b) infinite}.join-xp-node.n3{right:0;bottom:8%;color:var(--gold-ink);animation:joinXpNode var(--dur-platform-node-c) var(--ease-in-out) var(--delay-platform-node-c) infinite}.join-xp-copy{width:min(100%,620px);margin:0 auto;display:flex;flex-direction:column;align-items:stretch;padding:4px 2px 8px}.join-xp-brand{display:flex;align-items:center;gap:10px;color:var(--txt-2);font-weight:700;font-size:var(--fs-sm)}.join-xp-brand img{width:32px;height:32px;object-fit:contain;background:var(--logo-plate);border-radius:10px;padding:4px}.join-xp-kicker{margin:18px 0 8px;color:var(--accent);font:800 .72rem/1.2 var(--font-latin);letter-spacing:.18em}.join-xp h1{margin:0;color:var(--txt);font-size:clamp(2.35rem,11.5vw,4.4rem);line-height:.99;letter-spacing:-.07em;text-wrap:balance}.join-xp h1 em{display:block;color:var(--accent);font-size:.74em;font-style:normal;line-height:1.08;letter-spacing:-.055em}.join-xp h1 em span{display:block;white-space:nowrap}.join-xp-lead{margin:18px 0 14px;color:var(--txt-2);font-size:var(--fs-base);line-height:1.8}.join-xp-benefits{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;margin-bottom:18px}.join-xp-benefits span{min-width:0;padding:10px 8px;border:1px solid var(--line-2);border-radius:18px;background:var(--surface);color:var(--txt-2);font-size:.72rem;line-height:1.35;text-align:center}.join-xp-benefits b{display:block;color:var(--accent);font:800 .64rem var(--font-latin);letter-spacing:.14em;margin-bottom:3px}.join-xp-install{width:100%;display:grid;grid-template-columns:48px 1fr auto;align-items:center;gap:12px;text-align:left;border:1px solid transparent;border-radius:24px;padding:12px 16px;background:var(--accent-solid);color:var(--on-solid);box-shadow:0 18px 42px -20px var(--accent-solid);cursor:pointer;transition:transform var(--dur-2) var(--ease-out),background var(--dur-1)}.join-xp-install:hover{background:var(--accent-solid-hover);transform:translateY(var(--lift-2))}.join-xp-install:active{transform:none}.join-xp-install-icon{width:48px;height:48px;padding:4px;border-radius:16px;background:var(--n-0);display:grid;place-items:center}.join-xp-install-icon img{width:100%;height:100%;object-fit:contain;border-radius:12px}.join-xp-install small,.join-xp-install strong{display:block}.join-xp-install small{opacity:.72;font-size:.67rem;letter-spacing:.15em;margin-bottom:2px}.join-xp-install strong{font-size:1rem}.join-xp-install>b{font-size:1.4rem}.join-xp-web{align-self:center;margin-top:12px;border:0;background:transparent;color:var(--txt);font:700 var(--fs-sm) var(--font-ui);padding:11px 16px;text-decoration:underline;text-decoration-color:var(--line-3);text-underline-offset:5px;cursor:pointer}.join-xp-web:hover{color:var(--accent)}.join-xp-note{margin:4px auto 0;color:var(--txt-3);font-size:.72rem;line-height:1.55;text-align:center;max-width:34em}html.join-xp-open{overflow:hidden}.pwa-ios-overlay[hidden]{display:none!important}.pwa-ios-overlay{position:fixed;inset:0;z-index:13000;display:grid;place-items:center;overflow:hidden;padding:max(10px,env(safe-area-inset-top)) max(10px,env(safe-area-inset-right)) max(10px,env(safe-area-inset-bottom)) max(10px,env(safe-area-inset-left));background:color-mix(in srgb,var(--bg) 97%,var(--surface));color:var(--txt)}.pwa-ios-guide{position:relative;width:min(100%,500px);height:auto;max-height:calc(100dvh - 20px);min-height:0;display:grid;grid-template-rows:auto auto auto auto;gap:10px;padding:clamp(17px,4.5vw,26px);border:1px solid var(--line-3);border-radius:34px;background:linear-gradient(155deg,var(--surface-3),var(--surface));box-shadow:var(--sh-5),0 30px 90px color-mix(in srgb,var(--accent-solid) 12%,transparent);overflow:hidden}.pwa-ios-guide::before{content:"";position:absolute;z-index:0;width:220px;height:220px;right:-88px;top:-104px;border-radius:50%;background:radial-gradient(circle,var(--accent-soft-2),transparent 70%);pointer-events:none}.pwa-ios-guide>*{position:relative;z-index:1}.pwa-ios-guide header{grid-row:1;padding-right:36px}.pwa-ios-guide header>span{color:var(--accent);font:850 .66rem/1.2 var(--font-latin);letter-spacing:.18em}.pwa-ios-guide h2{margin:7px 0 5px;font-size:clamp(1.65rem,7vw,2.25rem);line-height:1.08;letter-spacing:-.045em}.pwa-ios-guide header p{margin:0;color:var(--txt-2);font-size:var(--fs-sm);line-height:1.55}.pwa-ios-close{position:absolute;z-index:3;right:14px;top:14px;width:36px;height:36px;border:1px solid var(--line);border-radius:50%;background:var(--surface-2);color:var(--txt-2);font-size:1.3rem;line-height:1;cursor:pointer}.pwa-ios-inapp{grid-row:2;display:grid;grid-template-columns:104px minmax(0,1fr);align-items:center;gap:12px;padding:8px 10px;border:1px solid var(--gold-line);border-radius:20px;background:var(--warn-soft)}.pwa-ios-inapp[hidden]{display:none}.pwa-ios-inapp img{display:block;width:104px;height:62px;object-fit:contain}.pwa-ios-inapp p{display:grid;gap:3px;margin:0}.pwa-ios-inapp b{color:var(--txt);font-size:.78rem}.pwa-ios-inapp span{color:var(--txt-2);font-size:.66rem;line-height:1.45}.pwa-ios-figure{grid-row:3;min-height:0;margin:0;display:grid;grid-template-rows:minmax(0,1fr) auto;gap:8px;padding:10px;border:1px solid var(--line);border-radius:24px;background:var(--surface-2)}.pwa-ios-figure>img{display:block;width:100%;height:auto;min-height:0;object-fit:contain}.pwa-ios-figure figcaption{display:grid;grid-template-columns:1fr 1fr;gap:8px}.pwa-ios-figure figcaption>span{display:flex;align-items:center;gap:7px;color:var(--txt-2);font-size:.68rem;font-weight:750}.pwa-ios-figure figcaption b{flex:0 0 23px;width:23px;height:23px;display:grid;place-items:center;border-radius:50%;background:var(--accent-solid);color:var(--on-solid);font-size:.62rem}.pwa-guide-art-dark{display:none!important}:root[data-theme="dark"] .pwa-guide-art-light{display:none!important}:root[data-theme="dark"] .pwa-guide-art-dark{display:block!important}@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .pwa-guide-art-light{display:none!important}:root:not([data-theme="light"]) .pwa-guide-art-dark{display:block!important}}.pwa-ios-actions{grid-row:4;display:grid;gap:5px}.pwa-ios-actions button{min-height:44px;border-radius:15px;font:800 var(--fs-sm) var(--font-ui);cursor:pointer}.pwa-ios-done{border:0;background:var(--accent-solid);color:var(--on-solid)}.pwa-ios-web{border:0;background:transparent;color:var(--txt-2);text-decoration:underline;text-underline-offset:4px}html.pwa-ios-guide-open{overflow:hidden}.pwa-browser-overlay[hidden]{display:none!important}.pwa-browser-overlay{position:fixed;inset:0;z-index:13000;display:grid;place-items:center;padding:16px;background:color-mix(in srgb,var(--bg) 97%,var(--surface));color:var(--txt);overflow:hidden}.pwa-browser-guide{position:relative;width:min(100%,460px);padding:clamp(24px,6vw,36px);border:1px solid var(--line-3);border-radius:34px;background:radial-gradient(circle at 88% 5%,var(--accent-soft-2),transparent 35%),var(--surface);box-shadow:var(--sh-5)}.pwa-browser-close{position:absolute;right:14px;top:14px;width:36px;height:36px;border:1px solid var(--line);border-radius:50%;background:var(--surface-2);color:var(--txt-2);font-size:1.3rem;cursor:pointer}.pwa-browser-kicker{color:var(--accent);font:850 .66rem/1.2 var(--font-latin);letter-spacing:.18em}.pwa-browser-guide h2{margin:9px 42px 8px 0;font-size:clamp(1.7rem,7vw,2.3rem);line-height:1.08;letter-spacing:-.045em}.pwa-browser-guide>p{margin:0;color:var(--txt-2);font-size:var(--fs-sm);line-height:1.65}.pwa-browser-menu{height:68px;margin:22px 0;display:grid;grid-template-columns:42px 1fr 28px;align-items:center;gap:10px;padding:10px 13px;border:1px solid var(--line);border-radius:20px;background:var(--surface-2)}.pwa-browser-menu>i{width:38px;height:38px;display:grid;place-items:center;border-radius:13px;background:var(--accent-soft);color:var(--accent);font-style:normal;font-size:1.45rem}.pwa-browser-menu>span{font-size:.86rem;font-weight:780}.pwa-browser-menu>b{color:var(--accent);font-size:1.25rem}.pwa-browser-fallback{margin:-12px 0 18px!important;text-align:center;color:var(--txt-3)!important;font-size:.72rem!important;line-height:1.45!important}.pwa-browser-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}.pwa-browser-actions button{min-height:44px;border-radius:15px;font:800 var(--fs-sm) var(--font-ui);cursor:pointer}.pwa-browser-open,.pwa-browser-edge,.pwa-browser-copy,.pwa-browser-done{border:1px solid var(--line);background:var(--surface-2);color:var(--txt)}.pwa-browser-web{grid-column:1/-1;border:0;background:transparent;color:var(--txt-2);text-decoration:underline;text-underline-offset:4px}.pwa-browser-overlay[data-mode="external"] .pwa-browser-open{grid-column:1/-1;border:0;background:var(--accent-solid);color:var(--on-solid)}.pwa-browser-overlay[data-mode="external"] .pwa-browser-menu,.pwa-browser-overlay[data-mode="external"] .pwa-browser-done{display:none!important}.pwa-browser-overlay[data-mode="external"] .pwa-browser-fallback{margin:8px 0 18px!important}.pwa-browser-overlay[data-mode="external"] .pwa-browser-open{order:1}.pwa-browser-overlay[data-mode="external"] .pwa-browser-edge{order:2;grid-column:1/-1}.pwa-browser-overlay[data-mode="external"] .pwa-browser-copy{order:3;grid-column:1/-1;min-height:34px;border:0;background:transparent;color:var(--txt-2);text-decoration:underline;text-underline-offset:4px}.pwa-browser-overlay[data-mode="external"] .pwa-browser-web{order:4}.pwa-browser-done{grid-column:1/-1;justify-self:center;width:min(180px,100%)}.pwa-browser-actions [hidden]{display:none!important}html.pwa-browser-guide-open{overflow:hidden}.pwa-browser-install[hidden]{display:none!important}.pwa-browser-install{margin-top:14px;padding-top:14px;border-top:1px solid var(--line);display:grid;grid-template-columns:1fr 1fr;gap:8px;text-align:center}.pwa-browser-install span{grid-column:1/-1;color:var(--txt-3);font-size:.7rem}.pwa-browser-install a{min-height:38px;display:grid;place-items:center;border:1px solid var(--line);border-radius:13px;color:var(--accent);font-size:.76rem;font-weight:800;text-decoration:none}@keyframes joinXpSpin{to{transform:rotate(360deg)}}@keyframes joinXpFloat{0%,100%{transform:translateY(0) rotate(-1deg)}50%{transform:translateY(-8px) rotate(1deg)}}@keyframes joinXpNode{0%,100%{transform:scale(.94)}50%{transform:scale(1.06)}}@media (min-width:1025px) and (hover:hover) and (pointer:fine){.join-xp{display:none!important}}@media (max-width:420px){.join-xp{grid-template-rows:minmax(188px,31svh) 1fr;padding-left:18px;padding-right:18px}.join-xp-orbits{width:min(62vw,250px)}.join-xp-node{width:42px;height:42px}.join-xp h1{font-size:clamp(2.2rem,11.8vw,3.3rem)}.join-xp-benefits{gap:5px}.join-xp-benefits span{padding:9px 5px;font-size:.67rem}}.pw-visibility{position:relative;display:block;width:100%}.pw-visibility>input{width:100%;padding-right:56px!important;margin-block:0!important}.card .pw-visibility{margin-bottom:var(--sp-5)}.pk-register .pw-visibility{margin:5px 0 12px}.pw-visibility-toggle{position:absolute;z-index:2;right:7px;top:50%;translate:0 -50%;width:44px;height:44px;display:grid;place-items:center;border:0;border-radius:11px;background:transparent;color:var(--txt-3);cursor:pointer}.pw-visibility-toggle:hover,.pw-visibility-toggle:focus-visible{background:var(--surface-2);color:var(--accent);outline:none}.pw-visibility-toggle svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.pw-visibility-toggle .pw-eye-slash{display:none}.pw-visibility-toggle[aria-pressed="true"] .pw-eye-open{display:none}.pw-visibility-toggle[aria-pressed="true"] .pw-eye-slash{display:block}.auth-passkey{border-color:var(--line);background:var(--surface);color:var(--txt)}.auth-passkey:hover{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}.auth-passkey .auth-ico{color:var(--accent)}.auth-passkey.working{opacity:.64;cursor:wait}.passkey-modal{width:min(94vw,720px);max-width:720px;padding:0;overflow:hidden;border-radius:32px}.passkey-modal>.modal-close{z-index:2}.pk-hero{position:relative;display:grid;grid-template-columns:132px 1fr;gap:22px;align-items:center;padding:30px;background:radial-gradient(circle at 20% 10%,var(--accent-soft-2),transparent 54%),var(--surface-3);border-bottom:1px solid var(--line-2)}.pk-hero p{margin:0 0 7px;color:var(--accent);font:800 .68rem var(--font-latin);letter-spacing:.18em}.pk-hero h3{margin:0 0 8px!important;padding:0!important;border:0!important;background:none!important;box-shadow:none!important;color:var(--txt);font-size:var(--fs-2xl)}.pk-hero>div:last-child>span{display:block;color:var(--txt-2);line-height:1.65;font-size:var(--fs-sm)}.pk-orbit{position:relative;width:118px;aspect-ratio:1;border:1px solid var(--line-3);border-radius:50%;animation:joinXpSpin var(--dur-platform-orbit) linear infinite}.pk-orbit i{position:absolute;inset:18%;border:1px dashed var(--gold-line);border-radius:50%}.pk-orbit i:nth-child(2){inset:34%;border-style:solid;border-color:var(--accent)}.pk-orbit span{position:absolute;inset:30%;display:grid;place-items:center;border-radius:34%;background:var(--surface-2);color:var(--accent);box-shadow:var(--sh-3);animation:joinXpSpin var(--dur-platform-orbit) linear infinite reverse}.pk-orbit .ic{width:24px;height:24px}.pk-safety{display:flex;gap:12px;align-items:flex-start;margin:20px 24px 0;padding:14px 16px;border:1px solid var(--warn-line);border-radius:20px;background:var(--warn-soft);color:var(--warn-ink)}.pk-safety>.ic{flex:0 0 20px;margin-top:2px}.pk-safety span{display:grid;gap:3px}.pk-safety small{line-height:1.55}.pk-register,.pk-devices{padding:22px 24px}.pk-register{border-bottom:1px solid var(--line-2)}.pk-section-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:14px}.pk-section-head>span{font-weight:800;color:var(--txt)}.pk-section-head small{color:var(--txt-3)}.pk-register .mf-input{width:100%;margin:5px 0 12px}.pk-create{margin-top:2px}.pk-device-list{display:grid;gap:10px}.pk-device{display:grid;grid-template-columns:42px minmax(0,1fr) auto;gap:12px;align-items:center;padding:12px;border:1px solid var(--line-2);border-radius:20px;background:var(--surface-3)}.pk-device-icon{width:42px;height:42px;display:grid;place-items:center;border-radius:32%;background:var(--accent-soft);color:var(--accent);font-size:.65rem}.pk-device-body{min-width:0;display:grid;gap:4px}.pk-device-body input{min-width:0;width:100%;border:0;border-bottom:1px solid transparent;background:transparent;color:var(--txt);font:700 var(--fs-sm) var(--font-ui);padding:4px}.pk-device-body input:focus{outline:none;border-color:var(--accent)}.pk-device-body span{color:var(--txt-3);font-size:var(--fs-xs)}.pk-device-actions{display:flex;gap:5px}.pk-device-actions button{border:1px solid var(--line);border-radius:var(--r-ctl);background:var(--surface);padding:7px 9px;font-weight:700;cursor:pointer}.pk-save{color:var(--accent)}.pk-revoke{color:var(--err-ink)}.pk-device-actions button:hover{background:var(--surface-hover)}.pk-empty{display:grid;gap:5px;padding:20px;border:1px dashed var(--line-3);border-radius:20px;text-align:center;color:var(--txt-3)}.pk-empty b{color:var(--txt)}.pwa-nudge{position:fixed;z-index:11500;left:max(12px,env(safe-area-inset-left));right:max(12px,env(safe-area-inset-right));bottom:max(12px,env(safe-area-inset-bottom));display:grid;grid-template-columns:48px minmax(0,1fr) auto auto;gap:10px;align-items:center;padding:12px;border:1px solid var(--line);border-radius:24px;background:var(--surface-2);color:var(--txt);box-shadow:var(--sh-4);transform:translateY(calc(100% + 28px));opacity:0;transition:transform var(--dur-3) var(--ease-out),opacity var(--dur-2)}.pwa-nudge.show{transform:none;opacity:1}.pwa-nudge img{width:48px;height:48px;border-radius:15px}.pwa-nudge>div{display:grid;gap:3px;min-width:0}.pwa-nudge span{color:var(--txt-3);font-size:var(--fs-xs);line-height:1.35}.pwa-nudge button{border-radius:var(--r-ctl);font-weight:800;padding:9px 11px;cursor:pointer}.pwa-nudge-go{border:0;background:var(--accent-solid);color:var(--on-solid)}.pwa-nudge-skip{border:1px solid var(--line);background:var(--surface);color:var(--txt-2)}@media (min-width:1025px){.pwa-nudge,.acct-item-pwa{display:none!important}}@media (max-width:620px){.passkey-modal{width:100%;max-height:min(92dvh,820px);border-radius:30px 30px 0 0;align-self:end}#passkeyModal{align-items:flex-end;padding:0}.pk-hero{grid-template-columns:88px 1fr;padding:24px 20px;gap:16px}.pk-orbit{width:82px}.pk-safety{margin:16px 18px 0}.pk-register,.pk-devices{padding:18px}.pk-device{grid-template-columns:38px minmax(0,1fr)}.pk-device-icon{width:38px;height:38px}.pk-device-actions{grid-column:2;justify-content:flex-start}.pwa-nudge{grid-template-columns:44px minmax(0,1fr) auto}.pwa-nudge img{width:44px;height:44px}.pwa-nudge-skip{grid-column:2/4;justify-self:start;padding:4px 0;border:0;background:transparent}}@media (orientation:landscape) and (max-height:500px){.pwa-ios-overlay{padding:6px max(8px,env(safe-area-inset-right)) 6px max(8px,env(safe-area-inset-left))}.pwa-ios-guide{width:min(100%,920px);height:calc(100dvh - 12px);max-height:calc(100dvh - 12px);padding:11px 13px;grid-template-columns:minmax(190px,.72fr) minmax(0,1.28fr);grid-template-rows:minmax(0,1fr) auto;gap:7px 12px;border-radius:25px}.pwa-ios-guide header{grid-column:1;grid-row:1;align-self:start;padding-right:32px}.pwa-ios-guide header>span{font-size:.54rem}.pwa-ios-guide h2{margin:3px 0;font-size:1.28rem}.pwa-ios-guide header p{font-size:.62rem;line-height:1.4}.pwa-ios-close{right:10px;top:10px;width:31px;height:31px;font-size:1.05rem}.pwa-ios-inapp{grid-column:1;grid-row:1;align-self:end;grid-template-columns:64px minmax(0,1fr);gap:7px;padding:5px 7px;border-radius:15px}.pwa-ios-inapp img{width:64px;height:38px}.pwa-ios-inapp b{font-size:.63rem}.pwa-ios-inapp span{font-size:.53rem;line-height:1.3}.pwa-ios-figure{grid-column:2;grid-row:1/3;min-height:0;height:100%;padding:6px;gap:4px;border-radius:18px}.pwa-ios-figure>img{width:100%;height:100%;max-height:100%;object-fit:contain}.pwa-ios-figure figcaption{gap:5px}.pwa-ios-figure figcaption>span{gap:5px;font-size:.56rem}.pwa-ios-figure figcaption b{flex-basis:19px;width:19px;height:19px;font-size:.5rem}.pwa-ios-actions{grid-column:1;grid-row:2;gap:2px}.pwa-ios-actions button{min-height:34px;border-radius:12px;font-size:.68rem}.pwa-browser-overlay{padding:6px max(8px,env(safe-area-inset-right)) 6px max(8px,env(safe-area-inset-left))}.pwa-browser-guide{width:min(100%,860px);height:calc(100dvh - 12px);max-height:calc(100dvh - 12px);padding:11px 13px;display:grid;grid-template-columns:minmax(190px,.72fr) minmax(0,1.28fr);grid-template-rows:auto auto minmax(0,1fr);gap:5px 12px;border-radius:25px}.pwa-browser-kicker{grid-column:1;grid-row:1;font-size:.54rem}.pwa-browser-guide h2{grid-column:1;grid-row:2;margin:0;font-size:1.28rem}.pwa-browser-guide>#pwaBrowserLead{grid-column:1;grid-row:3;align-self:start;font-size:.62rem;line-height:1.45}.pwa-browser-close{right:10px;top:10px;width:31px;height:31px;font-size:1.05rem}.pwa-browser-menu{grid-column:2;grid-row:1;height:52px;margin:0;padding:7px 42px 7px 9px;grid-template-columns:36px 1fr 22px;border-radius:16px}.pwa-browser-menu>i{width:34px;height:34px;border-radius:11px;font-size:1.15rem}.pwa-browser-menu>span{font-size:.7rem}.pwa-browser-menu>b{font-size:1rem}.pwa-browser-fallback{grid-column:2;grid-row:2;margin:0!important;font-size:.58rem!important;text-align:left}.pwa-browser-actions{grid-column:2;grid-row:3;align-self:end;gap:4px}.pwa-browser-actions button{min-height:34px;border-radius:12px;font-size:.66rem}.pwa-browser-overlay[data-mode="external"] .pwa-browser-fallback{grid-row:1;align-self:end;padding-right:38px}.pwa-browser-overlay[data-mode="external"] .pwa-browser-actions{grid-row:2/4;align-self:center}}@media (orientation:portrait) and (max-height:700px) and (max-width:620px){.pwa-ios-guide{gap:7px;padding:15px;max-height:calc(100dvh - 16px)}.pwa-ios-guide h2{font-size:1.55rem;margin-top:4px}.pwa-ios-guide header p{font-size:.7rem}.pwa-ios-inapp{grid-template-columns:82px minmax(0,1fr);padding:6px 8px}.pwa-ios-inapp img{width:82px;height:48px}.pwa-ios-figure{padding:7px;gap:5px}.pwa-ios-actions button{min-height:40px}}@media (prefers-reduced-motion:reduce){.join-xp-orbits,.join-xp-node,.join-xp-orbits>i:nth-child(2),.pk-orbit,.pk-orbit span{animation:none!important}.pwa-nudge{transition:none}.busy-ring,.imp-progress-bar.is-indeterminate{animation:none!important}}