:root{--cream: #f8f1ea;--cream-50: #fdfbf9;--cream-200: #ece3db;--brown: #743a00;--brown-soft: #b85c00;--coral: #fc7250;--dark: #19191b;--subtle-1: #61646b;--subtle-2: #afb1b6;--green: #28967b;--purple: #59328a;--wash: #e4e8ce;--radius: 16px}*{box-sizing:border-box}body{margin:0;font:15px/1.55 -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;color:var(--dark);background:linear-gradient(180deg,#c3deeb 0%,#dae9e7 18%,#eeeadf 38%,var(--wash) 100%) no-repeat;background-attachment:fixed;min-height:100vh}a{color:var(--brown)}.wrap{max-width:1180px;margin:0 auto;padding:22px 20px 80px}header.top{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 18px;margin-bottom:22px;background:#fffdf9db;border:1px solid rgba(255,255,255,.68);border-radius:20px;box-shadow:0 6px 16px #5a462812}header.top .brand{display:flex;align-items:baseline;gap:10px}header.top h1{font-size:1.05rem;margin:0;letter-spacing:-.01em;color:var(--brown)}header.top .sub{font-size:.78rem;color:var(--subtle-1)}header.top .who{font-size:.8rem;color:var(--subtle-1)}button{font:inherit;cursor:pointer;border-radius:999px;border:1px solid var(--cream-200);background:#fff;color:var(--dark);padding:8px 14px}button.primary{background:var(--dark);color:#fff;border-color:var(--dark)}button:disabled{opacity:.55;cursor:default}.grid{display:grid;grid-template-columns:repeat(12,1fr);gap:16px}.card{grid-column:span 12;background:#fffdf9eb;border:1px solid rgba(255,255,255,.7);border-radius:var(--radius);padding:16px 18px 18px;box-shadow:0 6px 16px #5a462812}.card.half{grid-column:span 6}.card.third{grid-column:span 4}@media (max-width: 900px){.card.half,.card.third{grid-column:span 12}}.card h2{font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;color:var(--subtle-1);margin:0 0 12px;font-weight:700}.card .hint{font-size:.78rem;color:var(--subtle-2);margin-top:10px}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}@media (max-width: 700px){.stats{grid-template-columns:repeat(2,1fr)}}.stat{background:var(--cream-50);border-radius:12px;padding:11px 12px}.stat .v{font-size:1.35rem;font-weight:800;letter-spacing:-.02em}.stat .l{font-size:.66rem;text-transform:uppercase;letter-spacing:.07em;color:var(--subtle-2);font-weight:700;margin-top:2px}.chart{width:100%;height:auto;display:block;overflow:visible}.axis{font-size:9px;fill:var(--subtle-2)}.gridline{stroke:#61646b24;stroke-width:1}.heat{display:flex;gap:3px;overflow-x:auto;padding-bottom:4px}.heat .col{display:flex;flex-direction:column;gap:3px}.heat i{width:11px;height:11px;border-radius:3px;display:block;background:#61646b1f}.heat i.l1{background:#d8e6cf}.heat i.l2{background:#a9cf9a}.heat i.l3{background:#6fae63}.heat i.l4{background:var(--green)}.legend{display:flex;align-items:center;gap:6px;font-size:.72rem;color:var(--subtle-2);margin-top:10px}.legend i{width:11px;height:11px;border-radius:3px;display:block}table{width:100%;border-collapse:collapse;font-size:.88rem}th,td{text-align:left;padding:7px 8px;border-bottom:1px solid var(--cream-200)}th{font-size:.68rem;text-transform:uppercase;letter-spacing:.07em;color:var(--subtle-2);font-weight:700}td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}.bars{display:flex;flex-direction:column;gap:8px}.bar-row{display:grid;grid-template-columns:92px 1fr 54px;align-items:center;gap:10px;font-size:.82rem}.bar-track{height:8px;background:#61646b1f;border-radius:4px;overflow:hidden}.bar-fill{height:100%;background:var(--purple);border-radius:4px}.bar-row .n{text-align:right;font-variant-numeric:tabular-nums;color:var(--subtle-1)}.login{max-width:380px;margin:12vh auto}.login .card{padding:24px}.login h1{font-size:1.3rem;margin:0 0 4px;color:var(--brown)}.login p.lead{font-size:.88rem;color:var(--subtle-1);margin:0 0 18px}.login label{display:block;font-size:.72rem;text-transform:uppercase;letter-spacing:.07em;color:var(--subtle-2);font-weight:700;margin:12px 0 4px}.login input{width:100%;font:inherit;padding:10px 12px;border-radius:10px;border:1px solid var(--cream-200);background:#fff}.login button{width:100%;margin-top:16px}.err{color:#b3261e;font-size:.82rem;margin-top:10px}.empty{color:var(--subtle-1);font-size:.88rem;padding:10px 0}.spinner{color:var(--subtle-1);font-size:.85rem;padding:18px 0}
