:root{--bg:#12141a;--bg-2:#1a1d25;--panel:#1e222c;--line:#2c3140;--text:#e8e4dc;--muted:#8b8478;--accent:#c4a574;--accent-2:#8fbfb0;--danger:#c45c4a;--ok:#7aab7a;--focus:#d9c4a0;--shadow:0 12px 40px rgba(0,0,0,.35);--font:"Segoe UI","Helvetica Neue",Arial,sans-serif;--serif:Georgia,"Times New Roman",serif}*{box-sizing:border-box}body,html{margin:0;height:100%}body{font-family:var(--font);background:var(--bg);color:var(--text);font-size:14px;line-height:1.45}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}h1,h2,h3{font-family:var(--serif);font-weight:600;letter-spacing:.01em}.app{min-height:100%;display:grid;grid-template-columns:220px 1fr}.app:has(.viewer-wrap){height:100dvh;overflow:hidden}@media (max-width:860px){.app{grid-template-columns:1fr}.nav{position:-webkit-sticky;position:sticky;top:0;z-index:20;flex-direction:row;flex-wrap:wrap}}.nav{background:var(--bg-2);border-right:1px solid var(--line);padding:22px 14px;flex-direction:column;gap:6px}.brand,.nav{display:flex}.brand{font-family:var(--serif);font-size:18px;padding:0 8px 18px;align-items:center;gap:10px}.brand-logo{width:36px;height:36px;flex:0 0 auto}.brand small{display:block;color:var(--muted);font-family:var(--font);font-size:11px;margin-top:4px}.nav a,.nav button.link{display:block;width:100%;text-align:left;background:none;border:0;padding:8px 10px;border-radius:6px;color:var(--muted)}.nav a.active,.nav a:hover{background:var(--panel);color:var(--text)}.nav .spacer{flex:1 1}.nav-foot{padding:10px 10px 0;font-size:11px;color:var(--muted);letter-spacing:.04em}.main{padding:22px 28px 48px;min-width:0}.main:has(.viewer-wrap){display:flex;flex-direction:column;height:100dvh;overflow:hidden;padding-bottom:16px}.main:has(.viewer-wrap) .top{flex:0 0 auto;margin-bottom:10px}.top{display:flex;justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:18px;flex-wrap:wrap}.muted{color:var(--muted)}.row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.grid-2{display:grid;grid-template-columns:1fr 1fr;grid-gap:14px;gap:14px}@media (max-width:900px){.grid-2{grid-template-columns:1fr}}.card{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:16px}.list-item{padding:10px 12px;border-radius:8px;border:1px solid transparent;cursor:pointer}.list-item:hover{background:var(--bg-2)}.list-item.active{border-color:var(--accent);background:#262018}input,select,textarea{background:var(--bg);border:1px solid var(--line);border-radius:6px;padding:8px 10px;width:100%}label{display:block;font-size:12px;color:var(--muted);margin:8px 0 4px}.btn{background:var(--bg-2);border:1px solid var(--line);border-radius:6px;padding:8px 12px}.btn.primary,.btn:hover{border-color:var(--accent)}.btn.primary{background:#3a3226;color:var(--accent)}.btn.danger{border-color:var(--danger);color:#e8b4aa}.btn:disabled{opacity:.4;cursor:default}.table{width:100%;border-collapse:collapse;font-size:13px}.table th{text-align:left;color:var(--muted);font-weight:500}.table td,.table th{padding:8px;border-bottom:1px solid var(--line)}.table tbody tr.row-link{cursor:pointer}.table tbody tr.row-link:hover{background:var(--bg-2)}.table tbody tr.row-link:focus{outline:1px solid var(--accent);outline-offset:-1px}.badge{font-size:11px;padding:2px 7px;border-radius:99px;border:1px solid var(--line);color:var(--muted)}.badge.warn{border-color:var(--accent);color:var(--accent)}.auth{min-height:100%;display:grid;place-items:center;padding:24px}.auth .card{width:min(420px,100%);box-shadow:var(--shadow)}.auth-brand{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:8px}.auth-logo{width:56px;height:56px}.auth-mascot{width:72px;height:auto;opacity:.95}.auth-foot{margin:18px 0 0;text-align:center;color:var(--muted);font-size:12px;letter-spacing:.06em}.toast{position:fixed;right:16px;bottom:16px;background:#2a241c;border:1px solid var(--accent);padding:10px 14px;border-radius:8px;z-index:50}.modal-back{position:fixed;inset:0;background:rgba(0,0,0,.55);display:grid;place-items:center;z-index:40;padding:16px}.modal{width:min(720px,100%);max-height:90vh;overflow:auto}.viewer-wrap{display:grid;grid-template-columns:minmax(0,1fr) minmax(180px,240px);grid-gap:12px;gap:12px;flex:1 1;min-height:0}@media (max-width:980px){.main:has(.viewer-wrap){height:auto;overflow:auto}.viewer-wrap{grid-template-columns:1fr;height:auto}}.pager{margin-top:12px}.viewer-col{min-width:0;min-height:0;display:flex;flex-direction:column;gap:8px;height:100%}.filmstrip{display:flex;gap:8px;flex-wrap:wrap;flex:0 0 auto}.film-item{display:flex;align-items:center;gap:6px;background:var(--bg-2);border:1px solid var(--line);border-radius:6px;padding:4px 8px;font-size:12px}.film-item.active,.film-item.active button{border-color:var(--accent);color:var(--accent)}.film-item button{background:none;border:0;padding:0}.viewer-stage{min-width:0;min-height:0;display:flex;flex-direction:column;gap:8px;height:100%}.canvas-box{background:#000;flex:1 1;min-height:240px;border-radius:8px;position:relative;overflow:hidden;display:flex;align-items:center;justify-content:center}.canvas-box canvas{max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain;display:block}.img-spinner{width:22px;height:22px;border:2px solid #3f3f3f;border-top-color:#9a9a9a;border-radius:50%;animation:img-spin .65s linear infinite;flex:0 0 auto}.img-spinner-overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;pointer-events:none;z-index:2}@keyframes img-spin{to{transform:rotate(1turn)}}.viewer-tools{display:flex;gap:8px;flex-wrap:wrap;align-items:center;flex:0 0 auto}.viewer-tools input[type=range]{width:120px}.viewer-tools label{margin:0}.meta-panel{min-width:0;max-height:100%;overflow:auto}.meta-row{display:grid;grid-template-columns:86px minmax(0,1fr);grid-gap:8px;gap:8px;padding:6px 0;border-bottom:1px dashed var(--line);font-size:12px}.meta-row span:first-child{color:var(--muted)}.meta-row span:last-child{color:var(--text);text-align:right;min-width:0;overflow-wrap:anywhere;word-break:break-word}.public-exam{max-width:1280px;margin:0 auto;padding:18px 20px 48px}.public-exam:has(.viewer-wrap){max-width:none;height:100dvh;display:flex;flex-direction:column;overflow:hidden;padding-bottom:16px}.public-exam:has(.viewer-wrap) .viewer-wrap{flex:1 1}.public-head{display:flex;gap:14px;align-items:center;margin-bottom:16px}.app:has(.print-studio){height:auto!important;overflow:auto!important}.app:has(.print-studio) .main{overflow:visible!important;height:auto!important}.print-studio{position:fixed;inset:0;z-index:80;background:rgba(8,9,12,.72);overflow:auto;padding:16px 16px 40px}.print-studio-bar{position:-webkit-sticky;position:sticky;top:0;z-index:2;display:flex;flex-wrap:wrap;gap:12px 18px;align-items:center;background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:12px 14px;margin:0 auto 16px;max-width:900px}.print-studio-bar label{margin:0;display:flex;align-items:center;gap:8px;font-size:13px}.print-studio-bar input[type=range]{width:120px}.print-a4{width:210mm;min-height:297mm;background:#fff;color:#111;margin:0 auto 18px;padding:12mm 12mm 18mm;box-shadow:0 8px 28px rgba(0,0,0,.35);display:flex;flex-direction:column;page-break-after:always;break-after:page}.print-a4:last-child{page-break-after:auto;break-after:auto}.print-a4-head{border-bottom:1px solid #ccc;padding-bottom:8px;margin-bottom:10px;font-size:12px;line-height:1.4}.print-a4-head strong{display:block;font-size:16px;font-family:var(--serif);margin-bottom:4px}.print-a4-body{flex:1 1;min-height:0;display:flex;align-items:center;justify-content:center}.print-a4-body img{max-width:100%;max-height:230mm;object-fit:contain}.print-a4-foot{border-top:1px solid #ccc;padding-top:8px;margin-top:10px;font-size:11px;color:#444;display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap}.qr-sheet{text-align:center}.qr-sheet .print-a4-body{flex-direction:column}.qr-sheet img.qr{width:58mm;height:58mm;margin:12px auto}.qr-sheet .qr-url{font-size:11px;word-break:break-all;margin:8px 0 0}@media print{@page{size:A4;margin:12mm 12mm 16mm}.nav,.no-print{display:none!important}.app{display:block;height:auto!important;overflow:visible!important}.main{padding:0!important}body{background:#fff;color:#000}.print-studio{position:static;background:none;overflow:visible;padding:0}.print-a4{box-shadow:none;margin:0;width:auto;min-height:auto;height:277mm;padding:0}}