:root{--bg: #ffffff;--bg-elev: #f8fafc;--bg-elev-2: #f1f5f9;--fg: #0f172a;--fg-muted: #475569;--fg-faded: #94a3b8;--border: #e2e8f0;--border-strong: #cbd5e1;--accent: #2563eb;--accent-fg: #ffffff;--accent-soft: #dbeafe;--danger: #b91c1c;--danger-bg: #fee2e2;--ok: #166534;--ok-bg: #dcfce7;--shadow: 0 1px 2px rgba(0, 0, 0, .04), 0 4px 16px rgba(0, 0, 0, .04);--radius: 10px;--radius-sm: 6px;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 24px;--space-6: 32px;--header-h: 56px;--sidebar-w: 220px;--footer-h: 40px;color-scheme:light}[data-theme=dark]{--bg: #0f172a;--bg-elev: #1e293b;--bg-elev-2: #334155;--fg: #f1f5f9;--fg-muted: #cbd5e1;--fg-faded: #94a3b8;--border: #334155;--border-strong: #475569;--accent: #60a5fa;--accent-fg: #0f172a;--accent-soft: #1e3a8a;--danger: #fca5a5;--danger-bg: #7f1d1d;--ok: #86efac;--ok-bg: #14532d;--shadow: 0 1px 2px rgba(0, 0, 0, .4), 0 4px 16px rgba(0, 0, 0, .3);color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--fg);line-height:1.55;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}h1,h2,h3,h4{margin:0 0 var(--space-3);line-height:1.25;font-weight:600}h1{font-size:1.5rem}h2{font-size:1.25rem}h3{font-size:1.05rem}p{margin:0 0 var(--space-3)}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}.muted{color:var(--fg-muted)}.splash{display:grid;place-items:center;height:100vh;color:var(--fg-muted)}.btn,button.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);border-radius:var(--radius-sm);border:1px solid var(--border-strong);background:var(--bg-elev);color:var(--fg);font:inherit;cursor:pointer;transition:background .12s,border-color .12s;text-decoration:none}.btn:hover{background:var(--bg-elev-2)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--accent);color:var(--accent-fg);border-color:var(--accent)}.btn-primary:hover{filter:brightness(1.05)}.btn-danger{border-color:var(--danger);color:var(--danger)}.btn-danger:hover{background:var(--danger-bg)}.icon-btn{width:36px;height:36px;display:inline-flex;align-items:center;justify-content:center;background:transparent;border:1px solid transparent;border-radius:var(--radius-sm);color:var(--fg);cursor:pointer;font-size:1.1rem;font:inherit}.icon-btn:hover{background:var(--bg-elev);border-color:var(--border)}.link{background:none;border:0;padding:0;color:var(--accent);cursor:pointer;font:inherit}label{display:flex;flex-direction:column;gap:var(--space-1);font-size:.875rem;color:var(--fg-muted)}input[type=text],input[type=email],input[type=password],input[type=number],textarea{font:inherit;padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);border:1px solid var(--border-strong);background:var(--bg);color:var(--fg);width:100%}input:focus,textarea:focus{outline:2px solid var(--accent);outline-offset:1px}.alert{padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);font-size:.9rem}.alert-error{background:var(--danger-bg);color:var(--danger);border:1px solid var(--danger)}.alert-ok{background:var(--ok-bg);color:var(--ok);border:1px solid var(--ok)}.auth-shell{min-height:100vh;display:grid;place-items:center;padding:var(--space-5);background:var(--bg)}.auth-card{background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius);padding:var(--space-6);display:flex;flex-direction:column;gap:var(--space-4);width:100%;max-width:380px;box-shadow:var(--shadow)}.auth-card h1{margin-bottom:0}.qr-wrap{display:flex;flex-direction:column;align-items:center;gap:var(--space-2)}.qr-wrap img{background:#fff;padding:8px;border-radius:var(--radius-sm)}.qr-wrap code{font-size:.85rem;word-break:break-all;background:var(--bg-elev-2);padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm)}.app-shell{display:grid;grid-template-columns:var(--sidebar-w) 1fr;grid-template-rows:var(--header-h) 1fr var(--footer-h);grid-template-areas:"header header" "sidebar main" "footer footer";min-height:100vh}.app-header{grid-area:header;display:flex;align-items:center;gap:var(--space-3);padding:0 var(--space-4);border-bottom:1px solid var(--border);background:var(--bg-elev);position:sticky;top:0;z-index:10}.app-title{font-size:1.05rem;margin:0;flex:1}.header-actions{display:flex;align-items:center;gap:var(--space-2)}.sidebar-toggle{display:none}.sidebar{grid-area:sidebar;background:var(--bg-elev);border-right:1px solid var(--border);padding:var(--space-3)}.nav{display:flex;flex-direction:column;gap:var(--space-1)}.nav-link{display:block;padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);color:var(--fg);text-decoration:none;font-size:.95rem}.nav-link:hover{background:var(--bg-elev-2);text-decoration:none}.nav-link.active{background:var(--accent-soft);color:var(--accent);font-weight:500}.main{grid-area:main;padding:var(--space-5);overflow-y:auto}.app-footer{grid-area:footer;display:flex;align-items:center;justify-content:center;gap:var(--space-2);font-size:.85rem;color:var(--fg-faded);border-top:1px solid var(--border);background:var(--bg-elev)}.user-menu{position:relative}.user-menu summary{list-style:none;cursor:pointer;padding:var(--space-1) var(--space-3);border-radius:var(--radius-sm)}.user-menu summary::-webkit-details-marker{display:none}.user-menu summary:hover{background:var(--bg-elev-2)}.user-menu-panel{position:absolute;right:0;top:calc(100% + 4px);background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius);padding:var(--space-3);min-width:200px;display:flex;flex-direction:column;gap:var(--space-2);box-shadow:var(--shadow);z-index:20}.user-meta{font-size:.85rem;color:var(--fg-muted)}.version-btn{font:inherit;font-size:.8rem;padding:var(--space-1) var(--space-2);background:var(--bg-elev-2);border:1px solid var(--border);border-radius:999px;color:var(--fg-muted);cursor:pointer}.version-btn:hover{border-color:var(--accent);color:var(--accent)}.modal-overlay{position:fixed;inset:0;background:#00000080;display:grid;place-items:center;padding:var(--space-4);z-index:100}.modal-card{background:var(--bg);color:var(--fg);border-radius:var(--radius);width:100%;max-width:600px;max-height:80vh;display:flex;flex-direction:column;box-shadow:var(--shadow)}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--border)}.modal-header h2{margin:0}.modal-body{padding:var(--space-4);overflow-y:auto}.version-card{background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius);padding:var(--space-4);margin-bottom:var(--space-3)}.version-card header h3 small{color:var(--fg-faded);font-weight:400;font-size:.85rem}.version-card h4{font-size:.9rem;text-transform:uppercase;letter-spacing:.04em;color:var(--fg-muted);margin-top:var(--space-3)}.version-card ul{margin:0;padding-left:1.25rem}.versions-list{display:flex;flex-direction:column;gap:var(--space-2)}.page-header{margin-bottom:var(--space-5)}.page-actions{margin-top:var(--space-5);display:flex;gap:var(--space-2)}.empty-state{text-align:center;padding:var(--space-6);color:var(--fg-muted)}.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:var(--space-4)}.module-card{text-align:left;background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius);padding:var(--space-4);cursor:pointer;font:inherit;color:var(--fg);transition:border-color .12s,transform .06s}.module-card:hover{border-color:var(--accent)}.module-card:active{transform:scale(.99)}.module-card h3{margin:0 0 var(--space-1)}.module-card p{margin:0;font-size:.9rem}.settings-section{background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius);padding:var(--space-4);margin-bottom:var(--space-4)}.settings-section h3{margin-top:0}.settings-form{display:flex;flex-direction:column;gap:var(--space-3);max-width:360px}.kv{display:grid;grid-template-columns:max-content 1fr;gap:var(--space-2) var(--space-4);margin:0}.kv dt{color:var(--fg-muted);font-size:.875rem}.kv dd{margin:0}@media (max-width: 720px){.app-shell{grid-template-columns:1fr;grid-template-areas:"header" "main" "sidebar" "footer"}.sidebar-toggle{display:inline-flex}.sidebar{border-right:0;border-top:1px solid var(--border);padding:var(--space-2)}.nav{flex-direction:row;overflow-x:auto;gap:var(--space-2)}.nav-link{flex-shrink:0}}@media print{body{background:#fff!important;color:#000!important}.app-header,.sidebar,.app-footer,.header-actions,.page-actions,.no-print{display:none!important}.app-shell{display:block}.main{padding:0!important;overflow:visible!important}.module-card,.version-card,.settings-section{border:1px solid #ccc;box-shadow:none!important;page-break-inside:avoid}body:after{content:"Home Sweet Home — " attr(data-print-date);display:block;margin-top:2rem;font-size:.8rem;color:#555}}
