:root{--primary: #0066cc;--primary-dark: #004d99;--success: #008758;--danger: #d9364f;--warning: #a66300;--ink: #17324d;--muted: #5b6f82;--line: #d4e0ec;--bg: #f2f7fc;--surface: #ffffff;--radius: 6px;--mono: ui-monospace, "Cascadia Code", "Roboto Mono", Consolas, monospace}*{box-sizing:border-box}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Titillium Web,Roboto,sans-serif;color:var(--ink);background:var(--bg);line-height:1.5}.app-header{display:flex;align-items:center;gap:24px;padding:14px 24px;background:var(--primary);color:#fff}.app-header .brand{font-weight:700;font-size:18px;letter-spacing:.3px}.app-header nav{display:flex;gap:6px}.app-header nav a{color:#fff;text-decoration:none;padding:6px 12px;border-radius:var(--radius);opacity:.85;font-size:14px}.app-header nav a:hover{opacity:1;background:#ffffff24}.app-header nav a.active{opacity:1;background:#ffffff38;font-weight:600}.app-header .spacer{flex:1}main{max-width:720px;margin:0 auto;padding:28px 20px 64px}h1{font-size:24px;margin:0 0 4px}h2{font-size:18px;margin:0 0 12px}.subtitle{color:var(--muted);margin:0 0 24px}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:18px 20px;margin-bottom:14px}.card.active{border-color:var(--primary);box-shadow:0 0 0 1px var(--primary)}.card-title{font-weight:600;font-size:16px;display:flex;align-items:center;gap:10px}.card-line{color:var(--muted);font-size:13.5px}.card-line .mono{font-family:var(--mono);color:var(--ink)}.card-actions{display:flex;gap:8px;margin-top:14px;flex-wrap:wrap}.badge{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;color:var(--success);background:#e5f4ee;border-radius:100px;padding:2px 10px}label{display:block;font-size:13px;font-weight:600;margin:14px 0 5px}input{width:100%;padding:10px 12px;font-size:15px;border:1px solid var(--line);border-radius:var(--radius);background:#fff;color:var(--ink)}input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px #0066cc26}.hint{font-size:12.5px;color:var(--muted);margin-top:4px}button{font-size:15px;font-weight:600;padding:10px 18px;border-radius:var(--radius);border:1px solid transparent;cursor:pointer;background:var(--primary);color:#fff}button:hover{background:var(--primary-dark)}button:disabled{opacity:.5;cursor:not-allowed}button.secondary{background:#fff;color:var(--primary);border-color:var(--primary)}button.secondary:hover{background:#eef5fd}button.ghost{background:transparent;color:var(--muted);border-color:var(--line)}button.ghost:hover{background:#eef2f7;color:var(--ink)}button.danger{background:#fff;color:var(--danger);border-color:var(--danger)}button.danger:hover{background:#fdecef}.row{display:flex;gap:10px;align-items:center;margin-top:18px;flex-wrap:wrap}.alert{border-radius:var(--radius);padding:12px 14px;margin:16px 0;font-size:14px}.alert.error{background:#fdecef;color:#8f1d2f;border:1px solid #f3b5c0}.alert.success{background:#e5f4ee;color:#0a5c40;border:1px solid #a8dcc7}.alert.info{background:#e9f2fb;color:var(--primary-dark);border:1px solid #b9d6f2}.centered{min-height:100vh;display:grid;place-items:center;padding:20px}.panel{width:100%;max-width:400px;background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:32px}.panel .logo{font-size:22px;font-weight:800;color:var(--primary);margin-bottom:4px}.empty{text-align:center;color:var(--muted);padding:40px 20px}.spin{color:var(--muted)}
