@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-cyrillic-400-normal-DZqxrq2p.woff2) format("woff2"),url(/assets/ibm-plex-sans-cyrillic-400-normal-BTotfTJu.woff) format("woff")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-latin-400-normal-CDDApCn2.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-400-normal-CYLoc0-x.woff) format("woff")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-cyrillic-500-normal-CocWQlwt.woff2) format("woff2"),url(/assets/ibm-plex-sans-cyrillic-500-normal-ByOcLdNv.woff) format("woff")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-latin-500-normal-6ng42L7E.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-500-normal-BgVn5rGT.woff) format("woff")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-cyrillic-600-normal-71GNu3SW.woff2) format("woff2"),url(/assets/ibm-plex-sans-cyrillic-600-normal-BGq0mW3O.woff) format("woff")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-latin-600-normal-CuJfVYMP.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-600-normal-Cu4Hd6ag.woff) format("woff")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/ibm-plex-sans-cyrillic-700-normal-D_uavGvn.woff2) format("woff2"),url(/assets/ibm-plex-sans-cyrillic-700-normal-RFb1v-CK.woff) format("woff")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/ibm-plex-sans-latin-700-normal-Bxkt5Cjx.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-700-normal-Bth3BMcD.woff) format("woff")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-cyrillic-400-normal-BSMlKf0J.woff2) format("woff2"),url(/assets/ibm-plex-mono-cyrillic-400-normal-CEL4l2ZJ.woff) format("woff")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-400-normal-CvHOgSBP.woff) format("woff")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-cyrillic-500-normal-Bq9vWWag.woff2) format("woff2"),url(/assets/ibm-plex-mono-cyrillic-500-normal-Ael50iVv.woff) format("woff")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-latin-500-normal-DSY6xOcd.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-500-normal-CB9ihrfo.woff) format("woff")}:root{--bg: #f1eee6;--surface: #fbf9f3;--surface-hover: #f5f2e9;--text: #15233c;--text-muted: #4c5a72;--text-faint: #7f8a9c;--line: rgba(21, 35, 60, .14);--line-strong: rgba(21, 35, 60, .42);--grid: rgba(21, 35, 60, .055);--accent: #d5411d;--accent-hover: #bd3716;--accent-text: #fffaf3;--accent-soft: rgba(213, 65, 29, .1);--success: #1c7a43;--success-soft: rgba(28, 122, 67, .12);--warning: #a35a00;--warning-soft: rgba(163, 90, 0, .12);--danger: #c22a1a;--danger-soft: rgba(194, 42, 26, .09);--focus: rgba(213, 65, 29, .45);--nav-bg: #15233c;--nav-text: rgba(255, 250, 243, .78);--nav-text-strong: #fffaf3;--nav-line: rgba(255, 250, 243, .12);--shadow-sm: none;--shadow: none;--shadow-pop: 6px 6px 0 rgba(21, 35, 60, .9);--radius-sm: 2px;--radius: 3px;--radius-lg: 3px;--radius-tile: 3px;--radius-pill: 3px;--ease: cubic-bezier(.22, 1, .36, 1);--dur-fast: .18s;--dur: .35s;--nav-h: 48px;--font: "IBM Plex Sans", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono: "IBM Plex Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace;color-scheme:light}:root[data-theme=dark]{--bg: #0d1524;--surface: #131e31;--surface-hover: #18253b;--text: #e8ecf3;--text-muted: #9ba8be;--text-faint: #6c7a92;--line: rgba(200, 215, 240, .12);--line-strong: rgba(200, 215, 240, .36);--grid: rgba(200, 215, 240, .045);--accent: #ff6b3d;--accent-hover: #ff7f57;--accent-text: #1c0c05;--accent-soft: rgba(255, 107, 61, .15);--success: #4cc38a;--success-soft: rgba(76, 195, 138, .15);--warning: #f2a33a;--warning-soft: rgba(242, 163, 58, .15);--danger: #ff6b5e;--danger-soft: rgba(255, 107, 94, .14);--focus: rgba(255, 107, 61, .5);--nav-bg: #090f1a;--shadow-pop: 6px 6px 0 rgba(0, 0, 0, .7);color-scheme:dark}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--bg: #0d1524;--surface: #131e31;--surface-hover: #18253b;--text: #e8ecf3;--text-muted: #9ba8be;--text-faint: #6c7a92;--line: rgba(200, 215, 240, .12);--line-strong: rgba(200, 215, 240, .36);--grid: rgba(200, 215, 240, .045);--accent: #ff6b3d;--accent-hover: #ff7f57;--accent-text: #1c0c05;--accent-soft: rgba(255, 107, 61, .15);--success: #4cc38a;--success-soft: rgba(76, 195, 138, .15);--warning: #f2a33a;--warning-soft: rgba(242, 163, 58, .15);--danger: #ff6b5e;--danger-soft: rgba(255, 107, 94, .14);--focus: rgba(255, 107, 61, .5);--nav-bg: #090f1a;--shadow-pop: 6px 6px 0 rgba(0, 0, 0, .7);color-scheme:dark}}*,*:before,*:after{box-sizing:border-box}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-text-size-adjust:100%}body{margin:0;min-height:100dvh;background:var(--bg);color:var(--text);font-family:var(--font);font-size:17px;line-height:1.47;padding-top:var(--nav-h);background-image:linear-gradient(var(--grid) 1px,transparent 1px),linear-gradient(90deg,var(--grid) 1px,transparent 1px);background-size:24px 24px;letter-spacing:0}h1,h2,h3{margin:0;text-wrap:balance;letter-spacing:-.012em;font-weight:600}h1{overflow-wrap:break-word;font-size:clamp(32px,7vw,56px);letter-spacing:-.012em;font-weight:700;line-height:1.02}h2{font-size:clamp(28px,4.5vw,40px);line-height:1.1;letter-spacing:-.012em;font-weight:600}h3{font-size:21px;line-height:1.2}h2 .muted,h1 .muted{color:var(--text-muted);font-weight:500}p{margin:0;text-wrap:pretty}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}.more:after{content:" ›";display:inline-block;transition:transform var(--dur-fast) var(--ease)}.more:hover:after{transform:translate(2px)}img{outline:1px solid var(--line);outline-offset:-1px}.num{font-variant-numeric:tabular-nums}:focus-visible{outline:3px solid var(--focus);outline-offset:2px;border-radius:var(--radius-sm)}.topbar{position:fixed;inset:0 0 auto;z-index:10;height:var(--nav-h);background:var(--nav-bg);color:var(--nav-text);font-size:12px;letter-spacing:-.01em}.topbar-inner{max-width:1024px;height:100%;margin:0 auto;padding:0 16px;display:flex;align-items:center;gap:8px}.brand{display:inline-flex;align-items:center;gap:8px;color:var(--nav-text-strong);padding:10px 8px;margin-left:-8px;border-radius:var(--radius-sm);margin-right:auto;font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.1em;font-size:13px;font-weight:500}.brand:hover{text-decoration:none}.brand-mark{display:inline-grid;place-items:center;width:20px;height:20px;background:var(--accent);color:var(--accent-text);border-radius:2px}.topbar-link{color:var(--nav-text);padding:10px;border-radius:var(--radius-sm);transition:color var(--dur-fast) var(--ease);display:inline-flex;align-items:center;gap:6px;min-height:40px;font-family:var(--font-mono);letter-spacing:0;font-size:13px}.topbar-link:hover,.topbar-link.active{color:var(--nav-text-strong);text-decoration:none}.topbar-link:last-child{margin-right:-10px}.topbar button.topbar-link{background:none;border:0;font:inherit;cursor:pointer}.page{max-width:1024px;margin:0 auto;padding:24px 16px 64px}.narrow{max-width:480px;margin:0 auto}.centered{text-align:center;padding-top:48px;display:flex;flex-direction:column;align-items:center;gap:12px}.eyebrow{color:var(--accent);font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.1em;font-size:12px;font-weight:500}.kicker{color:var(--text-muted);font-size:12px;font-weight:600;text-transform:uppercase;font-family:var(--font-mono);letter-spacing:0}.lead{color:var(--text-muted);line-height:1.38;font-weight:400;max-width:30em;font-size:19px}.section-head{display:flex;flex-direction:column;gap:8px;margin:56px 0 24px}.hero{display:flex;flex-direction:column;gap:18px;--hero-top: 40px;--hero-bottom: 28px;padding:var(--hero-top) 0 var(--hero-bottom) 24px;border-left:1px solid var(--line-strong);position:relative}.hero h1{max-width:14em}.actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:10px}.tiles{display:grid;grid-template-columns:1fr;gap:14px}.tile{background:var(--surface);border-radius:var(--radius-lg);padding:28px 24px;display:flex;flex-direction:column;gap:8px;box-shadow:var(--shadow-sm);border:1px solid var(--line-strong);position:relative;min-height:200px}.tile h3{font-size:28px;font-weight:700;letter-spacing:-.01em}.tile p{color:var(--text-muted);font-size:17px;line-height:1.4}.tile .kicker{margin-bottom:4px}.tile-icon{display:inline-grid;place-items:center;width:44px;height:44px;margin-bottom:8px;border-radius:2px;background:transparent;box-shadow:inset 0 0 0 1px var(--line-strong);color:var(--text)}.status{display:flex;align-items:center;gap:8px;margin-top:40px;color:var(--text-faint);font-size:13px;font-family:var(--font-mono);letter-spacing:0}.dot{width:8px;height:8px;border-radius:50%;background:var(--text-faint);transition:background-color var(--dur) var(--ease)}.dot-ok{background:var(--success)}.dot-bad{background:var(--danger)}.btn-wrap{display:inline-flex}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:0 22px;border:0;border-radius:var(--radius-pill);font:inherit;cursor:pointer;text-decoration:none;white-space:nowrap;transition-property:background-color,color,box-shadow,opacity;transition-duration:var(--dur-fast);transition-timing-function:var(--ease);font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.07em;font-size:13px;font-weight:500;min-height:46px}.btn:hover{text-decoration:none}.btn:disabled{opacity:.5;cursor:default}.btn-sm{padding:0 14px;font-size:12px;min-height:34px}.btn-primary{background:var(--accent);color:var(--accent-text);box-shadow:4px 4px 0 var(--text)}.btn-primary:hover{background:var(--accent-hover)}.btn-secondary{background:var(--surface);color:var(--accent);box-shadow:inset 0 0 0 1px var(--line-strong)}.btn-secondary:hover{background:var(--surface-hover)}.btn-ghost{background:transparent;color:var(--accent)}.btn-ghost:hover{background:var(--accent-soft)}.btn-danger{background:transparent;color:var(--danger);box-shadow:inset 0 0 0 1px var(--line-strong)}.btn-danger:hover{background:var(--danger-soft)}.link{border:0;background:none;padding:0;font:inherit;color:var(--accent);cursor:pointer}.link:hover{text-decoration:underline}.form{display:flex;flex-direction:column;gap:14px}.field{display:flex;flex-direction:column;gap:6px}.field>span{font-size:14px;color:var(--text-muted)}.input,.select,.textarea{width:100%;min-height:48px;padding:12px 16px;border:1px solid var(--line-strong);background:var(--surface);color:var(--text);font:inherit;font-size:17px;transition-property:border-color,box-shadow;transition-duration:var(--dur-fast);transition-timing-function:var(--ease)}.textarea{min-height:140px;resize:vertical;line-height:1.4}.input:focus,.select:focus,.textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 4px var(--accent-soft)}.input::placeholder,.textarea::placeholder{color:var(--text-faint)}.hint{color:var(--text-faint);font-size:13px;font-family:var(--font-mono);letter-spacing:0}.error{color:var(--danger);font-size:15px}.card{background:var(--surface);border-radius:var(--radius-lg);padding:20px;box-shadow:var(--shadow-sm);border:1px solid var(--line-strong)}.list{background:var(--surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);overflow:hidden;border:1px solid var(--line-strong)}.row{display:flex;align-items:center;gap:12px;padding:14px 20px;min-height:56px;color:inherit;text-decoration:none;transition:background-color var(--dur-fast) var(--ease)}.row+.row{border-top:1px solid var(--line)}a.row:hover,button.row:hover{background:var(--surface-hover);text-decoration:none}button.row{width:100%;border:0;background:none;font:inherit;text-align:left;cursor:pointer}.row-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.row-title{font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.row-sub{color:var(--text-muted);font-family:var(--font-mono);letter-spacing:0;font-size:13px}.row-actions{display:flex;gap:6px;flex-shrink:0}.chevron{color:var(--text-faint);flex-shrink:0}.badge{display:inline-flex;align-items:center;min-height:22px;padding:0 9px;background:var(--accent-soft);color:var(--accent);white-space:nowrap;font-family:var(--font-mono);border-radius:2px;text-transform:uppercase;letter-spacing:.05em;font-size:11px;font-weight:500}.badge-warn{background:var(--warning-soft);color:var(--warning)}.badge-ok{background:var(--success-soft);color:var(--success)}.badge-muted{background:var(--line);color:var(--text-muted)}.badge-count{min-width:20px;height:20px;padding:0 6px;justify-content:center;background:var(--danger);color:var(--accent-text)}.chips{display:flex;flex-wrap:wrap;gap:8px}.chip{display:inline-flex;align-items:center;gap:6px;min-height:36px;padding:0 14px;border-radius:var(--radius-pill);background:var(--surface);box-shadow:inset 0 0 0 1px var(--line-strong);color:var(--text);font:inherit;font-size:15px;cursor:pointer;transition-property:background-color,color,box-shadow;transition-duration:var(--dur-fast);transition-timing-function:var(--ease)}.chip.active{box-shadow:none;background:var(--text);color:var(--bg)}.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin:0 0 16px}.toolbar .grow{flex:1}.page-head{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:12px;margin:8px 0 24px}.page-head .lead{font-size:17px}.subnav{display:flex;gap:4px;overflow-x:auto;scrollbar-width:none;margin:0 -16px 20px;padding:0 16px}.subnav::-webkit-scrollbar{display:none}.subnav a{display:inline-flex;align-items:center;gap:8px;min-height:40px;padding:0 14px;border-radius:var(--radius-pill);color:var(--text-muted);font-size:15px;white-space:nowrap;transition-property:background-color,color;transition-duration:var(--dur-fast);transition-timing-function:var(--ease)}.subnav a:hover{color:var(--text);text-decoration:none}.subnav a.active{box-shadow:var(--shadow-sm);background:var(--text);color:var(--bg)}.empty{padding:40px 20px;text-align:center;color:var(--text-muted);display:flex;flex-direction:column;align-items:center;gap:12px}.state{display:flex;align-items:center;gap:10px;padding:24px;color:var(--text-muted);font-size:15px}.state-error{color:var(--danger)}.spinner{width:16px;height:16px;border-radius:50%;border:2px solid var(--line-strong);border-top-color:var(--text-muted);animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.toasts{position:fixed;left:16px;right:16px;bottom:16px;z-index:20;display:flex;flex-direction:column;align-items:center;gap:8px;pointer-events:none}.toast{pointer-events:auto;max-width:480px;padding:12px 18px;border-radius:var(--radius);background:var(--text);color:var(--bg);font-size:15px;box-shadow:var(--shadow-pop)}.toast-error{background:var(--danger);color:var(--accent-text)}.code{font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:.95em;letter-spacing:.08em;padding:2px 8px;border-radius:var(--radius);background:var(--line)}@media(min-width:720px){.page{padding:40px 24px 80px}.topbar-inner{padding:0 24px}.hero{--hero-top: 56px;--hero-bottom: 36px;padding-left:36px}.tiles{grid-template-columns:repeat(3,1fr);gap:18px}.tile{border-radius:var(--radius-tile);padding:36px 32px;min-height:280px}.tile-icon{border-radius:var(--radius)}.subnav{margin:0 0 24px;padding:0}.toasts{left:auto;right:24px;bottom:24px;align-items:flex-end}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}.auth{padding-top:24px;display:flex;flex-direction:column;gap:16px}.auth .form{margin-top:8px}.auth-foot{color:var(--text-muted);font-size:15px;line-height:1.5;margin-top:8px}.btn-block{width:100%;margin-top:6px}.mb{margin-bottom:12px}.done-mark{display:inline-grid;place-items:center;width:64px;height:64px;border-radius:50%;background:var(--success);color:var(--accent-text);margin-bottom:8px}.overlay{position:fixed;inset:0;z-index:30;background:#0006;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);display:flex;align-items:flex-end;justify-content:center;padding:0}.dialog{width:100%;max-height:92dvh;overflow-y:auto;background:var(--surface);border-radius:var(--radius-tile) var(--radius-tile) 0 0;padding:20px 20px calc(20px + env(safe-area-inset-bottom));box-shadow:var(--shadow-pop)}.dialog-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}.dialog-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:8px}.icon-btn{display:inline-grid;place-items:center;width:40px;height:40px;border:0;border-radius:50%;background:transparent;color:var(--text-muted);cursor:pointer;transition-property:background-color,color;transition-duration:var(--dur-fast);transition-timing-function:var(--ease)}.icon-btn:hover{background:var(--line);color:var(--text)}.narrow-wide{max-width:720px}.crumbs{color:var(--text-muted);font-size:14px;margin-bottom:8px;font-family:var(--font-mono);letter-spacing:0}.row-between{flex-direction:row;align-items:flex-end;justify-content:space-between;gap:12px;flex-wrap:wrap}.tiles.two .tile{min-height:0;padding:24px}.tile .actions{margin-top:8px}.tile-icon.small{width:36px;height:36px;margin:0;border-radius:2px;background:transparent;box-shadow:inset 0 0 0 1px var(--line-strong);color:var(--text)}.link.danger{color:var(--danger)}.row-actions .btn-sm{padding:0 12px}.hide-sm{display:none}@media(min-width:720px){.overlay{align-items:center;padding:24px}.dialog{max-width:520px;border-radius:var(--radius-tile);padding:28px}.tiles.two{grid-template-columns:1fr 1fr}.tiles.two .tile{border-radius:var(--radius-lg)}.hide-sm{display:inline}}@media(max-width:719px){.list .row{flex-wrap:wrap}.row-title{white-space:normal}.row-actions:not(.inline){width:100%;justify-content:flex-end}}@media(pointer:coarse){.btn-sm,.chip,.topbar-link{min-height:44px}.icon-btn{width:44px;height:44px}}.chip:disabled{opacity:.6;cursor:default}.done-mark.waiting{background:var(--accent)}.mono,.mono-sub{font-family:ui-monospace,SF Mono,Menlo,monospace;letter-spacing:.02em}.cards{display:grid;gap:10px;margin-top:12px;grid-template-columns:1fr}.cred{border:1.5px dashed var(--line-strong);border-radius:var(--radius);padding:14px 16px;break-inside:avoid}.cred-name{font-weight:600;font-size:16px;line-height:1.3}.cred-group{color:var(--text-muted);font-size:13px}.cred dl{display:grid;grid-template-columns:auto 1fr;gap:2px 12px;margin:10px 0 8px;font-size:15px}.cred dt{color:var(--text-muted)}.cred dd{margin:0;font-weight:600;word-break:break-all}.cred-foot{color:var(--text-faint);font-size:12px}@media(min-width:720px){.dialog:has(.cards){max-width:680px}.cards{grid-template-columns:1fr 1fr}}@media print{#root,.toasts,.dialog-head,.no-print{display:none!important}html,body{background:#fff!important;color:#000!important;padding:0!important;overflow:visible!important;min-height:0!important}.overlay{position:static!important;display:block!important;background:none!important;-webkit-backdrop-filter:none!important;backdrop-filter:none!important;padding:0!important;opacity:1!important}.dialog{max-width:none!important;max-height:none!important;overflow:visible!important;box-shadow:none!important;border-radius:0!important;padding:0!important;background:none!important;transform:none!important;opacity:1!important}.cards{grid-template-columns:1fr 1fr;gap:0}.cred{border:1px dashed #000;border-radius:0;padding:12px 14px;color:#000}.cred dt,.cred-group,.cred-foot{color:#333}}.eyebrow+h1,.crumbs+.page-head{margin-top:10px}h1+.lead{margin-top:14px}h2+.lead,h2+p{margin-top:10px}.hero>*,.auth>*,.centered>*{margin-top:0}.row-main{gap:4px}.tile h3+p,.tile .kicker+p{margin-top:2px}.badge-bad{background:var(--danger-soft);color:var(--danger)}.row-link{color:inherit;text-decoration:none}.row-link:hover{text-decoration:none}.row-link:hover .row-title{color:var(--accent)}.row-sub{overflow-wrap:anywhere}.topic{margin-top:32px}.topic-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}.topic-head h3{font-size:24px;font-weight:700;letter-spacing:-.02em}.row.topic-add{gap:8px;background:var(--surface-hover)}.topic-head h3{min-width:0;overflow-wrap:anywhere}.subnav.tabs{margin-top:4px;margin-bottom:8px}.prose{display:flex;flex-direction:column;gap:14px}.pre{white-space:pre-wrap;overflow-wrap:anywhere}.late{color:var(--warning);font-weight:600}.card+.card{margin-top:14px}.topic-head>div{min-width:0}.files{display:flex;flex-direction:column;gap:8px}.thumbs{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:8px}.thumb{position:relative;aspect-ratio:1;border-radius:var(--radius);overflow:hidden;background:var(--line)}.thumb a,.thumb img{display:block;width:100%;height:100%}.thumb img{object-fit:cover;outline-offset:-1px;border-radius:var(--radius)}.thumb-remove{position:absolute;top:4px;right:4px;display:grid;place-items:center;width:28px;height:28px;border:0;border-radius:50%;background:#0009;color:var(--accent-text);cursor:pointer}.file-row{display:flex;align-items:center;gap:4px}.file-link{flex:1;min-width:0;display:flex;align-items:center;gap:10px;min-height:44px;padding:8px 12px;border-radius:var(--radius);background:var(--accent-soft);color:var(--accent)}.file-link:hover{text-decoration:none}.file-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text)}.file-size{color:var(--text-muted);font-size:13px;white-space:nowrap}.grades{display:flex;gap:10px}.grade{width:56px;height:56px;border:0;border-radius:var(--radius);background:var(--surface);box-shadow:inset 0 0 0 1px var(--line-strong);color:var(--text);font:inherit;font-size:22px;font-weight:600;cursor:pointer;transition-property:background-color,color,box-shadow,transform;transition-duration:var(--dur-fast);transition-timing-function:var(--ease)}.grade:active{transform:scale(.96)}.grade.active{background:var(--accent);color:var(--accent-text);box-shadow:none}.review .dialog-actions{flex-wrap:wrap}.due-line{display:flex;flex-wrap:wrap;align-items:center;gap:8px;font-size:17px}.row-sub.late{font-weight:500}.result-head{display:flex;align-items:center;gap:14px}.result.ok{background:var(--success-soft)}.result.back{background:var(--warning-soft)}.grade-big,.result-icon{display:inline-grid;place-items:center;width:56px;height:56px;border-radius:var(--radius);flex-shrink:0;background:var(--surface);box-shadow:var(--shadow-sm)}.grade-big{font-size:30px;font-weight:700;color:var(--success)}.result-icon{color:var(--warning)}.submit-bar{display:flex;flex-wrap:wrap;gap:10px}.submit-bar>*{flex:1 1 180px}.submit-bar .btn{width:100%}.thumb-remove:after{content:"";position:absolute;inset:-8px}.journal-pick{display:flex;flex-direction:column;gap:10px;margin-bottom:20px}.journal-note{margin-top:10px}.journal-wrap{overflow-x:auto;background:var(--surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);-webkit-overflow-scrolling:touch;border:1px solid var(--line-strong)}.journal{border-collapse:separate;border-spacing:0;font-size:15px;min-width:100%}.journal th,.journal td{padding:0;border-bottom:1px solid var(--line);text-align:center;white-space:nowrap}.journal tbody tr:last-child th,.journal tbody tr:last-child td{border-bottom:0}.journal thead th{font-size:13px;font-weight:600;color:var(--text-muted);height:44px;background:var(--surface)}.journal .name{position:sticky;left:0;z-index:1;background:var(--surface);text-align:left;font-weight:500;padding:0 12px 0 16px;max-width:44vw;overflow:hidden;text-overflow:ellipsis;box-shadow:1px 0 0 var(--line)}.journal .sum{padding:0 12px;color:var(--text-muted);font-weight:600}.journal thead .practice a{display:block;max-width:96px;margin:0 auto;padding:0 8px;overflow:hidden;text-overflow:ellipsis}.col-head{width:100%;min-width:48px;height:44px;border:0;background:none;font:inherit;color:var(--accent);cursor:pointer}.cell{display:grid;place-items:center;width:100%;min-width:48px;height:44px;border:0;background:none;font:inherit;font-weight:600;font-variant-numeric:tabular-nums;color:var(--text);cursor:pointer;text-decoration:none;transition:background-color var(--dur-fast) var(--ease)}span.cell{cursor:default}button.cell:hover,a.cell:hover,.col-head:hover{background:var(--accent-soft);text-decoration:none}.cell.absent{color:var(--danger)}.cell.submitted{color:var(--warning)}.cell.returned{color:var(--text-faint)}.cell.accepted{color:var(--success)}.push-left{margin-right:auto}.stats{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:10px}.stat{background:var(--surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);padding:16px 18px;display:flex;flex-direction:column;gap:2px;border:1px solid var(--line-strong)}.stat-value{font-size:32px;font-weight:700;letter-spacing:-.02em;line-height:1.1}.stat-value.warn{color:var(--danger)}.stat-label{color:var(--text-muted);font-size:14px;font-family:var(--font-mono);letter-spacing:0}.mark{display:inline-grid;place-items:center;width:36px;height:36px;font-weight:700;flex-shrink:0;border-radius:2px;font-family:var(--font-mono);background:transparent;box-shadow:inset 0 0 0 1.5px currentColor}.mark.g5,.mark.g4{color:var(--success)}.mark.g3{color:var(--warning)}.mark.g2,.mark.absent{color:var(--danger)}.questions{display:flex;flex-direction:column;gap:12px}.question{display:flex;flex-direction:column;gap:10px;margin:0;border:1px solid var(--line-strong);min-width:0}.questions .card+.card{margin-top:0}.question-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.question-text{font-size:19px;font-weight:500;line-height:1.35}fieldset.question>legend{float:left;width:100%;padding:0}.question-image{position:relative;align-self:flex-start;max-width:100%}.question-image img{display:block;max-width:100%;max-height:360px;border-radius:var(--radius)}.option-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.option-list li{display:flex;align-items:center;gap:8px;min-height:28px}.option-list li svg{flex-shrink:0}.option-list li.right{color:var(--success);font-weight:500}.option-list li.wrong{color:var(--danger)}.bullet{width:16px;height:16px;flex-shrink:0;border-radius:50%;box-shadow:inset 0 0 0 1.5px var(--line-strong)}.bullet.on{background:var(--text-muted);box-shadow:none}.verdict{display:inline-flex;align-items:center;gap:4px;font-size:14px;font-weight:600;white-space:nowrap}.verdict.ok{color:var(--success)}.verdict.bad{color:var(--danger)}.mark.big{width:56px;height:56px;border-radius:var(--radius);font-size:28px}.grade-big.g3{color:var(--warning)}.grade-big.g2{color:var(--danger)}.option-edit{display:flex;align-items:center;gap:8px}.option-edit .input{flex:1;min-width:0}.tick{width:24px;height:24px;flex-shrink:0;accent-color:var(--success)}.field-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.field-row.three{grid-template-columns:repeat(3,1fr)}.textarea.short{min-height:88px}.check{display:flex;align-items:flex-start;gap:10px;min-height:44px;font-size:15px;line-height:1.4;cursor:pointer}.check input{width:22px;height:22px;flex-shrink:0;margin:0;accent-color:var(--accent)}.quiz-bar{position:sticky;top:var(--nav-h);z-index:5;display:flex;align-items:center;gap:12px;margin:-8px -16px 16px;padding:10px 16px;background:var(--bg);border-bottom:1px solid var(--line)}.quiz-bar-title{flex:1;min-width:0;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.timer{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:var(--radius-pill);background:var(--surface);box-shadow:var(--shadow-sm);font-weight:600}.timer.hot{background:var(--danger);color:var(--accent-text)}.choices{display:flex;flex-direction:column;gap:8px}.choice{display:flex;align-items:center;gap:12px;min-height:52px;padding:10px 14px;border-radius:var(--radius);box-shadow:inset 0 0 0 1px var(--line-strong);cursor:pointer;transition-property:background-color,box-shadow;transition-duration:var(--dur-fast);transition-timing-function:var(--ease)}.choice.on{background:var(--accent-soft);box-shadow:inset 0 0 0 2px var(--accent)}.choice input{width:22px;height:22px;flex-shrink:0;margin:0;accent-color:var(--accent)}.choice:focus-within{outline:3px solid var(--focus);outline-offset:2px}@media(min-width:720px){.quiz-bar{margin:-8px 0 20px;padding:10px 0}}h2 .muted{font-weight:500}.eyebrow:before{content:"■ "}.hero:before,.hero:after{content:"";position:absolute;left:-5px;width:9px;height:1px;background:var(--text);top:var(--hero-top)}.hero:after{top:auto;bottom:var(--hero-bottom)}.btn-primary:active{box-shadow:1px 1px 0 var(--text);translate:3px 3px}.home-grid{display:grid;gap:32px;padding-top:24px}.sheet{margin:0;background:var(--surface);border:1px solid var(--line-strong);outline:1px solid var(--line);outline-offset:-7px;padding:22px 18px 0}.sheet svg{display:block;width:100%;height:auto;color:var(--text)}.sheet .wire{fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter}.sheet .part{fill:var(--surface)}.sheet .node{fill:currentColor}.sheet .signal{stroke:var(--accent)}.sheet text{font:500 13px var(--font-mono);fill:var(--text-muted)}.sheet-stamp{display:grid;grid-template-columns:1fr auto auto;margin:14px -11px 7px;border-top:1px solid var(--line-strong);font:400 12px/1.3 var(--font-mono);color:var(--text-muted)}.sheet-stamp>span{padding:9px 12px}.sheet-stamp>span+span{border-left:1px solid var(--line-strong)}.legend{list-style:none;margin:40px 0 0;padding:0;display:grid;grid-template-columns:1fr 1fr;border-top:1px solid var(--line-strong);counter-reset:legend}.legend li{counter-increment:legend;display:flex;align-items:baseline;gap:12px;padding:14px 4px;border-bottom:1px solid var(--line);font-weight:500}.legend li:before{content:"0" counter(legend);font:500 12px var(--font-mono);color:var(--accent)}@media(min-width:900px){.home-grid{grid-template-columns:1.1fr 1fr;align-items:center;gap:48px;padding-top:48px}.legend{display:flex;justify-content:space-between;border-bottom:1px solid var(--line);margin-top:64px}.legend li{border-bottom:0}}.loss-list{margin:8px 0 12px;padding-left:20px;font-weight:500}.loss-list li+li{margin-top:4px}.legal section{margin-top:32px}.legal section h2{font-size:21px;margin-bottom:10px}.legal section p+p{margin-top:10px}.legal code{font-family:var(--font-mono);font-size:.9em}.legal-list{margin:8px 0;padding-left:22px;display:flex;flex-direction:column;gap:6px}.consent-text{display:flex;flex-direction:column;gap:10px;font-size:15px;line-height:1.5;max-height:46dvh;overflow-y:auto;margin-top:20px}.site-foot{max-width:1024px;margin:0 auto;padding:0 16px 32px;font:400 12px var(--font-mono)}.site-foot a{color:var(--text-faint)}.paper{display:flex;flex-direction:column;gap:14px;line-height:1.7}.paper h2{font-size:19px;text-align:center}.blank{display:inline-block;min-width:90px;border-bottom:1px solid var(--text)}.blank.wide{min-width:220px}.signs{display:flex;flex-wrap:wrap;justify-content:space-between;gap:16px;margin-top:24px}@media print{html.print-doc #root{display:block!important}html.print-doc .topbar,html.print-doc .site-foot{display:none!important}html.print-doc .paper{border:0!important;padding:0!important;background:none!important;font-size:11pt;line-height:1.45;gap:8px}html.print-doc .legal-list{gap:2px}html.print-doc .signs{margin-top:16px}}
