:root{
  color-scheme:light;
  --green:#17643b;--green-dark:#104b2c;--green-soft:#e8f5ec;
  --teal:#087f8c;--teal-soft:#e5f5f6;
  --blue:#3568b8;--blue-soft:#edf3ff;
  --purple:#7652a8;--purple-soft:#f2edfa;
  --orange:#b96a19;--orange-soft:#fff2e4;
  --rose:#b94d63;--rose-soft:#fff0f2;
  --bg:#f4f7f5;--surface:#fff;--line:#e3eae5;
  --text:#1b2b21;--muted:#66776d;--subtle:#8b9990;
  --shadow:0 5px 18px rgba(27,55,37,.045);
}
*{box-sizing:border-box}
html{font-size:16px;-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--text);font:16px/1.6 Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;-webkit-font-smoothing:antialiased}
button,input,select,textarea{font:inherit}
button{cursor:pointer;touch-action:manipulation}
button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid rgba(8,127,140,.24);outline-offset:2px}
.app-shell{min-height:100vh;display:flex}
.sidebar{width:270px;background:var(--surface);border-right:1px solid var(--line);padding:24px 16px;display:flex;flex-direction:column;flex-shrink:0;min-height:100vh;position:sticky;top:0;height:100vh}
.brand{display:flex;align-items:center;gap:12px;padding:0 9px 30px}
.brand-mark{width:44px;height:44px;border-radius:14px;background:linear-gradient(145deg,#23834e,var(--green-dark));color:#fff;display:grid;place-items:center;font-weight:850;font-size:23px;box-shadow:0 5px 12px #17643b30}
.brand strong,.brand small,.user-card strong,.user-card small{display:block}
.brand strong{font-size:16px;letter-spacing:-.2px}.brand small,.user-card small{font-size:12px;color:var(--muted)}
.nav-label{font-size:11px;font-weight:800;letter-spacing:1.15px;color:#98a59c;padding:0 12px 11px}
#side-nav{display:grid;gap:6px}
.nav-item{border:0;background:transparent;color:#53645a;padding:12px 13px;border-radius:11px;text-align:left;display:flex;align-items:center;gap:12px;font-weight:650;font-size:14px;min-height:46px;transition:background .16s,color .16s,transform .16s}
.nav-item span{width:21px;text-align:center;font-size:19px}
.nav-item:hover{background:#f2f7f3;color:var(--green)}.nav-item.active{background:var(--green-soft);color:var(--green);box-shadow:inset 3px 0 0 var(--green)}
.sidebar-bottom{margin-top:auto}.user-card{border-top:1px solid var(--line);margin-top:18px;padding:18px 8px 0;display:flex;align-items:center;gap:11px}
.avatar{height:39px;width:39px;border-radius:13px;background:var(--purple-soft);color:var(--purple);display:grid;place-items:center;font-weight:850;font-size:12px}
.main{min-width:0;flex:1}.topbar{min-height:82px;background:rgba(255,255,255,.96);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:12px 34px;position:sticky;top:0;z-index:5;backdrop-filter:blur(12px)}
.eyebrow{font-size:10px;letter-spacing:1.25px;color:var(--subtle);font-weight:850}.topbar strong{font-size:19px;letter-spacing:-.3px}.top-actions{display:flex;align-items:center;gap:12px}.year-label{font-size:13px;color:var(--muted);font-weight:600}
select,input{border:1px solid #d9e3dc;border-radius:10px;padding:11px 13px;background:#fff;color:var(--text);min-height:44px}select:hover,input:hover{border-color:#aabdb0}
.online-pill{font-size:12px;background:#f0f6f1;color:#4f6756;padding:8px 12px;border-radius:24px;white-space:nowrap}.online-pill i{display:inline-block;width:8px;height:8px;border-radius:50%;background:#d69e27;margin-right:6px}
.content{padding:30px 34px 54px;max-width:1600px;margin:0 auto;width:100%}
.welcome{display:flex;justify-content:space-between;align-items:flex-start;gap:18px;margin-bottom:23px}.welcome h1{font-size:27px;line-height:1.25;margin:0 0 7px;letter-spacing:-.7px}.welcome p{margin:0;color:var(--muted);font-size:15px}
.btn{border:0;border-radius:10px;padding:12px 17px;font-weight:750;font-size:14px;min-height:44px;transition:filter .15s,transform .15s}.btn:active{transform:translateY(1px)}.btn-primary{background:linear-gradient(135deg,#1c7845,var(--green-dark));color:#fff;box-shadow:0 4px 10px #17643b20}.btn-outline{background:#fff;border:1px solid #dce6df;color:#34483a}.btn:hover{filter:brightness(.97)}
.grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}
.stat{background:var(--surface);border:1px solid var(--line);border-radius:15px;padding:19px;box-shadow:var(--shadow);position:relative;overflow:hidden}.stat:nth-child(1){border-top:3px solid var(--blue)}.stat:nth-child(2){border-top:3px solid var(--green)}.stat:nth-child(3){border-top:3px solid var(--purple)}.stat:nth-child(4){border-top:3px solid var(--orange)}
.stat-top{display:flex;justify-content:space-between;align-items:center;color:var(--muted);font-size:13px;font-weight:650;gap:8px}.stat-icon{height:37px;width:37px;border-radius:12px;background:var(--blue-soft);color:var(--blue);display:grid;place-items:center;font-size:19px;flex-shrink:0}.stat:nth-child(2) .stat-icon{background:var(--green-soft);color:var(--green)}.stat:nth-child(3) .stat-icon{background:var(--purple-soft);color:var(--purple)}.stat:nth-child(4) .stat-icon{background:var(--orange-soft);color:var(--orange)}
.stat-value{font-size:27px;font-weight:850;margin:13px 0 3px;letter-spacing:-.8px;line-height:1.25}.stat-note{font-size:12px;color:var(--muted)}
.panel{background:var(--surface);border:1px solid var(--line);border-radius:15px;padding:21px;margin-top:17px;box-shadow:var(--shadow)}.panel-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px}.panel h2{font-size:16px;margin:0;letter-spacing:-.2px}.muted{color:var(--muted)}
.empty{padding:38px 16px;text-align:center;color:var(--muted);font-size:14px}.empty-icon{width:49px;height:49px;border-radius:15px;background:var(--teal-soft);color:var(--teal);display:grid;place-items:center;margin:0 auto 12px;font-size:22px}.empty strong{display:block;color:#34483a;margin-bottom:5px;font-size:15px}
.two-col{display:grid;grid-template-columns:1.4fr 1fr;gap:17px}.progress{height:9px;border-radius:12px;background:#edf1ed;overflow:hidden}.progress span{height:100%;display:block;background:linear-gradient(90deg,#22985a,#52b788);width:0}.legend{display:flex;justify-content:space-between;font-size:13px;margin:10px 0;color:var(--muted)}
.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:10px}table{width:100%;border-collapse:collapse;min-width:650px}th,td{text-align:left;padding:14px 12px;border-bottom:1px solid #edf1ed;font-size:13px}th{font-size:11px;text-transform:uppercase;letter-spacing:.65px;color:#718078;background:#f7faf8;font-weight:800}td{color:#33483a}tbody tr:hover{background:#fbfdfb}tbody tr:last-child td{border-bottom:0}
.tag{display:inline-block;border-radius:20px;padding:5px 10px;font-size:11px;font-weight:750;background:#f0f4f1;color:#5b6c61}.tag.green{background:#e8f6eb;color:#23733e}.tag.amber{background:#fff5db;color:#946b12}
.toolbar{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:15px}.toolbar input{min-width:230px}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.field{display:grid;gap:7px}.field label{font-size:13px;color:#53645a;font-weight:750}.field input,.field select{width:100%;font-size:15px}.notice{padding:14px 16px;border-radius:11px;background:var(--teal-soft);border:1px solid #d4ebed;color:#315e63;font-size:13px;margin:13px 0}
.mobile-menu{display:none;border:0;background:transparent;font-size:23px;color:var(--green);padding:8px}.bottom-nav{display:none}.toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%,20px);background:#183c27;color:#fff;padding:12px 17px;border-radius:11px;font-size:13px;opacity:0;pointer-events:none;transition:.2s;z-index:20;box-shadow:0 8px 25px #0002;max-width:calc(100vw - 30px)}.toast.show{opacity:1;transform:translate(-50%,0)}
/* Large desktop: use available space without stretching reading widths excessively. */
@media(min-width:1400px){.sidebar{width:286px;padding:28px 18px}.content{padding:36px 42px}.grid{gap:19px}.stat{padding:22px}.panel{padding:24px}}
/* Tablet and compact laptop */
@media(max-width:1100px){.sidebar{width:238px}.grid{grid-template-columns:repeat(2,minmax(0,1fr))}.content{padding:24px}.two-col{grid-template-columns:1fr}}
/* Phone: larger type, touch targets and fixed bottom navigation */
@media(max-width:700px){
  html{font-size:17px}.sidebar{display:none;position:fixed;z-index:15;inset:0 auto 0 0;width:min(300px,86vw);height:100dvh;min-height:100dvh;box-shadow:12px 0 35px #0002}.sidebar.open{display:flex}
  .topbar{min-height:72px;padding:10px 13px;gap:8px}.mobile-menu{display:block}.topbar>div:nth-child(2){margin-right:auto;margin-left:3px}.eyebrow{font-size:9px}.topbar strong{font-size:17px}.top-actions{gap:6px}.top-actions select{min-height:42px;padding:8px 10px;font-size:14px}.year-label{display:none}.online-pill{display:none}
  .content{padding:21px 14px 104px}.welcome{gap:12px;margin-bottom:17px;align-items:center}.welcome h1{font-size:23px;line-height:1.3}.welcome p{font-size:14px;line-height:1.5}.welcome .btn{font-size:0;padding:10px 12px;min-width:44px}.welcome .btn:after{content:"＋";font-size:20px}
  .grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.stat{padding:14px 13px;border-radius:13px}.stat-top{font-size:12px;line-height:1.35;align-items:flex-start}.stat-icon{height:34px;width:34px;font-size:17px}.stat-value{font-size:21px;margin:11px 0 4px;overflow-wrap:anywhere}.stat-note{font-size:11px;line-height:1.4}
  .panel{padding:16px 14px;margin-top:13px;border-radius:13px}.panel-head{margin-bottom:12px}.panel h2{font-size:15px}.empty{padding:29px 10px;font-size:13px}.empty strong{font-size:14px}.two-col{grid-template-columns:1fr;gap:0}
  .btn{min-height:46px;padding:12px 14px;font-size:14px}.toolbar{gap:8px}.toolbar input{min-width:100%;width:100%}.form-grid{grid-template-columns:1fr;gap:13px}.field label{font-size:13px}.field input,.field select{min-height:48px;font-size:16px}
  .table-wrap{margin:0 -2px}table{min-width:680px}th,td{padding:13px 10px;font-size:13px}
  .bottom-nav{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));position:fixed;bottom:0;left:0;right:0;background:rgba(255,255,255,.97);border-top:1px solid var(--line);padding:8px 3px calc(8px + env(safe-area-inset-bottom));z-index:10;backdrop-filter:blur(12px);box-shadow:0 -5px 18px #183c2708}.bottom-nav button{border:0;background:none;color:#78877e;font-size:10px;line-height:1.2;display:grid;gap:4px;justify-items:center;align-content:center;min-height:48px;padding:3px 0}.bottom-nav button span{font-size:20px;line-height:1}.bottom-nav button.active{color:var(--green);font-weight:850}.toast{bottom:calc(78px + env(safe-area-inset-bottom));font-size:13px}
}
@media(max-width:360px){.content{padding-left:11px;padding-right:11px}.grid{gap:8px}.stat{padding:12px 10px}.stat-value{font-size:19px}.stat-top{font-size:11px}.bottom-nav button{font-size:9px}}
/* Respect users who prefer reduced motion. */
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}
