:root{--ink: #102033;--ink-soft: #3d5166;--paper: #f4efe6;--paper-2: #fffdf9;--line: #d8d0c4;--teal: #0f766e;--teal-dark: #115e59;--navy: #0c1c2c;--danger: #9b2c2c;--warn: #9a6700;--ok: #276749;--shadow: 0 10px 30px rgba(16, 32, 51, .08);font-family:IBM Plex Sans,sans-serif;color:var(--ink);background:var(--paper)}*{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}body{background:radial-gradient(1200px 500px at 10% -10%,#dce8e4 0%,transparent 50%),var(--paper)}a{color:var(--teal-dark)}button,input,select,textarea{font:inherit}.auth-wrap{min-height:100vh;display:grid;place-items:center;padding:32px 16px 48px;background:#05070b}.auth-card{width:min(440px,100%);background:#000;border:1px solid #1c2430;box-shadow:0 18px 50px #00000073;padding:28px 32px;color:#e8eef4}.auth-card label{color:#c5d0da}.auth-card .muted,.auth-card .brand-sub{color:#9fb0bf}.auth-card a{color:#5eead4}.auth-card input,.auth-card select,.auth-card textarea{background:#0c1218;border-color:#2a3644;color:#e8eef4}.brand-logo-auth{display:block;width:min(360px,100%);height:auto;margin:0 auto 18px}.brand-logo-header{display:block;height:40px;width:auto}.brand-mark{font-family:"IBM Plex Serif",serif;font-size:22px;letter-spacing:-.03em;margin:0 0 4px}.brand-sub{margin:0 0 22px;color:var(--ink-soft);font-size:14px;text-align:center}label{display:block;font-size:13px;font-weight:500;margin:0 0 6px}input,select,textarea{width:100%;padding:10px 12px;border:1px solid var(--line);background:#fff;color:var(--ink);margin-bottom:14px}textarea{min-height:90px;resize:vertical}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;background:var(--navy);color:#f4efe6;padding:10px 16px;cursor:pointer;text-decoration:none}.btn:hover{background:#16324a}.btn.secondary{background:transparent;color:var(--ink);border:1px solid var(--line)}.btn.danger{background:var(--danger);color:#fff}.btn.small{padding:6px 10px;font-size:13px}.btn-row{display:flex;gap:8px;flex-wrap:wrap}.error{color:var(--danger);font-size:13px;margin:0 0 12px}.muted{color:var(--ink-soft);font-size:13px}.qr{display:block;width:196px;height:196px;margin:0 auto 16px;background:#fff;border:1px solid var(--line);padding:8px}.app-shell{min-height:100vh;display:flex;flex-direction:column}.topbar{background:#000;color:#f4efe6;display:flex;align-items:center;gap:16px;padding:0 20px;height:64px}.topbar .logo{display:flex;align-items:center;text-decoration:none;margin-right:4px;flex-shrink:0}.portal-tag{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:#7dd3c7;border:1px solid #245c56;padding:3px 8px}.nav{display:flex;gap:4px;flex:1}.nav a{color:#c9d3dc;text-decoration:none;padding:8px 10px;font-size:14px}.nav a.active,.nav a:hover{color:#fff}.header-right{display:flex;align-items:center;gap:12px}.did-select{width:auto;margin:0;background:#16324a;color:#fff;border-color:#2a4a66}.user-chip{position:relative;text-align:right;cursor:pointer}.user-chip strong{display:block;font-size:13px}.user-chip span{display:block;font-size:11px;color:#9fb0bf}.user-menu{position:absolute;right:0;top:42px;background:#fff;color:var(--ink);border:1px solid var(--line);min-width:200px;box-shadow:var(--shadow);z-index:20}.user-menu button,.user-menu a{display:block;width:100%;text-align:left;background:none;border:0;padding:10px 14px;cursor:pointer;color:inherit;text-decoration:none}.user-menu button:hover,.user-menu a:hover{background:var(--paper)}.page{flex:1;width:min(1180px,calc(100% - 32px));margin:24px auto}.page h1{font-family:"IBM Plex Serif",serif;font-size:28px;margin:0 0 6px}.page-lead{margin:0 0 20px;color:var(--ink-soft)}.search-bar{display:flex;flex-wrap:wrap;align-items:flex-end;gap:12px}.search-bar>div{flex:1;min-width:140px}.search-bar input{margin-bottom:0}.search-actions{display:flex;gap:8px;flex:0 0 auto;min-width:auto}.card{background:var(--paper-2);border:1px solid var(--line);padding:18px;margin-bottom:16px}table{width:100%;border-collapse:collapse;font-size:14px}th,td{text-align:left;padding:10px 8px;border-bottom:1px solid var(--line);vertical-align:middle}th{font-size:12px;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-soft)}.badge{display:inline-block;padding:2px 8px;font-size:12px;border:1px solid var(--line);background:#fff}.badge.ok{color:var(--ok);border-color:#9ae6b4}.badge.warn{color:var(--warn)}.badge.bad{color:var(--danger)}.footer{border-top:1px solid var(--line);padding:16px;text-align:center;color:var(--ink-soft);font-size:12px}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:16px}.preview-frame{width:100%;min-height:70vh;border:1px solid var(--line);background:#fff}.cover-preview{background:#fff;border:1px solid var(--line);padding:28px;min-height:360px;font-family:Times New Roman,serif}.cover-preview h2{margin:0 0 8px}.modal-back{position:fixed;top:0;right:0;bottom:0;left:0;background:#0c1c2c73;display:grid;place-items:center;padding:20px;z-index:30}.modal{width:min(960px,100%);background:var(--paper-2);border:1px solid var(--line);padding:16px;max-height:92vh;overflow:auto}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 16px}@media(max-width:800px){.grid-2,.form-grid{grid-template-columns:1fr}.nav{display:none}}
