@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(./ibm-plex-sans-cyrillic-ext-400-normal-g30qAdWV.woff2)format("woff2"),url(./ibm-plex-sans-cyrillic-ext-400-normal-Dsrv2Tcn.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(./ibm-plex-sans-cyrillic-400-normal-DZqxrq2p.woff2)format("woff2"),url(./ibm-plex-sans-cyrillic-400-normal-BTotfTJu.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(./ibm-plex-sans-greek-400-normal-_efipK4i.woff2)format("woff2"),url(./ibm-plex-sans-greek-400-normal-D9ESIMu3.woff)format("woff");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(./ibm-plex-sans-vietnamese-400-normal-DG4YqDda.woff2)format("woff2"),url(./ibm-plex-sans-vietnamese-400-normal-fK1oJ5dG.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(./ibm-plex-sans-latin-ext-400-normal-C5H60-Va.woff2)format("woff2"),url(./ibm-plex-sans-latin-ext-400-normal-RBey6euL.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(./ibm-plex-sans-latin-400-normal-CDDApCn2.woff2)format("woff2"),url(./ibm-plex-sans-latin-400-normal-CYLoc0-x.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(./ibm-plex-sans-cyrillic-ext-500-normal-Cs5J6C77.woff2)format("woff2"),url(./ibm-plex-sans-cyrillic-ext-500-normal-DB5PtV2g.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(./ibm-plex-sans-cyrillic-500-normal-CocWQlwt.woff2)format("woff2"),url(./ibm-plex-sans-cyrillic-500-normal-ByOcLdNv.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(./ibm-plex-sans-greek-500-normal-JMMifIXV.woff2)format("woff2"),url(./ibm-plex-sans-greek-500-normal-CuWXN6rf.woff)format("woff");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(./ibm-plex-sans-vietnamese-500-normal-e4dixQRQ.woff2)format("woff2"),url(./ibm-plex-sans-vietnamese-500-normal-BEb3_waV.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(./ibm-plex-sans-latin-ext-500-normal-DakdToA3.woff2)format("woff2"),url(./ibm-plex-sans-latin-ext-500-normal-D0aIdm-b.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(./ibm-plex-sans-latin-500-normal-6ng42L7E.woff2)format("woff2"),url(./ibm-plex-sans-latin-500-normal-BgVn5rGT.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(./ibm-plex-sans-cyrillic-ext-600-normal-DUMzJB7m.woff2)format("woff2"),url(./ibm-plex-sans-cyrillic-ext-600-normal-Bz0x94Yp.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(./ibm-plex-sans-cyrillic-600-normal-71GNu3SW.woff2)format("woff2"),url(./ibm-plex-sans-cyrillic-600-normal-BGq0mW3O.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(./ibm-plex-sans-greek-600-normal-DzTrcv_p.woff2)format("woff2"),url(./ibm-plex-sans-greek-600-normal-D-CqTdkO.woff)format("woff");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(./ibm-plex-sans-vietnamese-600-normal-DpPYBSTl.woff2)format("woff2"),url(./ibm-plex-sans-vietnamese-600-normal-DgdngZtN.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(./ibm-plex-sans-latin-ext-600-normal-DOrvGEcy.woff2)format("woff2"),url(./ibm-plex-sans-latin-ext-600-normal-DIrixKbi.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(./ibm-plex-sans-latin-600-normal-CuJfVYMP.woff2)format("woff2"),url(./ibm-plex-sans-latin-600-normal-Cu4Hd6ag.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(./ibm-plex-mono-cyrillic-ext-400-normal-xuaO2J-f.woff2)format("woff2"),url(./ibm-plex-mono-cyrillic-ext-400-normal-DMdlQ8Kv.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(./ibm-plex-mono-cyrillic-400-normal-BSMlKf0J.woff2)format("woff2"),url(./ibm-plex-mono-cyrillic-400-normal-CEL4l2ZJ.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(./ibm-plex-mono-vietnamese-400-normal-BulugwFq.woff2)format("woff2"),url(./ibm-plex-mono-vietnamese-400-normal-DDuiU_S-.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(./ibm-plex-mono-latin-ext-400-normal-BmRBH3aV.woff2)format("woff2"),url(./ibm-plex-mono-latin-ext-400-normal-D3D2R8hC.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(./ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2)format("woff2"),url(./ibm-plex-mono-latin-400-normal-CvHOgSBP.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root,:root[data-theme=dark]{--bg:#0b1b2b;--bg-elevated:#0f2336;--surface:#12293f;--surface-2:#17334d;--border:#223f5a;--text:#e6f1fa;--text-muted:#93abc0;--accent:#38bdf8;--accent-strong:#0284c7;--accent-text:#38bdf8;--on-accent:#06121d;--success:#34d399;--warning:#fbbf24;--danger:#f87171;--shadow:0 1px 2px #00000059, 0 8px 24px #00000040;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}:root[data-theme=light]{--bg:#f0f9ff;--bg-elevated:#e6f4fc;--surface:#fff;--surface-2:#e8f3fa;--border:#cfe3f1;--text:#0b1b2b;--text-muted:#50697f;--accent:#0284c7;--accent-strong:#0369a1;--accent-text:#0369a1;--on-accent:#fff;--success:#047857;--warning:#b45309;--danger:#b91c1c;--shadow:0 1px 2px #0b1b2b14, 0 8px 24px #0b1b2b14;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root{--font-sans:"IBM Plex Sans", system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono:"IBM Plex Mono", ui-monospace, "SFMono-Regular", Menlo, monospace;--radius:10px;--radius-sm:6px;--content-width:1080px}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--text);font-family:var(--font-sans);margin:0;font-size:16px;line-height:1.6;transition:background-color .2s,color .2s}h1,h2,h3{letter-spacing:-.015em;margin:0;font-weight:600;line-height:1.2}p{margin:0}a{color:var(--accent-text)}button{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.container{width:100%;max-width:var(--content-width);margin:0 auto;padding:0 20px}.muted{color:var(--text-muted)}.mono{font-family:var(--font-mono)}.eyebrow{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--accent-text);font-size:.78rem}.btn{border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface);cursor:pointer;justify-content:center;align-items:center;gap:8px;padding:10px 18px;font-weight:500;text-decoration:none;transition:border-color .15s,background-color .15s,transform 50ms;display:inline-flex}.btn:hover:not(:disabled){border-color:var(--accent)}.btn:active:not(:disabled){transform:translateY(1px)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--accent-strong);border-color:var(--accent-strong);color:#fff}.btn-primary:hover:not(:disabled){background:var(--accent-text);border-color:var(--accent-text);color:var(--on-accent)}.btn-ghost{background:0 0}.btn-sm{padding:6px 12px;font-size:.9rem}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:22px}.site-header{z-index:10;background:color-mix(in srgb, var(--bg) 88%, transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--border);position:sticky;top:0}.site-header .container{justify-content:space-between;align-items:center;gap:12px;min-height:60px;display:flex}.brand{color:var(--text);letter-spacing:-.01em;align-items:center;gap:10px;font-weight:600;text-decoration:none;display:flex}.brand img{width:30px;height:30px}.header-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:10px;display:flex}.user-chip{font-family:var(--font-mono);color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;max-width:220px;font-size:.8rem;overflow:hidden}.icon-btn{width:38px;height:38px;padding:0}.status-badge{border:1px solid var(--border);background:var(--surface);white-space:nowrap;border-radius:999px;align-items:center;gap:8px;padding:5px 12px;font-size:.82rem;display:inline-flex}.status-dot{background:var(--text-muted);border-radius:50%;width:9px;height:9px}.status-ready .status-dot{background:var(--success)}.status-checking .status-dot{background:var(--warning);animation:1.2s ease-in-out infinite pulse}.status-down .status-dot{background:var(--danger)}.status-badge button{color:var(--accent-text);cursor:pointer;background:0 0;border:none;padding:0;text-decoration:underline}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(.8)}}@media (prefers-reduced-motion:reduce){.status-checking .status-dot{animation:none}*{transition:none!important}}.hero{padding:72px 0 48px}.hero h1{max-width:18ch;margin:14px 0 18px;font-size:clamp(2.2rem,5vw,3.4rem)}.hero p.lead{max-width:62ch;color:var(--text-muted);font-size:1.15rem}.hero-actions{flex-wrap:wrap;align-items:center;gap:14px;margin-top:28px;display:flex}.section{padding:36px 0}.section h2{margin-bottom:14px;font-size:1.5rem}.grid-3{grid-template-columns:repeat(3,1fr);gap:16px;display:grid}.grid-2{grid-template-columns:repeat(2,1fr);gap:16px;display:grid}.card h3{margin-bottom:8px;font-size:1.05rem}.card p{color:var(--text-muted);font-size:.95rem}.check-list{gap:10px;margin:0;padding:0;list-style:none;display:grid}.check-list li{color:var(--text-muted);padding-left:26px;position:relative}.check-list li:before{content:"";border-left:2px solid var(--accent);border-bottom:2px solid var(--accent);width:10px;height:6px;position:absolute;top:.55em;left:2px;transform:rotate(-45deg)}.check-list strong{color:var(--text);font-weight:500}.footer{border-top:1px solid var(--border);color:var(--text-muted);margin-top:36px;padding:24px 0 40px;font-size:.88rem}.login-layout{grid-template-columns:1fr 1fr;align-items:start;gap:24px;padding:48px 0;display:grid}.login-layout h1{margin-bottom:6px;font-size:1.8rem}.form{gap:16px;margin-top:20px;display:grid}.field{gap:6px;display:grid}.field label{font-size:.88rem;font-weight:500}.field input{border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--bg-elevated);color:var(--text);font:inherit;padding:10px 12px}.field input:focus{outline:2px solid var(--accent);outline-offset:0;border-color:var(--accent)}.field-error{color:var(--danger);font-size:.85rem}.card .form-error,.card p.field-error{color:var(--danger);font-size:.9rem}.quick-list{gap:12px;margin-top:16px;display:grid}.quick-btn{text-align:left;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-2);cursor:pointer;gap:4px;width:100%;padding:14px 16px;transition:border-color .15s;display:grid}.quick-btn:hover:not(:disabled){border-color:var(--accent)}.quick-btn:disabled{opacity:.55;cursor:not-allowed}.quick-btn .title{justify-content:space-between;gap:10px;font-weight:600;display:flex}.quick-btn .email{font-family:var(--font-mono);color:var(--accent-text);font-size:.78rem}.quick-btn .desc{color:var(--text-muted);font-size:.88rem}.page{padding-block:36px 60px}.page-title{margin-bottom:6px;font-size:1.7rem}.token-parts{gap:16px;margin-top:20px;display:grid}pre.code{border-radius:var(--radius-sm);background:var(--bg-elevated);border:1px solid var(--border);font-family:var(--font-mono);white-space:pre-wrap;word-break:break-all;margin:0;padding:14px;font-size:.82rem;line-height:1.55;overflow-x:auto}.part-label{align-items:center;gap:10px;margin-bottom:8px;font-size:.95rem;font-weight:600;display:flex}.part-tag{font-family:var(--font-mono);border:1px solid var(--border);color:var(--text-muted);border-radius:999px;padding:2px 8px;font-size:.72rem;font-weight:400}.chips{flex-wrap:wrap;gap:6px;display:flex}.chip{font-family:var(--font-mono);background:var(--surface-2);border:1px solid var(--border);border-radius:999px;padding:3px 9px;font-size:.74rem}.perm-group{gap:6px;margin-top:12px;display:grid}.perm-group .group-name{text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);font-size:.78rem}.expiry{gap:8px;display:grid}.expiry-bar{background:var(--surface-2);border-radius:999px;height:6px;overflow:hidden}.expiry-bar>div{background:var(--accent);height:100%;transition:width 1s linear}.expiry-time{font-family:var(--font-mono);font-size:1.6rem;font-weight:500}.callout{border-left:3px solid var(--accent);background:var(--surface-2);border-radius:0 var(--radius-sm) var(--radius-sm) 0;color:var(--text-muted);padding:12px 16px;font-size:.92rem}.callout strong{color:var(--text)}.notices{z-index:50;gap:10px;width:min(380px,100vw - 32px);display:grid;position:fixed;bottom:16px;right:16px}.notice{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);border-left-width:4px;grid-template-columns:1fr auto;gap:4px 10px;padding:12px 14px;display:grid}.notice-info{border-left-color:var(--accent)}.notice-success{border-left-color:var(--success)}.notice-error{border-left-color:var(--danger)}.notice .notice-title{font-size:.95rem;font-weight:600}.notice .notice-text{color:var(--text-muted);grid-column:1;font-size:.88rem}.notice button{cursor:pointer;color:var(--text-muted);background:0 0;border:none;grid-area:1/2;padding:0 2px;font-size:1.1rem;line-height:1}@media (width<=800px){.grid-3,.grid-2,.login-layout{grid-template-columns:1fr}.hero{padding-top:44px}.user-chip{display:none}}.panel-nav{border-bottom:1px solid var(--border);background:var(--bg-elevated)}.panel-nav .container{gap:4px;display:flex;overflow-x:auto}.panel-link{color:var(--text-muted);white-space:nowrap;border-bottom:2px solid #0000;padding:12px 14px;font-size:.92rem;font-weight:500;text-decoration:none}.panel-link:hover{color:var(--text)}.panel-link.active{color:var(--accent-text);border-bottom-color:var(--accent)}.toolbar{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:20px;display:flex}.toolbar-actions{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.inline-field{color:var(--text-muted);align-items:center;gap:8px;font-size:.88rem;display:inline-flex}.inline-field.grow,.inline-field.grow select{flex:1}select,textarea{border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--bg-elevated);color:var(--text);font:inherit;padding:8px 10px}.field select,.field textarea{width:100%}textarea{resize:vertical}.field .label{font-size:.88rem;font-weight:500}.hint,.small{font-size:.82rem}.section-title{margin:28px 0 12px;font-size:1.15rem}.table-wrap{padding:0;overflow-x:auto}table.data{border-collapse:collapse;width:100%;font-size:.92rem}table.data th{text-align:left;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);border-bottom:1px solid var(--border);white-space:nowrap;padding:12px 16px;font-size:.78rem;font-weight:500}table.data td{border-bottom:1px solid var(--border);vertical-align:middle;padding:12px 16px}table.data tbody tr:last-child td{border-bottom:none}.row-title{color:var(--text);font-weight:500;text-decoration:none}.row-title:hover{color:var(--accent-text)}.row-actions{text-align:right;white-space:nowrap}.row-actions>*+*{margin-left:6px}.badge{border:1px solid var(--border);border-radius:999px;padding:2px 10px;font-size:.78rem;display:inline-block}.badge-ok{color:var(--success);border-color:color-mix(in srgb, var(--success) 45%, transparent)}.badge-warn{color:var(--warning);border-color:color-mix(in srgb, var(--warning) 45%, transparent)}.badge-off{color:var(--text-muted)}.btn-danger{background:var(--danger);border-color:var(--danger);color:#fff}.btn-danger-ghost{color:var(--danger)}.btn-danger-ghost:hover:not(:disabled){border-color:var(--danger)}.pager{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-top:14px;font-size:.88rem;display:flex}.pager div{gap:8px;display:flex}.empty{border:1px dashed var(--border);border-radius:var(--radius);justify-items:start;gap:8px;padding:24px;display:grid}.empty p{color:var(--text-muted);font-size:.92rem}.skeleton-list{gap:10px;display:grid}.skeleton{border-radius:var(--radius-sm);background:linear-gradient(90deg, var(--surface) 0%, var(--surface-2) 50%, var(--surface) 100%);background-size:200% 100%;height:48px;animation:1.4s linear infinite shimmer}@keyframes shimmer{to{background-position:-200% 0}}.check-group{flex-wrap:wrap;gap:8px 18px;display:flex}.check-row{cursor:pointer;align-items:center;gap:8px;font-size:.92rem;display:inline-flex}.check-row input{accent-color:var(--accent-strong);width:16px;height:16px}.enroll-bar{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:16px;padding:14px 18px;display:flex}dialog.modal{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);color:var(--text);width:min(480px,100vw - 32px);box-shadow:var(--shadow);padding:0}dialog.modal::backdrop{background:#040c1499}.modal-body{gap:4px;padding:22px;display:grid}.modal-head{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.modal-head h2{font-size:1.2rem}.modal-actions{justify-content:flex-end;gap:10px;margin-top:12px;display:flex}@media (width<=800px){.row-actions{white-space:normal}.row-actions>*{margin:2px 0 2px 6px}}.course-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px;display:grid}.course-card{align-content:start;gap:10px;display:grid}.course-card h3{margin:0}.course-meta{gap:8px;display:flex}.course-actions{gap:8px;margin-top:4px;display:flex}.lab-card{align-content:start;gap:12px;display:grid}.lab-card h3{margin:0}.lab-result{border-top:1px solid var(--border);gap:10px;padding-top:12px;display:grid}.lab-request{flex-wrap:wrap;align-items:center;gap:10px;font-size:.85rem;display:flex}.lab-highlight{font-family:var(--font-mono);color:var(--accent-text);font-size:.85rem}.lab-card .lab-explain{color:var(--text);font-size:.92rem}details summary{cursor:pointer;color:var(--accent-text);font-size:.88rem}details pre.code{margin-top:8px}
