:root{--primary:#4338CA;--primary-dark:#3730A3;--primary-soft:#EEF0FE;--primary-faint:#F6F7FE;
--accent:#D97706;--success:#067647;--danger:#B42318;
--bg:#F8FAFC;--surface:#FFFFFF;--faint:#F1F5F9;--border:#E2E8F0;--border-strong:#CBD5E1;
--ink:#0F172A;--muted:#475569;--radius:12px;--shadow:0 1px 2px rgba(15,23,42,.05),0 4px 16px rgba(15,23,42,.05)}
*{box-sizing:border-box}html,body{margin:0;padding:0;overflow-x:hidden}
body{font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;background:var(--bg);color:var(--ink);line-height:1.6;font-size:16px;-webkit-font-smoothing:antialiased}
a{color:var(--primary-dark)}a:hover{color:var(--primary)}
:focus-visible{outline:3px solid var(--primary);outline-offset:2px;border-radius:4px}
header.top{background:var(--ink);color:#fff;padding:0 20px;min-height:60px;display:flex;flex-wrap:wrap;gap:6px 22px;align-items:center;position:sticky;top:0;z-index:60;box-shadow:0 1px 0 rgba(15,23,42,.2)}
header.top .brand{font-size:20px;font-weight:700;color:#fff;text-decoration:none;letter-spacing:-.01em;display:flex;align-items:center;gap:9px;min-height:44px}
header.top .brand span{color:#A5B4FC}
header.top nav{display:flex;flex-wrap:wrap}
header.top nav a{color:#E2E8F0;text-decoration:none;padding:10px 10px;font-size:15px;min-height:44px;display:inline-flex;align-items:center}
header.top nav a:hover{color:#fff;text-decoration:underline}
.layout{display:flex;max-width:1200px;margin:0 auto;align-items:flex-start;gap:8px}
aside.side{width:236px;flex:0 0 236px;padding:22px 12px;position:sticky;top:60px;max-height:calc(100vh - 60px);overflow:auto;font-size:14px}
aside.side h3{margin:16px 8px 6px;font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}
aside.side ul{list-style:none;margin:0;padding:0}
aside.side li{margin:1px 0}
aside.side a{text-decoration:none;color:var(--ink);display:flex;align-items:center;gap:8px;padding:7px 8px;border-radius:8px;min-height:36px}
aside.side a:hover{background:var(--faint)}
aside.side a.on{font-weight:700;background:var(--primary-soft);color:var(--primary-dark)}
.flagdot{width:12px;height:12px;border-radius:50%;flex:0 0 12px;border:1px solid rgba(15,23,42,.18)}
main{flex:1;min-width:0;padding:26px 22px 64px}
h1{font-size:clamp(1.75rem,3.6vw,2.5rem);line-height:1.15;letter-spacing:-.02em;margin:6px 0 12px;font-weight:750}
h2{font-size:1.35rem;letter-spacing:-.015em;margin:30px 0 10px;font-weight:700}
h3{font-size:1.05rem;margin:16px 0 6px}
p.lede{font-size:1.13rem;color:var(--ink);max-width:46rem}
.crumbs{font-size:13px;color:var(--muted);margin-bottom:10px}
.crumbs a{color:var(--muted)}
.tblwrap{overflow-x:auto;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}
table{border-collapse:collapse;width:100%;min-width:520px;font-size:15px}
th,td{padding:9px 14px;text-align:left;border-bottom:1px solid var(--border)}
thead th{background:var(--ink);color:#fff;font-weight:600;position:sticky;top:0}
tbody tr:nth-child(even){background:var(--primary-faint)}
tbody tr:hover{background:var(--primary-soft)}
tr td:first-child{white-space:nowrap;font-variant-numeric:tabular-nums}
.meta{font-size:13px;color:var(--muted);margin-top:16px}
.note{background:#FFFBEB;border:1px solid #FDE68A;border-radius:var(--radius);padding:12px 16px;margin:16px 0}
.faq{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:8px 20px;margin:20px 0;box-shadow:var(--shadow)}
.faq h3{margin:14px 0 4px;font-size:16px}
.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:18px 20px;margin:14px 0;box-shadow:var(--shadow)}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:12px}
.grid a{display:block;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px;text-decoration:none;color:var(--ink);box-shadow:var(--shadow);transition:border-color .15s,transform .15s;min-height:44px}
.grid a:hover{border-color:var(--primary);transform:translateY(-1px);color:var(--ink)}
.grid a small{color:var(--muted)}
footer.site{border-top:1px solid var(--border);padding:26px 20px 96px;text-align:center;color:var(--muted);font-size:14px;background:var(--surface)}
.mobbar{display:none}.botnav{display:none}
label{font-size:14px;font-weight:600}
select,input[type=date],input[type=text],input[type=search]{font-size:16px;padding:10px 12px;margin:4px 6px 4px 0;border:1px solid var(--border-strong);border-radius:10px;background:#fff;min-height:44px;color:var(--ink)}
button,.btn{background:var(--surface);color:var(--primary-dark);border:1px solid var(--border-strong);padding:10px 18px;font-size:15px;font-weight:600;border-radius:10px;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;gap:8px;min-height:44px;transition:background .15s,border-color .15s}
button:hover,.btn:hover{border-color:var(--primary);color:var(--primary)}
.btn-primary,button.primary{background:var(--primary);color:#fff;border-color:var(--primary)}
.btn-primary:hover,button.primary:hover{background:var(--primary-dark);color:#fff}
.result{font-size:1.15rem;margin:14px 0;font-weight:600}
.result .sub{font-size:.95rem;font-weight:400;color:var(--muted);display:block;margin-top:4px}
.result.err{color:var(--danger);font-weight:600}
.statrow{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:12px;margin:18px 0}
.stat{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px;box-shadow:var(--shadow)}
.stat strong{display:block;font-size:1.7rem;line-height:1.1;letter-spacing:-.02em;color:var(--primary-dark);font-variant-numeric:tabular-nums}
.stat span{font-size:.85rem;color:var(--muted)}
.dlrow{display:flex;flex-wrap:wrap;gap:10px;margin:16px 0}
.bars{width:100%;height:auto;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:10px 6px 2px;box-shadow:var(--shadow)}
.cal-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(238px,1fr));gap:14px;margin:14px 0}
.cal-month{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:14px 14px 10px;box-shadow:var(--shadow)}
.cal-month h3{margin:0 0 8px;font-size:.98rem}
.cal-head,.cal-days{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}
.cal-head span{font-size:.68rem;color:var(--muted);text-align:center;padding:2px 0;font-weight:600}
.cal-cell{font-size:.8rem;text-align:center;padding:4px 0;border-radius:6px;font-variant-numeric:tabular-nums;line-height:1.5}
.cal-cell.we{color:#94A3B8}
.cal-cell.hol{background:var(--primary-soft);color:var(--primary-dark);font-weight:700;box-shadow:inset 0 0 0 1px #C7CDF5}
.cal-cell.today{box-shadow:inset 0 0 0 2px var(--accent);font-weight:800}
.cal-cell.hol.today{box-shadow:inset 0 0 0 2px var(--accent),inset 0 0 0 3px #C7CDF5}
.cal-list{list-style:none;margin:8px 0 2px;padding:8px 0 0;border-top:1px dashed var(--border);font-size:.8rem;color:var(--muted)}
.cal-list li{margin:2px 0}
.cal-list span{display:inline-block;min-width:1.4em;font-weight:700;color:var(--primary-dark)}
.cal-legend{font-size:.85rem;color:var(--muted);display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.lg{display:inline-block;width:14px;height:14px;border-radius:4px;vertical-align:-2px}
.lg-hol{background:var(--primary-soft);box-shadow:inset 0 0 0 1px #C7CDF5}.lg-today{background:#fff;box-shadow:inset 0 0 0 2px var(--accent)}.lg-we{background:var(--faint)}
.hero{background:var(--ink);color:#fff;border-radius:16px;padding:34px 34px 28px;margin:6px 0 22px;position:relative;overflow:hidden}
.hero h1{color:#fff;margin-top:0}
.hero p{color:#CBD5E1;max-width:38rem}
.hero .dotmap{position:absolute;right:10px;top:16px;opacity:.5;pointer-events:none}
.hero .hero-cta{display:flex;flex-wrap:wrap;gap:10px;margin-top:18px;position:relative}
.hero .btn-primary{background:#fff;color:var(--primary-dark);border-color:#fff}
.hero .btn-primary:hover{background:var(--primary-soft)}
.hero .btn{background:transparent;color:#fff;border-color:#64748B}
.hero .btn:hover{border-color:#fff;color:#fff}
.tool{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:18px 20px;box-shadow:var(--shadow);margin:16px 0}
.tool .fields{display:flex;flex-wrap:wrap;gap:10px;align-items:end}
.tool .fields label{display:flex;flex-direction:column;gap:2px}
.count-line{font-size:.95rem;color:var(--muted);margin:10px 0}
.empty{display:none;background:var(--faint);border:1px dashed var(--border-strong);border-radius:var(--radius);padding:26px 20px;text-align:center;color:var(--muted);margin:14px 0}
.empty strong{display:block;font-size:1.05rem;color:var(--ink);margin-bottom:4px}
.skel{margin:14px 0}
.skel div{height:38px;border-radius:8px;margin:6px 0;background:linear-gradient(90deg,var(--faint) 25%,#E8EDF5 50%,var(--faint) 75%);background-size:200% 100%;animation:sh 1.1s infinite}
@keyframes sh{to{background-position:-200% 0}}
.chip{display:inline-flex;align-items:center;gap:7px;background:var(--surface);border:1px solid var(--border);border-radius:999px;padding:8px 14px;text-decoration:none;color:var(--ink);font-size:.92rem;min-height:44px}
.chip:hover{border-color:var(--primary)}
.chips{display:flex;flex-wrap:wrap;gap:9px;margin:12px 0}
svg.ic{flex:0 0 auto}
@media(max-width:760px){
 aside.side{display:none}.layout{display:block}main{padding:18px 14px 64px}
 .mobbar{display:block;background:var(--surface);border-bottom:1px solid var(--border);padding:10px 14px}
 .mobbar select{width:100%}
 .botnav{display:flex;position:fixed;left:0;right:0;bottom:0;background:var(--ink);z-index:50}
 .botnav a{flex:1;text-align:center;color:#fff;text-decoration:none;padding:13px 2px;font-size:13px;min-height:44px}
 header.top{position:static;padding:8px 14px}
 .hero{padding:24px 18px}.hero .dotmap{display:none}
 .cal-grid{grid-template-columns:1fr}
 table{min-width:460px}
}
@media(prefers-reduced-motion:reduce){.skel div{animation:none}.grid a{transition:none}}
