*{box-sizing:border-box}body{margin:0;font-family:Inter,system-ui,-apple-system,Segoe UI,Arial,sans-serif;background:#f4f7fb;color:#172033}a{color:#2457e6;text-decoration:none}.layout{display:grid;grid-template-columns:250px 1fr;min-height:100vh}aside{background:#0f2238;color:white;padding:24px 16px;position:sticky;top:0;height:100vh}.brand{font-size:20px;font-weight:800;margin:2px 10px 28px}.brand small{display:block;font-size:11px;font-weight:500;color:#9fb2c7;margin-top:5px}.nav a{display:block;color:#d8e3ef;padding:11px 12px;border-radius:9px;margin:3px 0;font-size:14px}.nav a:hover,.nav a.active{background:#173654;color:#fff}.content{padding:34px;max-width:1500px;width:100%}.page-head{display:flex;justify-content:space-between;gap:20px;align-items:center;margin-bottom:24px}.page-head h1{margin:0;font-size:30px}.page-head p{margin:6px 0 0;color:#6c7890}.grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}.stat,.card{background:white;border:1px solid #e2e8f0;border-radius:15px;box-shadow:0 3px 14px rgba(20,37,63,.04)}.stat{padding:20px}.stat .num{font-size:32px;font-weight:800;margin-top:8px}.stat .label{font-size:13px;color:#6a778e}.card{padding:22px;margin-top:20px}.card h2{margin:0 0 16px;font-size:20px}.btn{display:inline-block;border:1px solid #cfd8e5;background:white;color:#20304a;border-radius:9px;padding:10px 14px;font-weight:650;cursor:pointer}.btn.primary{background:#2457e6;border-color:#2457e6;color:white}.btn.danger{color:#b42318;border-color:#f2c7c3}.btn.small{padding:6px 9px;font-size:12px}.actions{display:flex;gap:8px;flex-wrap:wrap}.table-wrap{overflow:auto}table{border-collapse:collapse;width:100%;font-size:14px}th{color:#66738a;font-weight:650;text-align:left;background:#f9fbfd}th,td{padding:12px 10px;border-bottom:1px solid #e8edf4;vertical-align:top}.badge{display:inline-block;border-radius:999px;padding:4px 9px;font-size:12px;font-weight:700}.badge.green{background:#e7f8ef;color:#087a45}.badge.orange{background:#fff4df;color:#a15c00}.badge.gray{background:#eef2f6;color:#556273}.badge.red{background:#ffe9e7;color:#b42318}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.field label{display:block;font-size:13px;font-weight:700;margin-bottom:6px;color:#39465e}.field input,.field select,.field textarea{width:100%;border:1px solid #ced7e3;border-radius:9px;padding:10px 11px;background:white;font:inherit}.field.full{grid-column:1/-1}.alert{padding:13px 15px;border-radius:10px;margin:12px 0}.alert.success{background:#e8f8ef;color:#086b3e}.alert.danger{background:#fdeceb;color:#9c201a}.muted{color:#6d7890}.empty{padding:28px;text-align:center;color:#7b8799}.login{max-width:420px;margin:10vh auto;background:white;padding:32px;border-radius:16px;border:1px solid #e2e8f0}.login h1{margin-top:0}.login input{width:100%;padding:12px;border:1px solid #ced7e3;border-radius:9px;margin:6px 0 14px}.signature{border:1px dashed #aab6c6;border-radius:10px;background:#fff;width:100%;height:170px;touch-action:none}.section-title{font-size:14px;text-transform:uppercase;letter-spacing:.06em;color:#6b7890;margin:26px 0 10px}.public-shell{max-width:900px;margin:36px auto;padding:0 18px}.public-card{background:#fff;border:1px solid #e0e7ef;border-radius:16px;padding:26px;box-shadow:0 8px 30px rgba(20,37,63,.06)}@media(max-width:900px){.layout{grid-template-columns:1fr}aside{height:auto;position:static}.nav{display:flex;overflow:auto}.nav a{white-space:nowrap}.content{padding:20px}.grid{grid-template-columns:repeat(2,1fr)}.form-grid{grid-template-columns:1fr}}@media(max-width:560px){.grid{grid-template-columns:1fr}.page-head{align-items:flex-start;flex-direction:column}}
/* v0.8.0 branding */
.brand-logo{display:block;max-width:170px;max-height:48px;object-fit:contain;margin:0 0 12px}.login-logo{display:block;max-width:230px;max-height:64px;object-fit:contain;margin:0 auto 18px}.page-logo{display:block;max-width:190px;max-height:54px;object-fit:contain;margin-bottom:14px}.brand small{display:block}.compact-details summary{cursor:pointer;font-weight:700;color:#2455cc;list-style:none}.compact-details summary::-webkit-details-marker{display:none}.compact-details summary:after{content:' ▾';font-size:11px}.compact-details[open] summary:after{content:' ▴'}.compact-details .detail-list{margin-top:8px;padding:8px 10px;background:#f5f8fc;border-radius:10px;min-width:220px}.compact-details .detail-list div{padding:3px 0;border-bottom:1px solid #e5ebf3}.compact-details .detail-list div:last-child{border-bottom:0}

/* v0.8.1 navigation */
aside{overflow-y:auto;overflow-x:hidden;scrollbar-width:thin;scrollbar-color:#49647f #0f2238}
aside::-webkit-scrollbar{width:7px}aside::-webkit-scrollbar-track{background:#0f2238}aside::-webkit-scrollbar-thumb{background:#49647f;border-radius:10px}
.nav-group{position:relative;margin:3px 0}.nav-group>a{margin:0}.nav-sub{display:none;padding:4px 0 4px 10px}.nav-group:hover>.nav-sub,.nav-group:focus-within>.nav-sub,.nav-group.open>.nav-sub{display:block}.nav-sub a{font-size:13px;padding:8px 10px;color:#bcd0e4}
.nav-parent:after{content:'▾';float:right;color:#91a8bf}.nav-group:hover>.nav-parent:after,.nav-group.open>.nav-parent:after{content:'▴'}
.nav-tools{margin-top:10px;padding-top:10px;border-top:1px solid rgba(255,255,255,.11)}.panel-switches{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin:10px 2px}
.panel-switch{display:flex!important;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:8px 4px!important;border:1px solid rgba(255,255,255,.14);background:#142b44!important;min-height:68px}
.panel-switch .switch-label{font-size:10px;color:#9fb6ca;margin-bottom:4px}.panel-switch .switch-icon{width:26px;height:26px;border-radius:50%;background:#23496c;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:800;font-size:11px}.panel-switch:hover{background:#1b3b5b!important}
.config-tools{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.config-tool{border:1px solid #dce4ef;border-radius:12px;padding:16px;background:#f8fbff}.config-tool strong{display:block;margin-bottom:5px}
.month-compact summary{cursor:pointer;font-weight:700;color:#2455cc}.month-compact .detail-list{margin-top:7px;padding:8px 10px;background:#f5f8fc;border-radius:9px}.month-compact .detail-list div{padding:4px 0;border-bottom:1px solid #e5ebf3}.month-compact .detail-list div:last-child{border-bottom:0}
@media(max-width:900px){aside{overflow:visible}.nav-group>.nav-sub{display:flex;gap:4px;padding-left:0}.panel-switches{display:flex}.panel-switch{min-width:95px}.config-tools{grid-template-columns:1fr}}

/* v0.10.1 mobile hamburger */
.mobile-nav-toggle{display:none;width:44px;height:40px;border:1px solid rgba(255,255,255,.25);background:#173654;color:#fff;border-radius:9px;font-size:24px;line-height:1;align-items:center;justify-content:center;margin:0 0 10px;cursor:pointer}.mobile-nav-title{display:none;color:#fff;font-weight:800;margin-left:10px}.mobile-nav-row{display:none;align-items:center;justify-content:space-between}
@media(max-width:900px){aside{position:static!important;padding:12px 16px!important}.brand-logo{max-width:150px;margin-bottom:6px}.brand{margin:0 0 8px 0!important;font-size:17px}.mobile-nav-row{display:flex}.mobile-nav-toggle{display:flex}.nav{display:none!important;flex-direction:column!important;overflow:visible!important;width:100%}.nav.mobile-open{display:flex!important}.nav a{white-space:normal!important;width:100%}.cmus-nav-section,.xsec{width:100%}.cmus-nav-label,.xlabel{display:block!important}.cmus-switch-row,.panel-switches{display:grid!important;grid-template-columns:1fr 1fr}.nav-group>.nav-sub{display:block!important;padding-left:10px}.content{padding:18px!important}}

/* v0.10.1 mobile header: logo + hamburger; navigation closed by default */
@media(max-width:900px){
  .layout{display:block!important;min-height:100vh}
  aside{position:static!important;width:100%!important;height:auto!important;min-height:0!important;max-height:none!important;padding:0!important;overflow:visible!important}
  aside>.brand-logo,aside>.brand,aside>.mobile-nav-row{display:none!important}
  aside>.cmus-mobile-head{display:flex!important}
  aside>.nav{display:none!important;flex-direction:column!important;width:100%!important;overflow:visible!important}
  aside>.nav.mobile-open{display:flex!important}
  .content{padding:18px!important}
}
