:root{--green:#123e35;--green2:#246557;--gold:#d6b573;--ink:#203a34;--muted:#7b8882;--paper:#f4f5ef;--line:#e6eae1;--red:#bf5d59;--blue:#5d82b3;--mint:#edf3e8;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans SC",sans-serif;color:var(--ink);background:var(--paper);font-synthesis:none}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button{cursor:pointer;-webkit-tap-highlight-color:transparent}button:disabled{opacity:.42;cursor:not-allowed}button:focus-visible,a:focus-visible{outline:3px solid var(--gold);outline-offset:3px}button,a,input,select{touch-action:manipulation}button{border:0}input,select{min-width:0;border:1px solid #dce3d8;background:white;border-radius:12px;padding:13px;color:var(--ink);width:100%;outline-color:var(--green2)}label{font-size:12px;color:#5f7168;display:block;margin-bottom:7px}a{color:var(--green2)}h1,h2,h3,p{margin:0}h2{font-size:20px;letter-spacing:-.5px}h3{font-size:16px}small{font-size:11px}.shell{max-width:1120px;margin:0 auto}.top{background:var(--green);color:white;padding:25px 28px 53px}.toprow{display:flex;justify-content:space-between;align-items:center;gap:12px}.brand{display:flex;gap:11px;align-items:center}.brandmark{width:39px;height:39px;display:grid;place-items:center;border:1px solid #819a78;border-radius:50%;color:var(--gold);font:600 20px Georgia,serif}.brand h1{font-size:20px;letter-spacing:2px}.brand small{display:block;color:#a5bbb0;font-size:9px;letter-spacing:2px;margin-top:4px}.pill{font-size:11px;padding:7px 10px;border-radius:20px;background:#ffffff10;border:1px solid #ffffff24;color:#d6e1d8}.pill.light{background:var(--mint);border:0;color:var(--green2)}.live-dot{display:inline-block;width:6px;height:6px;background:#acd093;border-radius:50%;margin-right:5px}.nav-desktop{display:flex;gap:6px}.nav-desktop button{background:transparent;color:#aac1b7;padding:10px 15px;border-radius:12px;font-size:13px}.nav-desktop button.active{background:#ffffff14;color:white}.layout{padding:0 28px 100px;margin-top:-29px}.notice{background:#e9eedb;color:#657149;border:1px solid #dde5cd;border-radius:12px;padding:11px 14px;font-size:11px;line-height:1.7;display:flex;gap:9px;margin:0 0 17px}.hero{position:relative;overflow:hidden;background:linear-gradient(115deg,#244e40,#3c6048);color:white;border-radius:22px;padding:29px 28px;min-height:178px;box-shadow:0 10px 35px #153c3410;margin-bottom:19px}.hero:after{content:'49';font:italic 185px Georgia,serif;position:absolute;right:24px;top:-15px;color:#b6c68e15;pointer-events:none}.eyebrow{font-size:10px;font-weight:600;letter-spacing:2px;color:#a2b396;text-transform:uppercase}.hero h2{font-size:27px;letter-spacing:1px;line-height:1.6;margin:9px 0}.hero p{font-size:12px;color:#c1cfbe;max-width:70%;line-height:1.8}.hero .hero-label{position:absolute;right:27px;bottom:27px;color:#dfc997;border-top:1px solid #d6b57355;padding-top:10px;font-size:10px;letter-spacing:2px}.workspace{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(280px,1fr);gap:19px;align-items:start}.stack{display:grid;gap:17px}.card{background:#fff;border:1px solid var(--line);border-radius:19px;padding:23px}.section-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:19px}.section-head .subtitle{font-size:11px;color:var(--muted);margin-top:6px}.roundline{display:flex;justify-content:space-between;gap:12px;align-items:center;border-bottom:1px solid var(--line);padding-bottom:18px;margin-bottom:18px}.roundline strong{font-size:14px}.countdown{font-family:ui-monospace,monospace;font-size:18px;color:var(--green);font-weight:600;letter-spacing:1px}.grid49{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:10px}.ball{padding:0;max-width:64px;width:100%;border-radius:50%;background:#faf9f6;border:1px solid #ece8e0;color:var(--red);font:600 17px ui-monospace,monospace;position:relative;transition:background .15s,transform .15s;justify-self:center}.ball.blue{color:var(--blue);background:#f6f8fa;border-color:#e6ecf2}.ball.green{color:#4d8a74;background:#f4f8f3;border-color:#e3ebdf}.ball.selected{background:var(--green);color:white;border-color:var(--green);box-shadow:0 4px 10px #123e3522;transform:scale(.97)}.ball.selected:after{content:'✓';position:absolute;right:-1px;bottom:0;font:9px sans-serif;width:15px;height:15px;border-radius:50%;background:var(--gold);display:grid;place-items:center;color:var(--green);border:2px solid white}.legend{display:flex;justify-content:space-between;font-size:10px;color:var(--muted);margin-top:17px}.legend .colors{display:flex;gap:10px}.dot{display:inline-block;width:5px;height:5px;border-radius:50%;margin:0 4px 1px 0;background:var(--red)}.dot.blue{background:var(--blue)}.dot.green{background:#4d8a74}.text-button{color:var(--green2);font-size:12px;background:none;padding:5px}.balance{font:500 43px Georgia,serif;color:var(--green);margin:11px 0 16px}.balance small{font:12px sans-serif;color:var(--muted);margin-left:8px}.balance-card{background:#eef2e7;border-color:#e0e7d5}.row{display:flex;align-items:center;justify-content:space-between;gap:10px}.helper{font-size:11px;color:var(--muted);line-height:1.8}.muted{color:var(--muted)}.primary,.secondary,.danger{padding:13px 18px;border-radius:12px;font-size:13px;font-weight:600;min-height:44px}.primary{background:var(--green);color:white}.secondary{background:#edf1e7;color:var(--green)}.danger{background:#f7ebe7;color:#a64e40}.full{width:100%}.actions{display:flex;gap:10px;margin-top:17px}.actions>*{flex:1}.selected-row{display:grid;grid-template-columns:34px 1fr 30px;gap:12px;align-items:center;padding:9px 0;border-bottom:1px solid #f0f1ec}.mini-ball{width:32px;height:32px;border-radius:50%;display:grid;place-items:center;background:var(--mint);color:var(--green);font:600 14px monospace}.selected-row input{padding:9px 12px;font-size:13px}.remove{color:#9da69d;background:none;font-size:20px}.empty{text-align:center;padding:23px 12px;color:#919c92;font-size:12px;line-height:1.9}.empty-mark{font:30px Georgia,serif;color:#becbbb;margin-bottom:8px}.total{display:flex;align-items:baseline;justify-content:space-between;margin:20px 0 14px;font-size:12px}.total strong{font:600 24px Georgia,serif;color:var(--green)}.quick{display:flex;gap:7px;margin:10px 0}.quick button{background:#f5f6f1;border:1px solid var(--line);border-radius:8px;padding:7px 11px;font-size:11px;color:#657663}.rule-item{display:flex;gap:12px;margin-top:15px;font-size:12px;line-height:1.7}.rule-index{flex-shrink:0;color:#a0ad90;font:14px Georgia,serif;padding-top:3px}.bottom-nav{display:none}.ledger-row{display:flex;gap:12px;align-items:center;padding:15px 0;border-bottom:1px solid #eef0e8;font-size:12px}.ledger-row:last-child{border:0}.ledger-row .desc{flex:1;line-height:1.6}.ledger-row small{display:block;color:var(--muted);margin-top:4px}.positive{color:#487e60}.negative{color:#b96858}.avatar{width:38px;height:38px;border-radius:13px;background:#edf2e7;display:grid;place-items:center;color:#5a755f;font:17px Georgia,serif;flex-shrink:0}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:12px}.field{margin-top:15px}.page-title{padding:7px 0 23px}.page-title h2{font-size:25px}.page-title p{font-size:12px;color:var(--muted);margin-top:8px;line-height:1.7}.mode-card{border:1px solid var(--line);border-radius:13px;padding:14px;display:flex;gap:11px;cursor:pointer;margin-top:10px}.mode-card input{width:16px;accent-color:var(--green);margin-top:3px;flex-shrink:0}.mode-card strong{font-size:13px}.mode-card p{font-size:11px;color:var(--muted);line-height:1.7;margin-top:5px}.stat-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}.stat{border-radius:10px;padding:9px 2px;text-align:center;background:#f1f4ec}.stat strong{font:600 14px monospace;display:block}.stat small{font-size:9px;display:block;margin-top:5px;color:#7e8c78}.stat.hot{background:#e3eacb}.stat.hot small{color:#5c7149}.audit{border-left:1px solid #dbe3d5;padding:0 0 20px 17px;font-size:12px;position:relative;line-height:1.8}.audit:before{content:'';position:absolute;width:7px;height:7px;top:6px;left:-4px;border-radius:50%;background:#a8bb99}.audit small{display:block;color:var(--muted);font-size:10px}.result{background:#eef2e7;border-radius:14px;padding:16px;margin-bottom:16px;display:flex;align-items:center;gap:14px}.result-number{font:32px Georgia,serif;color:var(--green)}.result p{font-size:12px;line-height:1.8}.connect{margin-top:17px;border-top:1px solid var(--line);padding-top:17px}.join-wrap{max-width:440px;margin:8vh auto;padding:22px}.join-wrap .brand{color:var(--green);margin-bottom:35px}.join-wrap h2{font-size:27px;margin-bottom:13px}.join-wrap p{line-height:1.8;font-size:13px;color:var(--muted)}#toast{position:fixed;bottom:95px;left:50%;transform:translateX(-50%);background:#183e35;color:white;padding:12px 20px;border-radius:12px;font-size:13px;z-index:30;display:none;max-width:90vw;box-shadow:0 8px 30px #0002;line-height:1.6}dialog{border:1px solid var(--line);border-radius:20px;max-width:390px;width:calc(100% - 40px);padding:25px;color:var(--ink)}dialog::backdrop{background:#123e3566;backdrop-filter:blur(3px)}dialog h2{margin:12px 0}dialog p{font-size:13px;color:#6f7b71;line-height:1.9;white-space:pre-line}.footer-note{font-size:10px;color:#929b8d;text-align:center;margin-top:22px;line-height:1.8}.offline-banner{font-size:11px;color:#9b6946;background:#fff4df;border-radius:10px;padding:10px;margin-bottom:12px}.guide{font-size:12px;line-height:1.9;color:#6c7c70}.divider{height:1px;background:var(--line);margin:17px 0}.error-message{color:#b45746;font-size:12px;margin:15px 0;line-height:1.8}#invite-url{font-size:11px;word-break:break-all;display:block;padding:10px;background:var(--paper);border-radius:9px;margin-top:10px}.scroll-list{max-height:420px;overflow:auto}.chip{display:inline-block;padding:4px 8px;border:1px solid var(--line);border-radius:6px;font:11px monospace;margin:4px 3px 0 0}
@media(min-width:850px){.top{padding-top:31px;padding-bottom:59px}.hero{padding:34px;min-height:205px}.hero h2{font-size:34px}.hero:after{font-size:235px;right:65px;top:-35px}.grid49{gap:13px}.card{padding:25px}.hero p{font-size:13px}.layout{margin-top:-32px}.nav-desktop{margin-left:auto}}
@media(max-width:700px){.top{padding:20px 20px 49px}.nav-desktop{display:none}.layout{padding:0 16px 100px}.workspace{grid-template-columns:1fr;gap:15px}.hero{padding:23px 21px;min-height:163px;border-radius:18px;margin-bottom:15px}.hero h2{font-size:25px}.hero p{max-width:77%;font-size:11px}.hero:after{right:2px;top:0;font-size:151px}.hero .hero-label{right:20px;bottom:24px;font-size:8px}.card{padding:19px;border-radius:17px}.grid49{gap:9px}.ball{font-size:16px}.section-head{margin-bottom:16px}.roundline{padding-bottom:16px;margin-bottom:16px}.bottom-nav{display:flex;position:fixed;bottom:0;left:0;right:0;background:#fffffff5;border-top:1px solid #e4e9df;backdrop-filter:blur(12px);padding:9px 10px max(10px,env(safe-area-inset-bottom));z-index:10;justify-content:space-around}.bottom-nav button{background:none;color:#96a18f;font-size:10px;display:flex;align-items:center;gap:5px;flex-direction:column;min-width:55px;padding:4px}.bottom-nav button.active{color:var(--green);font-weight:600}.nav-icon{font-size:21px;height:25px;font-weight:400}.balance-card .balance{font-size:35px;margin-bottom:7px}.page-title{padding-top:8px}.notice{font-size:10px}.brand h1{font-size:18px}.pill{font-size:10px}.stack{gap:15px}.hero-label{max-width:60px;text-align:right}.two-col{gap:9px}}
@media(prefers-reduced-motion:reduce){*{transition:none!important}}
.admin-filters{display:flex;align-items:flex-end;gap:16px;margin-bottom:18px}.admin-filters>div{flex:1}.admin-filters>button{flex-shrink:0}.admin-metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:15px;margin-bottom:19px}.admin-metrics .card{padding:20px}.admin-metrics strong{font:500 35px Georgia,serif;display:block;margin:12px 0;color:var(--green)}.admin-metrics small{font-size:10px;color:var(--muted);line-height:1.7;display:block}.rank-row{display:flex;align-items:center;gap:12px;width:100%;padding:14px 0;border-bottom:1px solid var(--line);background:transparent;text-align:left;color:var(--ink)}.rank-index{font:14px ui-monospace,monospace;color:#a6b0a4;width:24px;flex-shrink:0}.rank-index.podium{color:#af8b40}.rank-info{flex:1;min-width:0}.rank-info strong{font-size:12px}.rank-info strong small{font-weight:400;font-size:10px}.rank-track{display:block;background:#edf1e7;height:5px;border-radius:4px;margin:9px 0}.rank-track>span{display:block;background:#789c72;height:100%;border-radius:4px}.rank-row:first-child .rank-track>span{background:var(--green)}.rank-meta{font-size:10px;color:var(--muted);display:flex;justify-content:space-between;gap:6px}.rank-meta>span{color:var(--green2)}.admin-details{margin-top:19px;scroll-margin-top:20px}.admin-details .section-head>div:last-child{min-width:110px}.table-scroll{overflow-x:auto}.admin-table{border-collapse:collapse;width:100%;text-align:left;font-size:12px;white-space:nowrap}.admin-table th{font-size:11px;color:var(--muted);font-weight:500;background:#f6f7f2;padding:12px}.admin-table td{padding:14px 12px;border-bottom:1px solid var(--line)}.admin-table td small{display:block;font-size:10px;color:var(--muted);margin-top:5px}.admin-pagination{margin-top:18px}.admin-pagination .secondary{font-size:12px;padding:10px 15px}
@media(max-width:700px){.admin-filters{flex-wrap:wrap;gap:12px}.admin-filters>div{flex:1 1 40%}.admin-filters>button{width:100%}.admin-metrics{grid-template-columns:repeat(2,1fr);gap:10px}.admin-metrics .card{padding:16px}.admin-metrics strong{font-size:30px;margin:8px 0}.rank-row{gap:8px}.rank-index{width:20px}.admin-details .section-head{align-items:flex-start}.admin-workspace{grid-template-columns:1fr}.bottom-nav button{min-width:48px}}
.auth-tabs{display:flex;padding:4px;border-radius:12px;background:var(--paper);margin:20px 0 8px;gap:4px}.auth-tabs button{flex:1;padding:10px;border-radius:9px;background:transparent;color:var(--muted);font-size:13px}.auth-tabs button.active{background:white;color:var(--green);box-shadow:0 2px 7px #123e350c;font-weight:600}.account-id{display:block;font-size:12px;word-break:break-all;padding:11px 12px;background:var(--paper);border-radius:10px;margin-top:7px;user-select:all}#confirm-text{overflow-wrap:anywhere}#auth-form input[type=password]{font-size:16px}
.ledger-row .desc{min-width:0;overflow-wrap:anywhere}

/* Square number buttons also work in Android WebViews without aspect-ratio. */
.ball::before{content:"";display:block;padding-top:100%}.ball>span{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center}
