.app-shell{background-color:var(--bg);height:100vh;display:flex}.app-shell-main{flex-direction:column;flex:1;min-width:0;display:flex}.app-shell-content{flex:1;overflow:auto}.sidebar{background-color:var(--sidebar-bg);border-right:1px solid var(--border);flex-direction:column;flex-shrink:0;width:64px;transition:width .3s ease-out;display:flex;overflow:hidden}.sidebar:hover,.sidebar:focus-within{width:220px;box-shadow:var(--shadow-1)}.sidebar-label{opacity:0;white-space:nowrap;font-size:var(--fs-body-lg);transition:opacity .3s ease-out}.sidebar:hover .sidebar-label,.sidebar:focus-within .sidebar-label{opacity:1}.sidebar-header{color:var(--text-primary);text-align:left;background:0 0;border:none;align-items:center;gap:10px;padding:16px 0 16px 22px;transition:background-color .12s ease-out;display:flex}.sidebar-header:hover{background-color:var(--hover)}.sidebar-header svg{color:var(--accent)}.sidebar-header-label{font-weight:700}.sidebar-items{flex:1;padding:4px 0;overflow:hidden auto}.sidebar-item{width:100%;min-height:46px;color:var(--text-primary);background:0 0;border:none;align-items:center;gap:12px;padding:12px 0 12px 21px;text-decoration:none;transition:background-color .12s ease-out;display:flex}.sidebar-item:hover{background-color:var(--hover)}.sidebar-item.active{background-color:var(--accent-tint);box-shadow:inset 3px 0 0 var(--accent)}.sidebar-item.active .sidebar-icon{color:var(--accent)}.sidebar-icon{flex-shrink:0;place-items:center;width:22px;display:grid}.sidebar-divider{border:none;border-top:1px solid var(--divider);margin:6px 12px}.sidebar-footer{border-top:1px solid var(--divider)}.sidebar-ai:disabled{cursor:default;color:var(--text-muted)}.sidebar-ai:disabled:hover{background:0 0}.topbar{background-color:var(--surface);border-bottom:1px solid var(--border);height:48px;box-shadow:var(--shadow-1);z-index:1;flex-shrink:0;align-items:center;gap:4px;padding:0 8px;display:flex}.topbar-title{font-size:var(--fs-body-lg);color:var(--text-primary);letter-spacing:.2px;font-weight:700}@media (width<=767px){.sidebar{display:none}}.topbar-menu-btn{border-radius:var(--radius);width:44px;height:44px;color:var(--text-primary);background:0 0;border:none;flex-shrink:0;place-items:center;transition:background-color .12s ease-out;display:grid}.topbar-menu-btn:hover{background-color:var(--hover)}@media (width>=768px){.topbar{display:none}}.nav-drawer-backdrop{z-index:1000;opacity:0;visibility:hidden;background-color:#00000080;transition:opacity .2s ease-out,visibility .2s ease-out;position:fixed;inset:0}.nav-drawer-backdrop.open{opacity:1;visibility:visible}.nav-drawer{background-color:var(--sidebar-bg);border-right:1px solid var(--border);width:240px;max-width:84vw;box-shadow:var(--shadow-menu);flex-direction:column;transition:transform .22s ease-out;display:flex;position:fixed;inset:0 auto 0 0;transform:translate(-100%)}.nav-drawer.open{transform:translate(0)}.nav-drawer .sidebar-label{opacity:1}.nav-drawer .sidebar-item{min-height:48px}@media (width>=768px){.nav-drawer-backdrop,.nav-drawer{display:none}}@media (prefers-reduced-motion:reduce){.nav-drawer-backdrop,.nav-drawer{transition:none}}.route-fallback{background-color:var(--bg);height:100%}.placeholder-page{height:100%;padding:var(--pad-view);place-items:center;display:grid}.placeholder-text{text-align:center}.placeholder-text h2{font-size:var(--fs-title);color:var(--text-primary);margin:0;font-weight:500}.placeholder-text p{font-size:var(--fs-title);color:var(--text-secondary);margin:6px 0 0;font-weight:400}.route-error{text-align:center;background:var(--bg);place-content:center;gap:8px;height:100%;display:grid}.route-error-title{color:var(--text-primary);font-size:var(--fs-subtitle);font-weight:600}.route-error-detail{color:var(--text-muted);font-size:var(--fs-body)}.route-error button{border-radius:var(--radius);background:var(--accent);color:#fff;font-size:var(--fs-body);border:none;justify-self:center;margin-top:8px;padding:10px 24px}.home-page{isolation:isolate;background:radial-gradient(860px 480px at 16% -12%, var(--celeste-glow-strong), transparent 64%), radial-gradient(720px 520px at 94% 22%, var(--celeste-glow), transparent 62%), radial-gradient(940px 600px at 50% 118%, var(--celeste-glow), transparent 60%);min-height:100%;padding-bottom:48px;position:relative;overflow:hidden}.home-page:before,.home-page:after{content:"";z-index:-1;pointer-events:none;clip-path:polygon(25% 6.7%,75% 6.7%,100% 50%,75% 93.3%,25% 93.3%,0% 50%);background:linear-gradient(155deg, var(--celeste-shard), transparent 72%);position:absolute}.home-page:before{width:460px;height:460px;top:96px;right:-150px;transform:rotate(18deg)}.home-page:after{background:linear-gradient(15deg, var(--celeste-shard), transparent 72%);width:360px;height:360px;bottom:-110px;left:-120px;transform:rotate(-12deg)}.home-session-bar{background-color:var(--session-bar);border-bottom:1px solid var(--divider);justify-content:space-between;align-items:center;gap:16px;padding:12px 24px;display:flex}.home-profile-wrap{position:relative}.home-profile{color:var(--text-primary);border-radius:var(--radius-lg);background:0 0;border:none;align-items:center;gap:12px;padding:6px 12px 6px 6px;transition:background-color .12s ease-out;display:flex}.home-profile:hover{background-color:var(--hover)}.home-avatar{background-color:var(--accent-tint);width:46px;height:46px;color:var(--accent);border-radius:50%;flex-shrink:0;place-items:center;display:grid}.home-profile-info{flex-direction:column;align-items:flex-start;gap:3px;display:flex}.home-username{font-weight:600;font-size:var(--fs-input);line-height:1.2}.home-profile-status{align-items:center;gap:8px;display:flex}.home-profile-arrow{color:var(--text-muted)}.home-role-badge{background-color:var(--accent);color:var(--role-badge-fg);font-size:var(--fs-caption);border-radius:20px;width:fit-content;padding:2px 10px;font-weight:600}.home-online{font-size:var(--fs-caption);color:var(--online-color);align-items:center;gap:5px;display:flex}.home-online-dot{background-color:var(--online-color);width:7px;height:7px;box-shadow:0 0 6px var(--online-color);border-radius:50%}.home-profile-menu{background-color:var(--menu-bg);border:1px solid var(--accent-border);width:min(280px,100vw - 32px);box-shadow:var(--shadow-menu);z-index:20;border-radius:12px;padding:8px 0;animation:.14s ease-out home-menu-in;position:absolute;top:calc(100% + 8px);left:0;overflow:hidden}@keyframes home-menu-in{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.home-menu-header{flex-direction:column;align-items:flex-start;gap:6px;padding:10px 16px 12px;display:flex}.home-menu-header strong{font-size:var(--fs-body-lg);font-weight:600}.home-menu-divider{border:none;border-top:1px solid var(--divider);margin:0}.home-menu-info{color:var(--text-muted);align-items:center;gap:12px;padding:10px 16px;display:flex}.home-menu-info-text{flex-direction:column;gap:1px;display:flex}.home-menu-info-label{font-size:var(--fs-caption);color:var(--text-muted)}.home-menu-info-value{font-size:var(--fs-body-lg);color:var(--text-primary);font-weight:500}.home-menu-item{width:100%;min-height:44px;color:var(--text-primary);font-size:var(--fs-body-lg);text-align:left;background:0 0;border:none;align-items:center;gap:12px;padding:10px 16px;font-weight:500;transition:background-color .12s ease-out;display:flex}.home-menu-item svg{color:var(--text-muted);flex-shrink:0}.home-menu-item:hover{background-color:var(--hover)}.home-menu-logout,.home-menu-logout svg{color:var(--danger)}.home-menu-logout:hover{background-color:color-mix(in srgb, var(--danger) 12%, transparent)}.home-clock{flex-direction:column;flex-shrink:0;align-items:flex-end;display:flex}.home-clock-time{font-variant-numeric:tabular-nums;font-size:30px;font-weight:700;line-height:1.2}.home-clock-date{font-size:var(--fs-body);color:var(--text-secondary)}.home-clock-date:first-letter{text-transform:uppercase}.home-hero{text-align:center;flex-direction:column;align-items:center;gap:6px;padding:56px 20px 24px;display:flex}.home-hero-icon{filter:drop-shadow(0 6px 18px var(--accent-glow));animation:2.4s ease-in-out infinite home-float}@keyframes home-float{0%,to{transform:translateY(-5px)}50%{transform:translateY(5px)}}@media (prefers-reduced-motion:reduce){.home-hero-icon{animation:none}}.home-hero h1{letter-spacing:.3px;margin:14px 0 0;font-size:32px}.home-hero p{color:var(--text-secondary);font-style:italic;font-size:var(--fs-input);margin:0}.home-section-label{max-width:960px;color:var(--section-label);font-size:var(--fs-body);letter-spacing:2px;text-transform:uppercase;white-space:nowrap;align-items:center;gap:16px;margin:28px auto 24px;padding:0 32px;font-weight:700;display:flex}.home-section-label:before,.home-section-label:after{content:"";background-color:var(--divider);flex:1;height:1px}.home-grid{flex-wrap:wrap;justify-content:center;gap:14px;max-width:960px;margin:0 auto;padding:0 24px;display:flex}.home-card{background:linear-gradient(180deg, color-mix(in srgb, var(--accent) 6%, var(--surface)), var(--surface));border:1px solid var(--border);width:164px;height:112px;color:var(--card-text);font-size:var(--fs-body-lg);box-shadow:var(--shadow-card);border-radius:12px;flex-direction:column;justify-content:center;align-items:center;gap:8px;font-weight:600;transition:transform .16s ease-out,border-color .16s ease-out,box-shadow .16s ease-out;display:flex}.home-card:hover{border-color:var(--accent);box-shadow:var(--shadow-card), 0 8px 22px var(--accent-glow);transform:translateY(-3px)}.home-card:active{transform:translateY(-1px)}.home-card-icon{background-color:var(--accent-tint-strong);border-radius:50%;place-items:center;width:44px;height:44px;transition:transform .16s ease-out;display:grid}.home-card:hover .home-card-icon{transform:scale(1.08)}@media (width<=900px){.home-card{width:calc(33.33% - 10px);min-width:140px}}@media (width<=700px){.home-session-bar{flex-direction:column;align-items:stretch;padding:12px 16px}.home-clock{align-items:flex-start;padding-left:6px}.home-hero{padding-top:40px}.home-hero h1{font-size:28px}.home-grid{gap:12px;padding:0 16px}.home-card{width:calc(50% - 6px);min-width:0;height:104px}.home-page:before{width:300px;height:300px;top:40px;right:-140px}.home-page:after{width:240px;height:240px;bottom:-80px;left:-100px}}.login-page{isolation:isolate;background:radial-gradient(900px 480px at 50% -10%, color-mix(in srgb, var(--login-accent) 14%, transparent), transparent 65%), radial-gradient(680px 440px at 8% 108%, var(--celeste-glow-strong), transparent 62%), radial-gradient(620px 420px at 102% 52%, var(--celeste-glow), transparent 62%), var(--login-bg);place-items:center;min-height:100vh;padding:16px;display:grid;position:relative;overflow:hidden}.login-page:before,.login-page:after{content:"";z-index:-1;pointer-events:none;clip-path:polygon(25% 6.7%,75% 6.7%,100% 50%,75% 93.3%,25% 93.3%,0% 50%);background:linear-gradient(155deg, var(--celeste-shard), transparent 72%);position:absolute}.login-page:before{width:420px;height:420px;top:-130px;right:-120px;transform:rotate(16deg)}.login-page:after{background:linear-gradient(15deg, var(--celeste-shard), transparent 72%);width:340px;height:340px;bottom:-100px;left:-110px;transform:rotate(-14deg)}.login-card{background-color:var(--login-surface);border:1px solid color-mix(in srgb, var(--login-accent) 22%, transparent);border-radius:14px;flex-direction:column;align-items:center;gap:10px;padding:52px 56px;display:flex;box-shadow:0 10px 30px #00000080}.login-title{letter-spacing:1px;color:var(--login-text);text-align:center;margin:0;font-size:34px;font-weight:700}.login-spacer{height:20px}.login-input{width:360px;max-width:100%;height:54px;font-size:var(--fs-input);border:1px solid var(--login-accent);border-radius:var(--radius);color:var(--login-text);background-color:#0000;outline:none;padding:0 16px;transition:box-shadow .14s ease-out,background-color .14s ease-out}.login-input::placeholder{color:var(--text-secondary)}.login-input:focus{box-shadow:0 0 0 3px color-mix(in srgb, var(--login-accent) 30%, transparent);background-color:color-mix(in srgb, var(--login-accent) 6%, transparent)}.login-password{max-width:100%;position:relative}.login-password .login-input{padding-right:52px}.login-reveal{border-radius:var(--radius-sm);width:40px;height:40px;color:var(--text-secondary);background:0 0;border:none;place-items:center;padding:0;transition:color .12s ease-out;display:grid;position:absolute;top:50%;right:7px;transform:translateY(-50%)}.login-reveal:hover{color:var(--login-text)}.login-error{max-width:360px;color:var(--danger);font-size:var(--fs-input);text-align:center;margin:0}.login-ring{border:3px solid #0000;border-top-color:var(--login-accent);border-radius:50%;width:28px;height:28px;animation:.8s linear infinite login-ring-spin}@keyframes login-ring-spin{to{transform:rotate(360deg)}}.login-submit{background-color:var(--login-accent);width:360px;max-width:100%;height:54px;color:var(--on-primary);font-size:var(--fs-subtitle);box-shadow:0 6px 16px color-mix(in srgb, var(--login-accent) 35%, transparent);border:none;border-radius:10px;font-weight:500;transition:filter .14s ease-out,transform .14s ease-out,box-shadow .14s ease-out}.login-submit:hover:not(:disabled){filter:brightness(1.1);box-shadow:0 8px 20px color-mix(in srgb, var(--login-accent) 45%, transparent)}.login-submit:active:not(:disabled){transform:translateY(1px)}.login-submit:disabled{opacity:.6;cursor:not-allowed}@media (width<=480px){.login-card{width:100%;padding:40px 24px}.login-input,.login-submit,.login-password{width:100%}}:root{--bg-deep:#070d17;--bg:#0d1b2e;--sidebar-bg:#15375c;--card-area:#112240;--surface:#1a2235;--input-bg:#222b40;--heading-row-bg:#1f2937;--hover:#374151;--text-primary:#e3f2fd;--text-secondary:#94a3b8;--text-muted:#64748b;--label-text:#cbd5e1;--card-text:#cbd5e1;--accent:#3b82f6;--border:#374151;--divider:#1e3a5f;--danger:#ef4444;--success:#22c55e;--warning:#f59e0b;--session-bar:#112240;--menu-bg:#1a2744;--role-badge-fg:#0d1b2e;--online-color:#4caf50;--section-label:#4a7fa5;--info:#06b6d4;--success-soft:#4ade80;--danger-soft:#f87171;--danger-alt:#e53935;--category-violet:#a855f7;--parent-row-bg:#2d364a;--accent-tint:color-mix(in srgb, var(--accent) 15%, transparent);--accent-tint-strong:color-mix(in srgb, var(--accent) 26%, transparent);--accent-border:color-mix(in srgb, var(--accent) 35%, transparent);--accent-glow:color-mix(in srgb, var(--accent) 22%, transparent);--shadow-1:0 2px 8px #00000040;--shadow-menu:0 8px 20px 1px #0000004f;--shadow-card:0 6px 18px #00000047;--celeste:#7dd3fc;--celeste-glow:color-mix(in srgb, var(--celeste) 11%, transparent);--celeste-glow-strong:color-mix(in srgb, var(--celeste) 18%, transparent);--celeste-shard:color-mix(in srgb, var(--celeste) 8%, transparent);--login-bg:#090c14;--login-surface:#1e2538;--login-text:#e0e0e0;--login-accent:#3d71f2;--on-primary:#fff;--font-sans:Roboto, system-ui, "Segoe UI", sans-serif;--font-mono:ui-monospace, Consolas, monospace;--fs-caption:12px;--fs-dense:13px;--fs-body:14px;--fs-body-lg:15px;--fs-input:16px;--fs-subtitle:18px;--fs-section:20px;--fs-title:24px;--fs-modal:28px;--radius:8px;--radius-sm:6px;--radius-lg:10px;--pad-cell:10px;--pad-view:15px;--pad-container:20px;--row-height:45px;--bp-sm:640px;--bp-md:768px;--bp-lg:1024px;--bp-xl:1280px;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}:root[data-theme=light]{--bg-deep:#d9e1ea;--bg:#e8edf3;--sidebar-bg:#dceaf6;--card-area:#f5f7fa;--surface:#fff;--input-bg:#edf0f5;--heading-row-bg:#d6dce5;--hover:#dae0ea;--text-primary:#111827;--text-secondary:#374151;--text-muted:#6b7280;--label-text:#4b5563;--card-text:#1f2937;--accent:#2563eb;--border:#b8c4d4;--divider:#c5cdd9;--danger:#dc2626;--success:#16a34a;--warning:#d97706;--session-bar:#f5f7fa;--menu-bg:#fff;--role-badge-fg:#fff;--online-color:#16a34a;--section-label:#4a6fa5;--shadow-1:0 2px 8px #0f172a1a;--shadow-menu:0 8px 20px 1px #0f172a2e;--shadow-card:0 6px 18px #0f172a1f;--celeste:#38bdf8;--celeste-glow:color-mix(in srgb, var(--celeste) 13%, transparent);--celeste-glow-strong:color-mix(in srgb, var(--celeste) 20%, transparent);--celeste-shard:color-mix(in srgb, var(--celeste) 10%, transparent);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}html,body,#root{height:100%}body{font-family:var(--font-sans);font-size:var(--fs-input);background-color:var(--bg);color:var(--text-primary);margin:0;line-height:1.5}button{font:inherit;color:inherit;cursor:pointer}input{font:inherit}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}*{scrollbar-width:thin;scrollbar-color:var(--border) transparent}
