:root{--bg:#f7f8fb;--panel:#fff;--muted:#6b7280;--text:#0f172a;--border:#e5e7eb;--brand:#2563eb;--brand-weak:#eaf1ff;--ok:#059669;--warn:#d97706;--danger:#b91c1c;--pill-bg:#f2f5f9;--focus:#93c5fd;--shadow:0 1px 2px #1018280f, 0 1px 1px #1018280a;--sidebar-width:180px;--header-height:57px}*,:before,:after{box-sizing:border-box}html,body{height:100%;margin:0}body{color:var(--text);background:var(--bg);font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Helvetica,Arial,sans-serif;font-size:16px;line-height:1.5}.app-header{z-index:40;height:var(--header-height);-webkit-backdrop-filter:saturate(180%)blur(6px);backdrop-filter:saturate(180%)blur(6px);border-bottom:1px solid var(--border);background:#f7f8fbcc;align-items:center;gap:.75rem;padding:0 1rem;display:flex;position:fixed;top:0;left:0;right:0}.app-header .brand{color:var(--text);align-items:center;gap:.5rem;font-weight:700;text-decoration:none;display:flex}.app-header .spacer{flex:1}.app-sidebar{width:var(--sidebar-width);background:var(--panel);border-right:1px solid var(--border);height:100vh;box-shadow:var(--shadow);z-index:10;flex-direction:column;align-items:flex-start;display:flex;position:fixed;top:0;left:0;overflow:hidden}.app-sidebar ul{flex-direction:column;flex:auto;width:100%;margin:0;padding:0;list-style:none;display:flex}.app-sidebar ul li:first-child{margin-top:90px}.nav-item{color:var(--text);cursor:pointer;border-radius:.5rem;align-items:center;gap:.75rem;margin:0 .25rem .25rem;padding:.75rem 1rem;font-size:1rem;text-decoration:none;transition:background .15s,color .15s;display:flex}.nav-item:hover,.nav-item.active{background:var(--brand-weak);color:var(--brand)}.sidebar-footer{width:100%;color:var(--muted);border-top:1px solid var(--border);justify-content:center;align-items:center;padding:1rem 0;font-size:.75rem;display:flex}.app-main{margin-left:var(--sidebar-width);padding-top:var(--header-height);min-height:100vh}.app-main-inner{padding:1.5rem}.auth-page{background:var(--bg);justify-content:center;align-items:center;min-height:100vh;padding:1rem;display:flex}.auth-card{background:var(--panel);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:12px;width:100%;max-width:400px;padding:2rem}.auth-logo{justify-content:center;margin-bottom:1.5rem;display:flex}.auth-title{color:var(--text);margin:0 0 .25rem;font-size:1.25rem;font-weight:600}.auth-subtitle{color:var(--muted);margin:0 0 1.5rem;font-size:.875rem}.form-group{margin-bottom:1rem}.form-group label{color:var(--text);margin-bottom:.375rem;font-size:.875rem;font-weight:500;display:block}.form-group input{border:1px solid var(--border);width:100%;color:var(--text);background:var(--panel);border-radius:.5rem;outline:none;padding:.625rem .875rem;font-family:inherit;font-size:.9rem;transition:border-color .15s}.form-group input:focus{border-color:var(--brand);box-shadow:0 0 0 3px #2563eb1a}.form-row{grid-template-columns:1fr 1fr;gap:.75rem;display:grid}.btn{border:1px solid var(--border);background:var(--panel);cursor:pointer;box-shadow:var(--shadow);color:var(--text);border-radius:.5rem;justify-content:center;align-items:center;gap:.5rem;padding:.625rem 1rem;font-family:inherit;font-size:.9rem;font-weight:500;text-decoration:none;transition:opacity .15s;display:inline-flex}.btn:hover{opacity:.85}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.primary{background:var(--brand);color:#fff;border-color:#1d4ed8}.btn.ghost{box-shadow:none;color:var(--muted);background:0 0;border:none;padding:.375rem .5rem;font-size:.875rem}.btn.ghost:hover{color:var(--text)}.btn-full{width:100%}.btn:focus-visible{outline:3px solid var(--focus);outline-offset:2px}.alert{border-radius:.5rem;margin-bottom:1rem;padding:.75rem 1rem;font-size:.875rem}.alert.error{color:var(--danger);background:#fef2f2;border:1px solid #fecaca}.auth-footer{text-align:center;color:var(--muted);margin-top:1.25rem;font-size:.875rem}.auth-footer a{color:var(--brand);font-weight:500;text-decoration:none}.auth-footer a:hover{text-decoration:underline}.card{background:var(--panel);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:12px}.muted{color:var(--muted)}.spacer{flex:1}
