body{background:#f3f4e9}.hub{max-width:1200px;padding:70px 35px}.hub-title{text-align:center}.hub-title .seal{margin:0 auto 25px;width:60px;height:60px}.hub-title h1{font-size:54px}.hub-title>p:last-child{color:#78846c;line-height:1.8}.hub-options{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin:45px 0}.role-card{background:#fffef5;border:1px solid #d7dfc9;border-radius:17px;padding:32px;text-decoration:none;color:#284b34;box-shadow:0 5px 20px #37502b08}.role-card:hover{border-color:#6b9850;transform:translateY(-2px)}.role-card>span{font-size:9px;letter-spacing:2px;color:#859773}.role-card h2{font-size:28px;margin:20px 0 14px}.role-card p{font-size:12px;line-height:1.8;color:#7e8d72;min-height:55px}.role-card b{font-size:12px}.hub footer{display:flex;justify-content:space-between;font-size:11px;color:#8b987e}.hub footer a{color:#557344}.connection{margin-left:auto;font-size:10px;color:#668352}.connection.offline{color:#ae633f}.room-entry{max-width:480px;margin:70px auto;background:#fffef6;border:1px solid #dce3cf;border-radius:20px;padding:36px;text-align:center}.room-entry h1{font-size:36px}.room-entry p{color:#7a8b6c;font-size:13px;line-height:1.8}.room-entry input{display:block;width:100%;padding:16px;border:1px solid #cbd6ba;border-radius:8px;text-align:center;font-size:23px;margin:20px 0;letter-spacing:4px}.room-entry .primary{width:100%}.room-top{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:25px}.room-top h1{font-size:36px;margin:0 0 9px}.room-top p{color:#829274;font-size:12px;margin:0}.room-code{display:inline-block;letter-spacing:4px;font-size:30px;font-weight:800;color:#244d32}.room-clock{font-variant-numeric:tabular-nums;font-size:36px;font-weight:700;color:#3d673f;text-align:right}.room-clock small{display:block;font-size:9px;letter-spacing:2px;color:#8b977d;margin-bottom:8px}.room-controls{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:22px 0}.room-controls button,.room-controls a{font-size:12px;text-decoration:none}.room-controls .danger{background:#a64e38;color:white;border:0}.access-panel{padding:15px 20px;border-radius:10px;background:#e8eeda;display:flex;align-items:center;flex-wrap:wrap;gap:12px;font-size:11px;color:#6f8159;margin-bottom:24px}.access-panel a{color:#315f39;overflow-wrap:anywhere}.access-panel select{padding:8px;border:1px solid #c5d4b2;background:#fffdf4;border-radius:6px;max-width:100%}.team-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:20px}.team-panel{background:#fffef6;border:1px solid #d8e0cc;border-radius:16px;padding:25px;position:relative}.team-panel h2{font-family:inherit;font-size:22px;margin:0 0 8px}.team-panel .team-status{font-size:11px;color:#89967c;min-height:18px}.team-panel.empty{background:#eef1e7;border-style:dashed;min-height:185px;display:grid;place-items:center;text-align:center;color:#8a9879}.team-panel.done{border:2px solid #779b59;background:#f2f7e8}.team-panel .percent{font-size:35px;font-weight:800;color:#456c38;float:right}.team-panel .progress{height:10px;background:#e9eddc;border-radius:8px;overflow:hidden;margin:25px 0 15px}.team-panel .progress>i{display:block;height:100%;background:linear-gradient(90deg,#b0d282,#39783a);transition:width .4s}.stage-dots{display:flex;justify-content:space-between;gap:8px;font-size:10px;color:#9ba38f}.stage-dots .done{color:#3b713d;font-weight:700}.finish-label{position:absolute;right:25px;top:25px;font-size:12px;background:#f3df94;color:#6c5a23;padding:7px 12px;border-radius:20px}.team-panel.done .percent{margin-top:25px}.room-info{text-align:center;margin:25px 0;font-size:12px;color:#81916d}.rank-board{background:#fffdf1;border:1px solid #dce2cb;border-radius:15px;overflow:hidden;margin:25px 0}.rank-row{display:grid;grid-template-columns:70px 1fr 100px 140px;gap:15px;align-items:center;padding:18px 24px;border-bottom:1px solid #e7ebdb;font-size:14px}.rank-row:last-child{border:0}.rank-row:first-child{background:#e5edcf}.rank-row b:first-child{font-size:24px}.rank-row strong{font-size:22px}.review-panel{background:#fffef4;padding:26px;border:1px solid #d7dfc7;border-radius:16px;margin:25px 0}.review-panel select{padding:10px;border:1px solid #c4d1b3;border-radius:7px;margin-left:10px}.review-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-top:20px}.review-stage{background:#edf2e4;border-radius:9px;padding:15px}.review-stage h3{font-size:13px;margin-top:0}.review-item{font-size:11px;line-height:1.8;padding:9px 0;border-top:1px solid #d7dfc7;white-space:pre-line}.review-item.wrong{color:#ad4d35}.review-item.right{color:#397643}.review-item small{color:#879578;display:block;font-size:10px}.review-chart{width:100%;height:150px}.room-footer{font-size:10px;color:#91a07e;margin:25px 0}.join-form input{letter-spacing:0;font-size:16px}.join-form input[name=code]{letter-spacing:5px;font-size:24px}.lobby-message{margin:18px 0;padding:20px;background:#eaf0dc;border-radius:12px;color:#547342;font-size:13px;line-height:1.8}.sync-strip{padding:9px 16px;background:#e9efda;color:#607b4a;text-align:center;font-size:11px;position:sticky;top:0;z-index:15}.sync-strip.offline{background:#fff0d5;color:#986436}.sync-strip a{color:inherit}.waiting-panel{text-align:center;padding:25px;background:#fff9df;border:1px solid #d4cd9c;border-radius:14px;margin-top:20px;color:#6f793f}.game-frozen .forest-game .board-banks,.game-frozen .forest-game .board-slot{pointer-events:none;opacity:.6}.frozen-message{padding:20px;background:#fff3d2;border:1px solid #dbc478;border-radius:12px;margin:20px 0;text-align:center;color:#8e7132}#notice{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);background:#294e35;color:#fff;padding:12px 20px;border-radius:10px;display:none;z-index:40;font-size:13px;max-width:90%}#celebration:not(:empty){position:fixed;inset:0;background:#183b2a85;display:grid;place-items:center;z-index:30;pointer-events:none;backdrop-filter:blur(3px)}.victory-card{background:#fff6cd;border:4px solid #d2b865;border-radius:25px;text-align:center;padding:40px 60px;box-shadow:0 25px 100px #193e3255;animation:pop .5s ease-out}.victory-card .cup{font-size:65px}.victory-card h2{font-family:inherit;font-size:35px}.victory-card p{letter-spacing:2px;font-size:12px;color:#8f7a3f}@keyframes pop{from{transform:scale(.75);opacity:0}to{transform:scale(1);opacity:1}}.tv-view .team-panel{padding:30px;min-height:210px}.tv-view .team-panel h2{font-size:30px}.tv-view .percent{font-size:45px}.tv-view .room-code{font-size:40px}.tv-view .room-clock{font-size:48px}.tv-view .room-top h1{font-size:40px}.tv-view .stage-dots{font-size:13px}.tv-view .rank-row{padding:23px;font-size:22px}.tv-view .rank-row strong{font-size:30px}@media(max-width:800px){header{gap:10px;padding:0 20px}.hub-options{grid-template-columns:1fr}.hub{padding:40px 22px}.hub-title h1{font-size:40px}.hub footer{gap:20px;flex-direction:column}.role-card p{min-height:0}.review-grid{grid-template-columns:1fr 1fr}.room-top h1{font-size:28px}.team-panel h2{font-size:18px}.team-panel{padding:20px}.rank-row{grid-template-columns:40px 1fr 60px 90px;padding:14px;gap:8px;font-size:12px}.tv-view .rank-row{font-size:15px}.tv-view .team-panel h2{font-size:22px}.tv-view .room-top h1{font-size:28px}}@media(max-width:550px){.team-grid{grid-template-columns:1fr}.room-top{align-items:start}.room-top h1{font-size:24px}.room-clock{font-size:27px}.room-code{font-size:25px}.review-grid{grid-template-columns:1fr}.room-entry{margin:30px auto;padding:25px}.connection{font-size:8px}header .brand{font-size:9px}header .quiet{font-size:9px;padding:8px}.victory-card{padding:25px}.victory-card h2{font-size:24px}.tv-view .room-clock{font-size:30px}}

.tv-view[data-status="finished"] .team-grid{display:none}.tv-view[data-reveal="true"] .rank-board,.tv-view[data-reveal="true"] .room-info{display:none}.tv-view .review-item{font-size:16px}.tv-view .review-stage h3{font-size:16px}.tv-view .review-chart{height:120px}

.hub-options{grid-template-columns:repeat(2,minmax(0,1fr))}@media(max-width:800px){.hub-options{grid-template-columns:1fr}}
