:root{--yevo-50:#faf5ff;--yevo-100:#f3e8ff;--yevo-200:#e9d5ff;--yevo-300:#d8b4fe;--yevo-400:#c084fc;--yevo-500:#a855f7;--yevo-600:#9333ea;--yevo-700:#7e22ce;--yevo-800:#6b21a8;--yevo-900:#581c87;--yevo-950:#3b0764;--gray-50:#f9fafb;--gray-100:#f3f4f6;--gray-200:#e5e7eb;--gray-300:#d1d5db;--gray-400:#9ca3af;--gray-500:#6b7280;--gray-600:#4b5563;--gray-700:#374151;--gray-800:#1f2937;--gray-900:#111827;--green-50:#f0fdf4;--green-100:#dcfce7;--green-600:#16a34a;--green-800:#166534;--red-50:#fef2f2;--red-100:#fee2e2;--red-600:#dc2626;--red-700:#b91c1c;--yellow-50:#fefce8;--yellow-100:#fef9c3;--yellow-700:#a16207;--blue-100:#dbeafe;--blue-700:#1d4ed8;--ok:#16a34a;--ok-bg:#f0fdf4;--ok-bd:#bbf7d0;--warn:#d97706;--warn-bg:#fffbeb;--warn-bd:#fde68a;--err:#dc2626;--err-bg:#fef2f2;--err-bd:#fecaca;--unk:#6b7280;--unk-bg:#f9fafb;--unk-bd:#e5e7eb;--sb-bg:#101114;--sb-border:#ffffff14;--sb-section-lbl:#ffffff4d;--sb-item:#9aa1ac;--sb-item-hover-bg:#ffffff0f;--sb-item-hover:#fff;--sb-item-active-bg:#3b82f62e;--sb-item-active:#fff;--sb-footer-border:#ffffff14;--sb-muted:#6b7280;--surface-page:var(--gray-50);--surface-card:#fff;--surface-hover:var(--gray-50);--surface-sunken:var(--gray-100);--text-primary:var(--gray-900);--text-secondary:var(--gray-500);--text-muted:var(--gray-400);--border-subtle:var(--gray-200);--border-faint:var(--gray-100);--accent-50:#eff6ff;--accent-100:#dbeafe;--accent-300:#93c5fd;--accent-500:#3b82f6;--accent-600:#2563eb;--accent-700:#1d4ed8;--accent-800:#1e40af;--accent-shadow:#3b82f626;--badge-success-bg:var(--green-50);--badge-success-bd:var(--green-100);--badge-danger-bg:var(--red-50);--badge-danger-bd:var(--red-100);--badge-warning-bg:var(--yellow-50);--badge-warning-bd:var(--yellow-100);--badge-info-bg:var(--accent-100);--badge-info-bd:var(--accent-300);--badge-info-fg:var(--accent-800)}:root[data-theme=dark]{--gray-50:#17191d;--gray-100:#1e2128;--gray-200:#2b2f38;--gray-300:#3a3f4a;--gray-400:#7a8290;--gray-500:#9aa1ac;--gray-600:#b7bcc5;--gray-700:#d3d7de;--gray-800:#e8eaed;--gray-900:#f5f6f8;--green-50:#22c55e1f;--green-100:#22c55e47;--green-600:#4ade80;--red-50:#ef444424;--red-100:#ef44444d;--red-600:#f87171;--red-700:#fca5a5;--yellow-50:#eab30824;--yellow-100:#eab3084d;--yellow-700:#facc15;--blue-100:#3b82f638;--blue-700:#60a5fa;--ok:#4ade80;--ok-bg:#22c55e1f;--ok-bd:#22c55e4d;--warn:#fbbf24;--warn-bg:#d9770629;--warn-bd:#d9770659;--err:#f87171;--err-bg:#dc262629;--err-bd:#dc262659;--unk:#9aa1ac;--unk-bg:#ffffff0d;--unk-bd:#ffffff1a;--surface-page:#121417;--surface-card:var(--gray-100);--surface-hover:var(--gray-200);--surface-sunken:#14161a;--text-primary:var(--gray-900);--text-secondary:var(--gray-500);--text-muted:var(--gray-400);--border-subtle:#ffffff17;--border-faint:#ffffff0d;--badge-success-bg:#22c55e24;--badge-success-bd:#22c55e4d;--badge-danger-bg:#ef444424;--badge-danger-bd:#ef44444d;--badge-warning-bg:#eab30824;--badge-warning-bd:#eab3084d;--accent-50:#3b82f61f;--accent-100:#3b82f638;--accent-300:#60a5fa;--accent-shadow:#3b82f62e;--badge-info-bg:var(--accent-100);--badge-info-bd:var(--accent-300);--badge-info-fg:var(--accent-300)}*,:before,:after{box-sizing:border-box;margin:0;padding:0}body{background:var(--surface-page);color:var(--text-primary);min-height:100vh;font-family:Inter,Segoe UI,system-ui,sans-serif;transition:background .15s,color .15s}.btn{cursor:pointer;white-space:nowrap;border:none;border-radius:8px;align-items:center;gap:6px;padding:8px 18px;font-family:inherit;font-size:13px;font-weight:600;text-decoration:none;transition:background .15s,border-color .15s,color .15s;display:inline-flex}.btn svg{stroke:currentColor;fill:none;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0;width:14px;height:14px}.btn-primary{background:var(--accent-600);color:#fff}.btn-primary:hover{background:var(--accent-700)}.btn-primary:disabled{opacity:.5;cursor:not-allowed}.btn-secondary{background:var(--badge-info-bg);color:var(--badge-info-fg)}.btn-secondary:hover{background:var(--badge-info-bd)}.btn-danger{color:var(--red-600);border:1px solid var(--red-100);background:0 0}.btn-danger:hover{background:var(--red-50)}.btn-ghost{color:var(--text-secondary);border:1px solid var(--border-subtle);background:0 0}.btn-ghost:hover{background:var(--surface-hover);color:var(--text-primary)}.btn-sm{border-radius:6px;padding:5px 12px;font-size:12px}.card{background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:12px;overflow:hidden}.card-head{border-bottom:1px solid var(--border-faint);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:14px 20px;display:flex}.card-head-title{color:var(--text-primary);font-size:14px;font-weight:700}.form-label{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.06em;margin-bottom:5px;font-size:11px;font-weight:700;display:block}.form-input,.form-select,.form-textarea,.form-control{border:1.5px solid var(--border-subtle);background:var(--surface-card);width:100%;color:var(--text-primary);border-radius:8px;outline:none;padding:9px 12px;font-family:inherit;font-size:13px;transition:border-color .15s,box-shadow .15s}.form-input:focus,.form-select:focus,.form-textarea:focus,.form-control:focus{border-color:var(--accent-500);box-shadow:0 0 0 3px var(--accent-shadow)}.form-textarea{resize:vertical;min-height:100px}.form-group{margin-bottom:14px}.form-grid{grid-template-columns:1fr 1fr;gap:0 16px;display:grid}@media (width<=600px){.form-grid{grid-template-columns:1fr}}.form-check{align-items:center;gap:8px;display:flex}.form-check input{width:auto}.form-err{color:var(--red-600);margin-top:-8px;margin-bottom:8px;font-size:12px}.form-actions{justify-content:flex-end;gap:10px;margin-top:20px;display:flex}.toggle{flex-shrink:0;width:38px;height:22px;display:inline-block;position:relative}.toggle input{opacity:0;cursor:pointer;width:100%;height:100%;margin:0;position:absolute}.toggle-track{background:var(--border-subtle);pointer-events:none;border-radius:999px;transition:background .15s;position:absolute;inset:0}.toggle-track:before{content:"";background:#fff;border-radius:50%;width:16px;height:16px;transition:transform .15s;position:absolute;top:3px;left:3px;box-shadow:0 1px 2px #00000040}.toggle input:checked+.toggle-track{background:var(--accent-600)}.toggle input:checked+.toggle-track:before{transform:translate(16px)}.toggle input:disabled+.toggle-track{opacity:.5;cursor:default}.toggle input:disabled{cursor:default}.toggle-sm{width:30px;height:18px}.toggle-sm .toggle-track:before{width:13px;height:13px;top:2.5px;left:2.5px}.toggle-sm input:checked+.toggle-track:before{transform:translate(12px)}table{border-collapse:collapse;width:100%;font-size:13px}.table-header,thead th{background:var(--surface-sunken);color:var(--accent-700);text-transform:uppercase;letter-spacing:.08em;text-align:left;white-space:nowrap;border-bottom:1px solid var(--border-subtle);padding:10px 16px;font-size:10px;font-weight:700}:root[data-theme=dark] .table-header,:root[data-theme=dark] thead th{color:var(--accent-300)}tbody tr{border-bottom:1px solid var(--border-faint);transition:background .1s}tbody tr:hover{background:var(--surface-hover)}tbody td{color:var(--text-secondary);vertical-align:middle;padding:11px 16px}.td-name{color:var(--text-primary);font-weight:600}.table-scroll{overflow-x:auto}.badge{text-transform:uppercase;letter-spacing:.04em;white-space:nowrap;border-radius:20px;align-items:center;gap:5px;padding:2px 9px;font-size:10px;font-weight:700;display:inline-flex}.badge-success{background:var(--badge-success-bg);color:var(--green-600);border:1px solid var(--badge-success-bd)}.badge-danger{background:var(--badge-danger-bg);color:var(--red-600);border:1px solid var(--badge-danger-bd)}.badge-warning{background:var(--badge-warning-bg);color:var(--yellow-700);border:1px solid var(--badge-warning-bd)}.badge-info{background:var(--badge-info-bg);color:var(--badge-info-fg);border:1px solid var(--badge-info-bd)}.badge-blue{background:var(--blue-100);color:var(--blue-700);border:1px solid var(--blue-100)}.badge-ok{background:var(--ok-bg);color:var(--ok);border:1px solid var(--ok-bd)}.badge-warn{background:var(--warn-bg);color:var(--warn);border:1px solid var(--warn-bd)}.badge-err{background:var(--err-bg);color:var(--err);border:1px solid var(--err-bd)}.badge-unk{background:var(--unk-bg);color:var(--unk);border:1px solid var(--unk-bd)}.dot{background:currentColor;border-radius:50%;width:7px;height:7px;display:inline-block}.pill{text-transform:uppercase;letter-spacing:.03em;border-radius:20px;padding:2px 8px;font-size:10px;font-weight:700;display:inline-block}.pill-on{background:var(--badge-success-bg);color:var(--green-600);border:1px solid var(--badge-success-bd)}.pill-off{background:var(--surface-sunken);color:var(--text-muted);border:1px solid var(--border-subtle)}.pill-danger{background:var(--badge-danger-bg);color:var(--red-600);border:1px solid var(--badge-danger-bd)}.icon-btn{border:1.5px solid var(--border-subtle);background:var(--surface-card);cursor:pointer;width:30px;height:30px;color:var(--text-secondary);border-radius:7px;justify-content:center;align-items:center;padding:0;transition:all .15s;display:inline-flex}.icon-btn:hover{border-color:var(--accent-500);color:var(--accent-500);background:var(--badge-info-bg)}.icon-btn.green{border-color:var(--badge-success-bd);color:var(--green-600);background:var(--badge-success-bg)}.icon-btn.green:hover{border-color:var(--green-600);background:var(--badge-success-bd)}.icon-btn.danger{border-color:var(--badge-danger-bd);color:var(--red-600);background:var(--surface-card)}.icon-btn.danger:hover{background:var(--badge-danger-bg)}.icon-btn svg{stroke:currentColor;fill:none;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round;width:14px;height:14px}.icon-btn:disabled{opacity:.5;cursor:default}.icon-btn.spinning svg{animation:.8s linear infinite icon-spin}@keyframes icon-spin{to{transform:rotate(360deg)}}.row-actions{gap:6px;display:flex}.toast-container{z-index:200;flex-direction:column;gap:8px;max-width:340px;display:flex;position:fixed;bottom:20px;right:20px}.toast{border-radius:10px;padding:10px 14px;font-size:13px;font-weight:500;animation:.15s ease-out toast-in;box-shadow:0 6px 20px #0000001f}@keyframes toast-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.users-badge{background:var(--accent-50);width:28px;height:28px;color:var(--accent-700);border-radius:50%;justify-content:center;align-items:center;font-size:12px;font-weight:700;display:inline-flex}.hero{background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:14px;margin-bottom:24px;padding:24px 28px;position:relative;overflow:hidden}.hero:before{content:"";pointer-events:none;z-index:0;background:#3b82f60f;border-radius:50%;width:180px;height:180px;position:absolute;top:-40px;right:-40px}.hero:after{content:"";pointer-events:none;z-index:0;background:#3b82f60f;border-radius:50%;width:120px;height:120px;position:absolute;bottom:-30px;left:-20px}.hero-label,.hero-title,.hero-desc,.hero-actions{z-index:1;position:relative}.hero-label{color:var(--accent-600);text-transform:uppercase;letter-spacing:.12em;margin-bottom:4px;font-size:11px;font-weight:700;position:relative}.hero-title{color:var(--text-primary);margin-bottom:4px;font-size:22px;font-weight:800;position:relative}.hero-desc{color:var(--text-secondary);font-size:13px;line-height:1.5;position:relative}.hero-actions{flex-wrap:wrap;gap:10px;margin-top:14px;display:flex;position:relative}:root[data-theme=dark] .hero-label{color:var(--accent-300)}.stats-grid,.stat-row{grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:22px;display:grid}@media (width<=900px){.stats-grid,.stat-row{grid-template-columns:repeat(2,1fr)}}@media (width<=500px){.stats-grid,.stat-row{grid-template-columns:1fr}}.stat-card,.stat-box{background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:12px;padding:18px 20px}.stat-box{text-align:center}.stat-label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.07em;margin-bottom:6px;font-size:11px;font-weight:700}.stat-val,.stat-value{color:var(--text-primary);font-variant-numeric:tabular-nums;font-size:28px;font-weight:800;line-height:1}.stat-sub{color:var(--text-secondary);margin-top:4px;font-size:12px}.priv-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:8px;display:grid}.priv-item{border:1.5px solid var(--border-subtle);cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:8px;align-items:center;gap:10px;padding:10px 12px;transition:all .15s;display:flex}.priv-item:hover{background:var(--badge-info-bg);border-color:var(--accent-300)}.priv-item.assigned{background:var(--badge-info-bg);border-color:var(--accent-600)}.priv-check{border:2px solid var(--gray-300);color:#0000;border-radius:4px;flex-shrink:0;justify-content:center;align-items:center;width:16px;height:16px;font-size:11px;transition:all .15s;display:flex}.priv-item.assigned .priv-check{background:var(--accent-600);border-color:var(--accent-600);color:#fff}.priv-name{color:var(--text-secondary);font-size:12.5px;font-weight:600}.overlay{z-index:500;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#00000080;justify-content:center;align-items:center;padding:16px;display:none;position:fixed;inset:0}.overlay.show{display:flex}.modal{background:var(--surface-card);border-radius:16px;width:100%;max-width:480px;max-height:90vh;overflow-y:auto;box-shadow:0 20px 60px #0006}.modal-wide{max-width:720px}.modal-head{border-bottom:1px solid var(--border-faint);background:var(--surface-card);border-radius:16px 16px 0 0;justify-content:space-between;align-items:center;padding:16px 20px;display:flex;position:sticky;top:0}.modal-title{color:var(--text-primary);font-size:15px;font-weight:700}.modal-close{background:var(--surface-sunken);cursor:pointer;width:28px;height:28px;color:var(--text-secondary);border:none;border-radius:6px;justify-content:center;align-items:center;font-size:16px;transition:background .15s;display:flex}.modal-close:hover{background:var(--badge-danger-bg);color:var(--red-600)}.modal-body{padding:20px}.modal-footer{border-top:1px solid var(--border-faint);justify-content:flex-end;gap:10px;padding:14px 20px;display:flex}.alert{border-radius:8px;margin-bottom:14px;padding:10px 14px;font-size:13px}.alert-error{background:var(--badge-danger-bg);border:1px solid var(--badge-danger-bd);color:var(--red-600)}.alert-success{background:var(--badge-success-bg);border:1px solid var(--badge-success-bd);color:var(--green-600)}.alert-warning{background:var(--badge-warning-bg);border:1px solid var(--badge-warning-bd);color:var(--yellow-700)}.sidebar{background:var(--sb-bg);border-right:1px solid var(--sb-border);z-index:400;flex-direction:column;width:230px;height:100vh;transition:transform .25s cubic-bezier(.4,0,.2,1);display:flex;position:fixed;top:0;left:0}.sb-brand{border-bottom:1px solid var(--sb-border);flex-shrink:0;align-items:center;gap:10px;height:56px;padding:0 16px;display:flex}.sb-brand-icon{background:linear-gradient(135deg, var(--accent-500), var(--accent-700));border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;width:32px;height:32px;display:flex}.sb-brand-icon svg{stroke:#fff;fill:none;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;width:18px;height:18px}.sb-brand-name{color:#fff;font-size:15px;font-weight:700;line-height:1.2}.sb-brand-sub{color:var(--sb-muted);font-size:10px;line-height:1}.sb-nav{flex:1;padding:12px 10px;overflow:hidden auto}.sb-nav::-webkit-scrollbar{width:4px}.sb-nav::-webkit-scrollbar-thumb{background:var(--sb-border);border-radius:4px}.sb-section{margin-bottom:4px}.sb-section-label{color:var(--sb-section-lbl);text-transform:uppercase;letter-spacing:.08em;padding:8px 10px 4px;font-size:10px;font-weight:700}.sb-item{color:var(--sb-item);cursor:pointer;text-align:left;white-space:nowrap;background:0 0;border:none;border-radius:7px;align-items:center;gap:9px;width:100%;margin-bottom:1px;padding:8px 10px;font-size:13px;text-decoration:none;transition:background .12s,color .12s;display:flex;overflow:hidden}.sb-item:hover{background:var(--sb-item-hover-bg);color:var(--sb-item-hover)}.sb-item.active{background:var(--sb-item-active-bg);color:var(--sb-item-active);font-weight:600}.sb-icon{flex-shrink:0;justify-content:center;align-items:center;width:18px;height:18px;display:flex}.sb-icon svg{stroke:currentColor;fill:none;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0;width:18px;height:18px}.sb-footer{border-top:1px solid var(--sb-footer-border);flex-shrink:0;padding:14px 14px 16px}.sb-user{align-items:center;gap:10px;margin-bottom:10px;display:flex}.sb-avatar{color:#fff;background:#ffffff1a;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:32px;height:32px;font-size:13px;font-weight:700;display:flex}.sb-user-name{color:#e2e8f0;white-space:nowrap;text-overflow:ellipsis;font-size:13px;font-weight:600;overflow:hidden}.sb-user-role{color:var(--sb-muted);font-size:11px}.sb-logout{border:1px solid var(--sb-border);width:100%;color:var(--sb-muted);cursor:pointer;text-align:left;background:#ffffff0d;border-radius:7px;align-items:center;gap:8px;padding:7px 10px;font-family:inherit;font-size:12px;transition:background .15s,color .15s,border-color .15s;display:flex}.sb-logout svg{stroke:currentColor;fill:none;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0;width:15px;height:15px}.sb-logout:hover{color:#f87171;background:#f871711a;border-color:#f8717133}.topbar{background:var(--surface-card);border-bottom:1px solid var(--border-subtle);border-top:3px solid var(--accent-600);z-index:100;justify-content:space-between;align-items:center;height:56px;padding:0 24px;transition:background .15s,border-color .15s;display:flex;position:fixed;top:0;left:230px;right:0;box-shadow:0 1px 3px #0000000a}.topbar-left{flex:auto;align-items:center;gap:12px;min-width:0;display:flex;overflow:hidden}.breadcrumb{align-items:center;gap:6px;min-width:0;font-size:13px;display:flex;overflow:hidden}.breadcrumb a{color:var(--text-secondary);flex-shrink:0;text-decoration:none}.breadcrumb a:hover{color:var(--accent-500)}.bc-sep{color:var(--text-muted);flex-shrink:0;font-size:11px}.bc-current{color:var(--text-primary);text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.topbar-right{flex-shrink:0;align-items:center;gap:14px;display:flex}.topbar-date{color:var(--text-muted);white-space:nowrap;font-size:12px}.topbar-uname{color:var(--text-secondary);white-space:nowrap;text-overflow:ellipsis;max-width:140px;font-size:13px;font-weight:500;overflow:hidden}.topbar-avatar{background:var(--surface-sunken);border:1px solid var(--border-subtle);width:30px;height:30px;color:var(--text-secondary);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:12px;font-weight:700;display:flex}.hamburger{cursor:pointer;color:var(--text-secondary);background:0 0;border:none;flex-shrink:0;padding:6px;font-size:20px;display:none}.theme-toggle{border:1.5px solid var(--border-subtle);background:var(--surface-card);cursor:pointer;width:30px;height:30px;color:var(--text-secondary);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;transition:all .15s;display:inline-flex}.theme-toggle:hover{border-color:var(--accent-500);color:var(--accent-500)}.theme-toggle svg{stroke:currentColor;fill:none;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round;width:16px;height:16px}.theme-toggle .icon-moon,:root[data-theme=dark] .theme-toggle .icon-sun{display:none}:root[data-theme=dark] .theme-toggle .icon-moon{display:block}.page-wrap{flex-direction:column;min-height:100vh;margin-left:230px;padding-top:56px;display:flex}.main{flex:1 0 auto;width:100%;max-width:1180px;margin:0 auto;padding:28px 24px}.site-footer{border-top:3px solid var(--accent-600);background:var(--surface-card);text-align:center;color:var(--text-muted);flex-shrink:0;padding:12px 24px;font-size:12px}body.popout .page-wrap{margin-left:0;padding-top:0}body.popout .main{max-width:none;padding:12px}body.popout .hero,body.popout .site-footer{display:none}.sp-main-slot{min-height:620px;position:relative}#spDock{z-index:300;background:0 0;transition:opacity .15s;position:fixed}#spDock iframe{background:0 0;border:none;width:100%;height:100%;display:block}#spDock.sp-dock-full{border-radius:16px;overflow:auto}#spDock.sp-dock-floating{border:1px solid var(--border-subtle);border-radius:16px;width:360px;height:640px;inset:auto 20px 20px auto;overflow:hidden;box-shadow:0 20px 50px #00000073}#spDock.sp-dock-floating.sp-dock-collapsed{height:52px}#spDock.sp-dock-hidden{display:none}.sp-dock-bar{background:var(--surface-card);border-bottom:1px solid var(--border-subtle);color:var(--text-primary);cursor:pointer;-webkit-user-select:none;user-select:none;justify-content:space-between;align-items:center;padding:10px 14px;font-size:12.5px;font-weight:700;display:none}#spDock.sp-dock-floating .sp-dock-bar{display:flex}.sp-dock-bar-dot{background:var(--ok);border-radius:50%;width:7px;height:7px;margin-right:7px;animation:1.4s infinite sp-dock-pulse;display:inline-block}@keyframes sp-dock-pulse{0%,to{opacity:1}50%{opacity:.35}}.sp-dock-bar-actions{align-items:center;gap:10px;display:flex}.sp-dock-bar-toggle{color:var(--text-muted);font-size:11px}#spDock.sp-dock-floating .sp-dock-bar+iframe{height:calc(100% - 41px)}.sp-dock-bar-pip{cursor:pointer;color:var(--text-muted);background:0 0;border:none;border-radius:5px;align-items:center;margin:0;padding:3px;transition:color .15s,background .15s;display:flex}.sp-dock-bar-pip:hover{color:var(--accent-600);background:var(--surface-hover)}.sp-dock-bar-pip svg{width:15px;height:15px}@media (width<=520px){#spDock.sp-dock-floating{width:calc(100vw - 24px);height:70vh;bottom:12px;right:12px}}.page-hdr{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:4px;display:flex}.sb-overlay{z-index:350;background:#00000073;display:none;position:fixed;inset:0}.sb-overlay.show{display:block}@media (width<=768px){.sidebar{transform:translate(-100%)}.sidebar.open{transform:translate(0)}.hamburger{align-items:center;display:flex}.page-wrap{margin-left:0}.topbar{left:0}.main{padding:20px 16px}}@media (width<=900px){.topbar-date,.topbar-uname{display:none}}@media (width<=480px){.breadcrumb a,.breadcrumb .bc-sep,.breadcrumb span:not(.bc-current){display:none}.topbar{padding:0 14px}}.text-muted{color:var(--text-muted)}.overflow-x-auto{overflow-x:auto}.flex{display:flex}.items-center{align-items:center}.justify-between{justify-content:space-between}.gap-2{gap:8px}.gap-3{gap:12px}.mb-4{margin-bottom:16px}.mb-6{margin-bottom:24px}.mt-4{margin-top:16px}.text-sm{font-size:13px}.font-semibold{font-weight:600}.text-center{text-align:center}.empty{text-align:center;color:var(--text-muted);background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:12px;padding:32px 20px;font-size:13px}.assignment-row{grid-template-columns:1.2fr .8fr .8fr 1fr auto;align-items:center;gap:8px;margin-bottom:8px;display:grid}@media (width<=600px){.assignment-row{grid-template-columns:1fr}}.assignment-row .remove-row{background:var(--red-50);border:1px solid var(--red-100);color:var(--red-600);cursor:pointer;border-radius:8px;width:34px;height:34px;font-size:16px;line-height:1}.add-row-btn{width:auto}
