@font-face{font-family:Roboto;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/roboto-400-latin.woff2)format("woff2");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:Roboto;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/roboto-400-latin-ext.woff2)format("woff2");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:Roboto;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/roboto-500-latin.woff2)format("woff2");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:Roboto;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/roboto-500-latin-ext.woff2)format("woff2");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:Roboto;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/roboto-700-latin.woff2)format("woff2");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:Roboto;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/roboto-700-latin-ext.woff2)format("woff2");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}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--font:"Roboto", system-ui, -apple-system, "Segoe UI", Arial, sans-serif;--text:#111827;--muted:#4b5563;--line:#111;--line-soft:#d1d5db;--bg:#f3f4f6;--card:#fff;--card-2:#f9fafb;--blue:#003da5;--blue-dark:#002a73;--blue-soft:#e8eefa;--ok:#166534;--ok-bg:#ecfdf5;--warn:#92400e;--warn-bg:#fffbeb;--bad:#b91c1c;--bad-bg:#fef2f2;--shadow:4px 4px 0 var(--blue);--shadow-dark:4px 4px 0 var(--line);--radius:2px;--seat-min:84px}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;overflow-y:scroll}body{font-family:var(--font);color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;font-size:16px;line-height:1.5}img,svg{max-width:100%;display:block}button,input,select,textarea{font:inherit;color:inherit}[hidden]{display:none!important}h1,h2,h3{letter-spacing:-.02em;line-height:1.2}h1{font-size:clamp(24px,4vw,32px);font-weight:700}h2{font-size:clamp(19px,3vw,22px);font-weight:700}h3{font-size:17px;font-weight:500}a{color:var(--blue)}:focus-visible{outline:3px solid var(--blue);outline-offset:2px}.visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.page{max-width:1180px;padding:24px max(16px, env(safe-area-inset-right)) 64px max(16px, env(safe-area-inset-left));flex-direction:column;gap:24px;margin:0 auto;display:flex}.page--narrow{max-width:560px}.page__head{border-bottom:3px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:12px 24px;padding-bottom:12px;display:flex}.page__title{flex-direction:column;gap:4px;display:flex}.page__title p{color:var(--muted);font-size:15px}.page__actions{flex-wrap:wrap;gap:8px;display:flex}.stack{flex-direction:column;gap:16px;display:flex}.stack--sm{gap:8px}.row{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.grow{flex:auto;min-width:0}.appbar{background:var(--card);border-bottom:3px solid var(--line);z-index:20;position:sticky;top:0}.appbar__inner{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;max-width:1180px;margin:0 auto;padding:10px 16px;display:flex}.brand{letter-spacing:-.5px;color:var(--text);align-items:center;gap:10px;font-size:22px;font-weight:700;text-decoration:none;display:flex}.brand img{object-fit:contain;width:32px;height:32px}.brand b{color:var(--blue)}.nav{flex-wrap:wrap;align-items:center;gap:4px 18px;display:flex}.nav a{color:var(--text);border-bottom:3px solid #0000;padding:8px 0;font-weight:500;text-decoration:none}.nav a:hover,.nav a[aria-current=page]{color:var(--blue);border-bottom-color:var(--blue)}.card{background:var(--card);border:3px solid var(--line);box-shadow:var(--shadow);flex-direction:column;display:flex}.card__head{border-bottom:3px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:14px 18px;display:flex}.card__body{flex-direction:column;gap:16px;padding:18px;display:flex}.card__foot{border-top:2px solid var(--line-soft);padding:14px 18px}.grid-cards{grid-template-columns:repeat(auto-fill,minmax(min(100%,280px),1fr));gap:20px;display:grid}.classcard{color:inherit;text-decoration:none;transition:transform 80ms}.classcard:hover{box-shadow:6px 6px 0 var(--blue);transform:translate(-2px,-2px)}.classcard__stripe{border-bottom:3px solid var(--line);height:10px}.classcard__meta{color:var(--muted);font-size:14px}.btn{background:var(--card);min-height:44px;color:var(--text);border:2px solid var(--line);border-radius:var(--radius);cursor:pointer;justify-content:center;align-items:center;gap:8px;padding:8px 18px;font-size:16px;font-weight:500;text-decoration:none;transition:transform 60ms,background .12s;display:inline-flex}.btn:hover:not(:disabled){background:var(--bg)}.btn:active:not(:disabled){transform:translate(1px,1px)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn--primary{background:var(--blue);border-color:var(--line);color:#fff;box-shadow:var(--shadow-dark)}.btn--primary:hover:not(:disabled){background:var(--blue-dark)}.btn--ghost{border-color:var(--line-soft)}.btn--ghost:hover:not(:disabled){border-color:var(--line)}.btn--danger{background:var(--bad-bg);border-color:var(--bad);color:var(--bad)}.btn--danger:hover:not(:disabled){background:var(--bad);color:#fff}.btn--sm{min-height:36px;padding:4px 12px;font-size:14px}.btn--block{width:100%}.field{flex-direction:column;gap:6px;display:flex}.field__label{font-size:15px;font-weight:500}.field__hint{color:var(--muted);font-size:13px}.field__error{color:var(--bad);font-size:14px;font-weight:500}.input,.select,.textarea{background:var(--card);border:2px solid var(--line);border-radius:var(--radius);width:100%;min-height:44px;padding:10px 12px}.textarea{resize:vertical;min-height:140px;font-family:var(--font);line-height:1.5}.input:focus,.select:focus,.textarea:focus{outline:3px solid var(--blue);outline-offset:1px}.input[aria-invalid=true],.textarea[aria-invalid=true]{border-color:var(--bad)}.input::placeholder,.textarea::placeholder{color:#9ca3af}.check{cursor:pointer;align-items:flex-start;gap:10px;font-size:15px;display:flex}.check input{width:20px;height:20px;accent-color:var(--blue);flex:none;margin-top:2px}.form-error{background:var(--bad-bg);border:2px solid var(--bad);color:var(--bad);padding:12px 14px;font-weight:500}.table{border-collapse:collapse;width:100%;font-size:15px}.table th,.table td{text-align:left;border-bottom:2px solid var(--line-soft);padding:10px 12px}.table th{background:var(--card-2);border-bottom-color:var(--line);font-weight:700}.table tr:last-child td{border-bottom:none}.table__actions{justify-content:flex-end;gap:6px;display:flex}.table-wrap{overflow-x:auto}.badge{border:2px solid var(--line);text-transform:uppercase;letter-spacing:.04em;align-items:center;gap:4px;padding:2px 8px;font-size:12px;font-weight:700;display:inline-flex}.badge--ok{background:var(--ok-bg);color:var(--ok);border-color:var(--ok)}.badge--warn{background:var(--warn-bg);color:var(--warn);border-color:var(--warn)}.badge--bad{background:var(--bad-bg);color:var(--bad);border-color:var(--bad)}.badge--info{background:var(--blue-soft);color:var(--blue);border-color:var(--blue)}.notice{border:3px solid var(--line);background:var(--card);flex-direction:column;gap:8px;padding:14px 16px;display:flex}.notice--ok{background:var(--ok-bg);border-color:var(--ok)}.notice--warn{background:var(--warn-bg);border-color:var(--warn)}.notice--bad{background:var(--bad-bg);border-color:var(--bad)}.notice--info{background:var(--blue-soft);border-color:var(--blue)}.notice__title{font-weight:700}.notice ul{flex-direction:column;gap:4px;margin:0;padding-left:20px;display:flex}.empty{text-align:center;border:3px dashed var(--line-soft);background:var(--card);flex-direction:column;align-items:center;gap:12px;padding:48px 24px;display:flex}.empty__title{font-size:19px;font-weight:700}.empty__text{color:var(--muted);max-width:48ch}.modal{z-index:50;background:#1118278c;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.modal__box{background:var(--card);border:3px solid var(--line);width:min(560px,100%);max-height:min(88vh,720px);box-shadow:var(--shadow);flex-direction:column;display:flex}.modal__head{border-bottom:3px solid var(--line);justify-content:space-between;align-items:center;gap:12px;padding:16px 18px;display:flex}.modal__body{flex-direction:column;gap:16px;padding:18px;display:flex;overflow-y:auto}.modal__foot{border-top:2px solid var(--line-soft);flex-wrap:wrap;justify-content:flex-end;gap:10px;padding:14px 18px;display:flex}.toasts{z-index:60;flex-direction:column;gap:8px;max-width:min(420px,100vw - 32px);display:flex;position:fixed;bottom:16px;right:16px}.toast{background:var(--card);border:3px solid var(--line);box-shadow:var(--shadow-dark);align-items:flex-start;gap:12px;padding:12px 14px;font-size:15px;display:flex}.toast--ok{background:var(--ok-bg);border-color:var(--ok)}.toast--error{background:var(--bad-bg);border-color:var(--bad)}.toast--info{background:var(--blue-soft);border-color:var(--blue)}.toast__close{cursor:pointer;background:0 0;border:none;flex:none;width:28px;height:28px;margin:-4px -4px -4px 0;font-size:22px;line-height:1}.spinner{flex-direction:column;align-items:center;gap:12px;padding:64px 16px;display:flex}.spinner__dot{border:4px solid var(--line-soft);border-top-color:var(--blue);border-radius:50%;width:36px;height:36px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.seatgrid{flex-direction:column;gap:14px;display:flex}.seatgrid__scroll{padding-bottom:4px;overflow-x:auto}.seatgrid__grid{gap:8px;display:grid}.seatgrid__deskrow{width:100%;display:flex}.seatgrid__hint{background:var(--blue-soft);border:2px solid var(--blue);padding:10px 12px;font-size:14px;font-weight:500}.teacherdesk{background:var(--text);color:#fff;border:3px solid var(--line);box-shadow:var(--shadow-dark);letter-spacing:.06em;text-transform:uppercase;padding:10px 28px;font-size:14px;font-weight:700}.seat__wrap{position:relative}.seat{background:var(--card);border:3px solid var(--line);border-radius:var(--radius);cursor:pointer;text-align:center;overflow-wrap:anywhere;flex-direction:column;justify-content:center;align-items:center;gap:4px;width:100%;min-height:72px;padding:8px 6px;transition:transform 60ms;display:flex}.seat:active:not(:disabled){transform:translate(1px,1px)}.seat--taken{background:var(--blue-soft);box-shadow:var(--shadow-dark);font-weight:500}.seat--free{border-style:dashed;border-color:var(--line-soft);color:var(--muted)}.seat--nodesk{cursor:default;box-shadow:none;background:0 0;border:none}.seat--locked{border-color:var(--blue);box-shadow:inset 0 0 0 2px var(--blue)}.seat--problem{border-color:var(--bad);box-shadow:0 0 0 3px var(--bad-bg), var(--shadow-dark)}.seat--held{outline:4px dashed var(--blue);outline-offset:2px}.seat__name{font-size:15px;line-height:1.25}.seat__free{font-size:13px}.seat__nodesk{color:var(--line-soft);font-size:22px}.seat__tag{letter-spacing:.05em;text-transform:uppercase;border:1px solid var(--line);padding:1px 5px;font-size:10px;font-weight:700}.seat__tag--front{background:var(--blue-soft)}.seat__tag--back{background:var(--warn-bg)}.seat__lock{background:var(--card);border:2px solid var(--line);cursor:pointer;border-radius:50%;justify-content:center;align-items:center;width:30px;height:30px;font-size:13px;line-height:1;display:flex;position:absolute;top:-8px;right:-8px}.seat__lock.is-locked{background:var(--blue)}@media (width<=640px){:root{--seat-min:68px}.seat{min-height:62px}.seat__name{font-size:13px}.page{padding-top:16px}}@media print{@page{size:A4 landscape;margin:10mm}:root{--seat-min:0}html,body{font-size:12pt;background:#fff!important}.appbar,.nav,.toasts,.page__actions,.seat__lock,.seatgrid__hint,.no-print{display:none!important}.page{gap:6mm;max-width:none;padding:0}.page__head{border-bottom:2pt solid #000;padding-bottom:3mm}.card,.card__body{gap:4mm;box-shadow:none!important;border:none!important;padding:0!important}.seatgrid{gap:5mm}.seatgrid__scroll{overflow:visible!important}.seatgrid__grid{gap:3mm;min-width:0!important}.seat{break-inside:avoid;page-break-inside:avoid;min-height:18mm;padding:2mm 1mm;box-shadow:none!important;border:1.5pt solid #000!important}.seat--taken{font-weight:500;background:#e8eefa!important}.seat--free{background:#fff!important;border-style:dashed!important}.seat--nodesk{visibility:hidden;background:0 0!important;border:none!important}.seat--problem{background:#fff4f4!important;border:2.5pt solid #000!important}.seat__name{font-size:11pt}.seat__tag{font-size:7pt;border-color:#000!important}.teacherdesk{padding:2mm 10mm;font-size:10pt;color:#fff!important;box-shadow:none!important;background:#111!important;border:1.5pt solid #000!important}*{-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important}.print-footer{text-align:center;color:#333;border-top:1pt solid #000;margin-top:4mm;padding-top:2mm;font-size:9pt;display:block!important}a[href]:after{content:none!important}}.print-footer{display:none}
