:root{font-family:-apple-system,BlinkMacSystemFont,"Noto Sans JP","Segoe UI",sans-serif;color:#203c3e;background:#f3f6f6;font-size:16px;font-synthesis:none}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button,a,select{touch-action:manipulation}button{cursor:pointer}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #6e9021;outline-offset:3px}aside{position:fixed;width:240px;height:100dvh;background:#103e40;color:#e9f3f2;padding:34px 24px;display:flex;flex-direction:column}.brand{color:inherit;text-decoration:none;display:flex;gap:12px;align-items:center;font-weight:750;font-size:25px;letter-spacing:-.5px}.brand small{display:block;font-size:10px;letter-spacing:2px;margin-top:4px;color:#a6c2c1}.logo{background:#d8f36a;color:#153e3e;width:43px;height:46px;border-radius:13px;display:grid;place-items:center;font-size:33px}.nav-label{font-size:12px;color:#9abab9;margin:54px 12px 14px}nav{display:grid;gap:8px}nav button{border:0;background:none;color:#c2d7d6;text-align:left;padding:15px 12px;border-radius:9px;font-size:15px}nav button.active{background:#d8f36a;color:#183c3c;font-weight:700}nav button:disabled{opacity:.4;cursor:not-allowed}.side-foot{margin-top:auto;display:flex;align-items:center;gap:10px;border-top:1px solid #36595a;padding-top:20px;font-size:12px}.mini-logo{font-size:28px;font-weight:800;color:#d8f36a}.side-foot small{display:block;color:#9abab9;margin-top:6px}.app{margin-left:240px}header{height:86px;display:flex;justify-content:space-between;align-items:center;padding:0 42px;background:#fff;border-bottom:1px solid #e1e8e7;font-size:14px}.badge{display:inline-block;padding:4px 9px;background:#eaf2d2;color:#486020;border-radius:5px;font-size:12px;margin-left:9px}.role{font-size:12px;color:#587072;display:flex;align-items:center;gap:10px}select,input{border:1px solid #cbd7d7;background:#fff;border-radius:7px;padding:10px 12px;color:#284648;max-width:100%}.demo{font-size:12px;background:#edf3e6;color:#4c6238;padding:10px 42px;line-height:1.6}main{max-width:1300px;margin:auto;padding:40px 42px;min-height:76vh}.eyebrow{color:#688183;font-size:12px;letter-spacing:2px;font-weight:700}h1{font-size:29px;letter-spacing:-.6px;margin:10px 0 10px}h2{font-size:19px;margin:0 0 16px}p{line-height:1.7}.muted{color:#688083;font-size:14px}.heading{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:30px}.heading p{margin:0}.controls{display:flex;gap:10px;flex-wrap:wrap}.segmented{display:inline-flex;background:#e5eceb;padding:4px;border-radius:9px;gap:3px}.segmented button{border:0;background:transparent;color:#5f7778;border-radius:6px;padding:9px 15px;font-size:14px}.segmented .selected{background:white;color:#173f40;box-shadow:0 2px 4px #143a3a0a;font-weight:650}.ranking-hero{background:#173f41;color:#fff;padding:25px 28px;border-radius:14px;display:flex;justify-content:space-between;align-items:center;margin-bottom:25px;gap:20px}.ranking-hero .muted{color:#b8d0cd}.ranking-hero h2{font-size:21px;margin:8px 0}.rank-big{font-size:52px;font-weight:750;color:#d8f36a;white-space:nowrap}.rank-big small{font-size:17px;margin-left:7px}.panel{background:#fff;border:1px solid #e0e8e7;border-radius:13px;overflow:hidden}.panel-head{padding:22px 26px;display:flex;justify-content:space-between;align-items:center;gap:15px}.panel-head h2{margin:0}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;white-space:nowrap}th{font-size:12px;letter-spacing:.5px;color:#6d8183;text-align:left;background:#f9fbfb;padding:14px 25px;font-weight:600}td{border-top:1px solid #edf1f1;padding:18px 25px;font-size:15px}tr.self{background:#f2f8e8}.avatar{display:inline-grid;place-items:center;width:39px;height:39px;border-radius:12px;background:#e3eeed;color:#2c6260;margin-right:13px;font-weight:700}.row-name{display:flex;align-items:center}.rank{font-size:20px;font-weight:750;color:#547171}.top-rank{color:#8b711e}.pill{font-size:12px;border-radius:5px;background:#e7efec;color:#526e67;padding:4px 8px;margin-left:10px}.privacy{padding:15px 25px;border-top:1px solid #e4ebe9;font-size:12px;color:#718486;line-height:1.7}.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin:23px 0}.card{background:white;border:1px solid #dce6e3;border-radius:12px;padding:24px}.card.primary{background:#e6f1d6;border-color:#d3e3bc}.card .label{font-size:14px;color:#526d6d}.value{font-size:34px;letter-spacing:-1px;font-weight:750;margin:16px 0 4px}.value small{font-size:14px;margin-left:7px;font-weight:400;letter-spacing:0}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:22px}.padded{padding:25px}.metric-line{display:flex;justify-content:space-between;padding:17px 0;border-bottom:1px solid #edf1ef;font-size:14px}.metric-line:last-child{border:0}.bar-row{display:grid;grid-template-columns:45px 1fr 55px;gap:12px;align-items:center;margin:22px 0;font-size:14px}.bar-track{height:10px;background:#edf2ee;border-radius:9px}.bar-fill{height:100%;background:#44776c;border-radius:9px}.btn{border:1px solid #cddbd6;border-radius:7px;background:#fff;color:#244c47;padding:11px 17px;font-size:14px;font-weight:650}.btn.primary{background:#173f41;border-color:#173f41;color:white}.btn:disabled{opacity:.4;cursor:not-allowed}.notice{padding:14px 17px;background:#f5f7ec;border-left:3px solid #9bb85a;border-radius:4px;font-size:14px;line-height:1.7;margin:20px 0}.form-grid{display:grid;gap:14px}.form-grid label{display:grid;gap:7px;font-size:14px}.admin-tabs{margin-bottom:23px}.admin-row{display:grid;grid-template-columns:1fr 1fr 1.4fr;gap:10px;padding:13px 0;border-bottom:1px solid #edf1ef}.admin-row input{width:100%;font-size:14px}.admin-row span{font-size:14px;align-self:center}.upload{border:1px dashed #aebfb9;background:#f7faf8;padding:30px;text-align:center;border-radius:10px;margin:20px 0}.upload p{font-size:14px;color:#607874}.event-item{padding:12px 0;border-top:1px solid #e7eeeb;font-size:14px}.error{color:#a53030}footer{padding:20px 42px;color:#7d9291;font-size:12px;display:flex;justify-content:space-between;gap:16px}#toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);background:#143f40;color:#fff;box-shadow:0 8px 25px #122c3c22;padding:14px 22px;border-radius:9px;display:none;z-index:5;font-size:14px;max-width:90vw}#toast.show{display:block}@media(min-width:1450px){main{padding-top:50px}}@media(max-width:1050px){aside{width:200px;padding:30px 17px}.app{margin-left:200px}header{padding:0 24px}main{padding:30px 24px}.demo{padding:10px 24px}.heading{align-items:flex-start;flex-direction:column}.cards{gap:10px}.card{padding:18px}.value{font-size:28px}}@media(max-width:700px){aside{position:static;width:auto;height:auto;padding:18px 18px 10px}.brand{font-size:21px}.brand small{font-size:9px}.logo{width:36px;height:38px;font-size:28px}.nav-label,.side-foot{display:none}nav{display:flex;margin-top:19px;gap:5px}nav button{font-size:13px;flex:1;padding:12px 7px;text-align:center}.app{margin:0}header{height:auto;padding:14px 18px;gap:10px;flex-wrap:wrap}.role{width:100%;justify-content:space-between}.role select{max-width:80%;font-size:13px}.demo{padding:9px 18px}main{padding:25px 18px}h1{font-size:25px}.heading{gap:18px;margin-bottom:23px}.controls{width:100%;justify-content:space-between}.segmented button{padding:9px 12px}.ranking-hero{padding:21px 20px}.ranking-hero h2{font-size:17px}.rank-big{font-size:43px}.cards{grid-template-columns:1fr;gap:10px}.card{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:5px}.card .muted{width:100%;margin:0}.value{margin:0}.two-col{grid-template-columns:1fr}.panel-head{padding:19px 17px}td,th{padding:15px 17px}.privacy{padding:14px 17px}.avatar{width:32px;height:34px;margin-right:9px}.admin-row{grid-template-columns:1fr}.admin-row.head{display:none}.admin-row span{font-weight:650}.padded{padding:20px}.bar-row{margin:20px 0}footer{padding:20px 18px;flex-direction:column}.rank-name{max-width:170px;white-space:normal}.heading p{font-size:13px}}@media(prefers-reduced-motion:no-preference){button{transition:background .15s,opacity .15s}.panel,.cards{animation:appear .2s ease-out}@keyframes appear{from{opacity:.5;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}}
