:root{--brand:#0874c6;--brand-dark:#065a9a;--brand-soft:#e7f3fb;--brand-mid:#b7d9f0;--ink:#15202b;--muted:#5b6b7a;--panel:#fff;--danger:#8b2e1f;--danger-soft:#f8e2de;color:var(--ink);background:radial-gradient(circle at top left, var(--brand-mid) 0%, transparent 42%), linear-gradient(160deg, #f3f8fc 0%, #eaf3fa 45%, #f7fafc 100%);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;font-family:IBM Plex Sans,Segoe UI,sans-serif;line-height:1.45}*{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}a{color:inherit}.app-shell{grid-template-columns:240px 1fr;min-height:100vh;display:grid}.sidebar{background:var(--brand);color:#f5faff;flex-direction:column;gap:1rem;padding:1.5rem 1rem;display:flex}.sidebar a{color:#f5faffe0;border-radius:.5rem;padding:.55rem .75rem;text-decoration:none;display:block}.sidebar a.active,.sidebar a:hover{color:#fff;background:#ffffff24}.sidebar-foot{gap:.5rem;margin-top:auto;display:grid}.brand{letter-spacing:-.02em;margin:0;font-family:Fraunces,Georgia,serif;font-size:1.4rem}.main{padding:2rem}.stack{gap:1rem;display:grid}.row{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}.split{grid-template-columns:240px 1fr;gap:1rem;display:grid}.page-header h1{margin:.25rem 0;font-family:Fraunces,Georgia,serif;font-size:2rem}.card,.tool-card,.login-card{background:#ffffffeb;border:1px solid #0874c61f;border-radius:1rem;padding:1.1rem;box-shadow:0 10px 30px #0874c60f}.card-grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:1rem;display:grid}.tool-card{text-decoration:none;transition:transform .16s,box-shadow .16s}.tool-card:hover{transform:translateY(-2px);box-shadow:0 16px 36px #0874c61f}.tool-card h2{margin:0 0 .5rem;font-size:1.15rem}.pill{background:var(--brand-soft);color:var(--brand-dark);border-radius:999px;margin-top:.75rem;padding:.15rem .55rem;font-size:.8rem;display:inline-block}label{gap:.35rem;font-weight:560;display:grid}input,select,textarea,.richtext-editor{width:100%;font:inherit;background:#fff;border:1px solid #0874c638;border-radius:.65rem;padding:.65rem .75rem}input:focus,select:focus,textarea:focus,.richtext-editor:focus{outline-offset:1px;outline:2px solid #0874c647}.checkbox{flex-wrap:wrap;align-items:center;gap:.5rem;font-weight:500;display:flex}.checkbox input{width:auto}.btn{background:var(--brand);color:#f5faff;font:inherit;cursor:pointer;border:0;border-radius:.7rem;padding:.65rem 1rem}.btn:hover{background:var(--brand-dark)}.btn.ghost{color:inherit;background:0 0;border:1px solid #0874c638}.sidebar .btn.ghost{color:#f5faff;border-color:#ffffff47}.btn.danger{background:var(--danger)}.muted{color:var(--muted);font-size:.92rem;font-weight:450}.flash{background:var(--brand-soft);color:var(--brand-dark);border-radius:.7rem;padding:.75rem .9rem}.flash.error{background:var(--danger-soft);color:#6d2418}.list{gap:.35rem;margin:0;padding:0;list-style:none;display:grid}.list-item{text-align:left;cursor:pointer;width:100%;font:inherit;background:0 0;border:0;border-radius:.55rem;padding:.55rem .65rem}.list-item.active,.list-item:hover{background:var(--brand-soft);color:var(--brand-dark)}.richtext{border:1px solid #0874c638;border-radius:.75rem;overflow:hidden}.richtext-toolbar{background:var(--brand-soft);border-bottom:1px solid #0874c61f;gap:.35rem;padding:.4rem;display:flex}.richtext-toolbar button{cursor:pointer;background:#fff;border:0;border-radius:.4rem;padding:.35rem .55rem}.richtext-editor{border:0;border-radius:0;min-height:220px}.richtext-editor:empty:before{content:attr(data-placeholder);color:#8a9aaa}.login-shell{place-items:center;min-height:100vh;padding:1.5rem;display:grid}.login-card{gap:.9rem;width:min(420px,100%);display:grid}.login-card h1{margin:0;font-family:Fraunces,Georgia,serif}.login-card .brand{color:var(--brand)}.logs{color:#44566a;gap:.25rem;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.82rem;display:grid}.account-row{border-top:1px solid #0874c61f;justify-content:space-between;padding-top:.75rem}@media (width<=860px){.app-shell{grid-template-columns:1fr}.sidebar{z-index:5;position:sticky;top:0}.split{grid-template-columns:1fr}.main{padding:1rem}}
