@import"https://fonts.googleapis.com/css2?family=Nunito:wght@400;500;600;700;800;900&display=swap";:root{font-family:Nunito,Trebuchet MS,system-ui,sans-serif;color:#292b23;background:#a9d37f;font-synthesis:none;text-rendering:optimizeLegibility;--green:#24433a;--green-2:#315b48;--cream:#fffaf0;--muted:#777965;--gold:#f6d77a;--line:#e7e1ce;box-sizing:border-box;padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px)}*{box-sizing:border-box}html,body,#root{width:100%;height:100%;margin:0}body{overflow:hidden}button,input{font:inherit}button{cursor:pointer}button:focus-visible,input:focus-visible{outline:3px solid #e6a23b;outline-offset:2px}.app-shell{height:100%;min-height:0;display:flex;flex-direction:column;background:#a9d37f}.topbar{z-index:5;min-height:66px;padding:9px 18px;display:flex;align-items:center;justify-content:space-between;gap:12px;background:var(--green);color:#fff;box-shadow:0 2px 10px #1a332733}.brand-lockup{display:flex;align-items:center;gap:11px}.brand-mark{width:42px;height:42px;display:grid;place-items:center;border-radius:13px;background:#ffffff1b;font-size:24px}.brand-lockup h1{margin:0;font-size:20px;line-height:1.1;font-weight:900;letter-spacing:-.3px}.brand-lockup p{margin:3px 0 0;color:#d0dfd3;font-size:11px}.clock-block{text-align:right;display:flex;flex-direction:column;gap:3px}.clock-block span{font-size:12px;color:#e2e9df}.clock-block strong{align-self:flex-end;border-radius:6px;padding:2px 8px;background:var(--gold);color:#51451d;font-size:10px;letter-spacing:.08em}.main-stage{position:relative;flex:1;min-height:0;overflow:hidden;background:#a9d37f}.village-canvas{display:block;width:100%;height:100%;touch-action:none;cursor:grab}.village-canvas:active{cursor:grabbing}.map-stat{position:absolute;top:13px;left:14px;display:flex;flex-direction:column;gap:0;min-width:91px;padding:9px 14px;border:2px solid var(--green);border-radius:14px;background:var(--cream);box-shadow:0 4px #203b2d2b;pointer-events:none}.map-stat span{font-size:10px;font-weight:900;letter-spacing:.12em;color:#777965}.map-stat strong{font-size:31px;line-height:1.05;font-weight:900;color:var(--green)}.map-stat small{font-size:9px;color:#777965}.map-controls{position:absolute;right:14px;top:13px;display:flex;flex-direction:column;gap:7px}.map-controls button{width:42px;height:42px;border:2px solid var(--green);border-radius:12px;background:var(--cream);color:var(--green);font-size:23px;font-weight:800;box-shadow:0 3px #203b2d2b}.time-control{position:absolute;left:14px;bottom:14px;display:flex;align-items:center;gap:9px;padding:7px 10px;border:2px solid var(--green);border-radius:12px;background:var(--cream);box-shadow:0 3px #203b2d2b;font-size:13px}.time-control input{width:clamp(90px,16vw,160px);accent-color:var(--green)}.time-control button{border:0;border-radius:7px;padding:5px 10px;background:var(--green);color:#fff;font-size:11px;font-weight:800}.bottom-nav{z-index:6;display:flex;justify-content:space-around;align-items:stretch;min-height:66px;padding:5px 5px calc(5px + env(safe-area-inset-bottom,0px));background:var(--cream);border-top:1px solid #d8d2bd;box-shadow:0 -3px 12px #253b2512}.bottom-nav button{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;border:0;border-radius:11px;background:transparent;color:#777965;font-size:10px;font-weight:800}.bottom-nav button span{display:grid;place-items:center;width:45px;height:29px;border-radius:10px;font-size:18px}.bottom-nav button.active{color:var(--green)}.bottom-nav button.active span{background:#e4eadb}.panel-layer{position:absolute;top:0;right:0;bottom:0;left:0;z-index:3;display:flex;justify-content:center;align-items:stretch;padding:12px;pointer-events:none}.panel{width:min(100%,720px);max-height:100%;display:flex;flex-direction:column;overflow:auto;padding:22px 22px 20px;border:1px solid #e2dbc7;border-radius:19px;background:var(--cream);box-shadow:0 12px 40px #243c2738;pointer-events:auto}.panel h2{margin:3px 0 10px;font-size:25px;line-height:1.2;letter-spacing:-.5px;color:#263d30}.eyebrow{font-size:10px;font-weight:900;letter-spacing:.14em;color:#8b896d}.panel-intro{max-width:58ch;margin:0 0 16px;color:#696b5c;font-size:13px;line-height:1.55}.panel-heading{display:flex;align-items:center;justify-content:space-between;gap:10px}.panel-heading h2{margin-bottom:12px}.live-dot{color:#43844c;font-size:10px;font-weight:900;letter-spacing:.08em}.chat-panel{height:100%}.chat-list{flex:1;min-height:130px;overflow:auto;padding:7px 5px 12px 0}.chat-message{width:fit-content;max-width:min(88%,480px);margin:0 0 10px;padding:9px 12px;border:1px solid #e8e1ce;border-radius:13px 13px 13px 4px;background:#fff}.chat-message.mine{margin-left:auto;border-color:#ead79b;border-radius:13px 13px 4px;background:#f9edc5}.message-meta{display:flex;align-items:center;gap:14px}.message-meta b{font-size:11px;color:#526047}.message-meta time{font-size:9px;color:#92917f}.chat-message p{margin:4px 0 0;font-size:13px;line-height:1.45;overflow-wrap:anywhere}.chat-composer{display:flex;gap:8px;padding-top:10px;border-top:1px solid var(--line)}.chat-composer input,.stack-form input{width:100%;min-width:0;border:1.5px solid #d8d3c2;border-radius:10px;padding:11px 12px;background:#fff;color:#292b23;font-size:13px}.chat-composer input{flex:1}.primary-button,.secondary-button{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:0;border-radius:10px;padding:10px 15px;background:var(--green);color:#fff;font-size:12px;font-weight:900;white-space:nowrap}.primary-button:disabled{opacity:.5;cursor:not-allowed}.secondary-button{margin-top:9px;border:1px solid #d7d2c1;background:transparent;color:var(--green)}.primary-button.full{width:100%;margin-top:4px}.form-feedback{margin:9px 0 0;color:#9a4b31;font-size:12px;line-height:1.45}.form-feedback.success{color:#397449}.form-feedback.error{color:#a04435}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:170px;text-align:center;color:#767864}.empty-state>span{font-size:32px;margin-bottom:8px}.empty-state b{font-size:14px;color:#394d3c}.empty-state p{margin:4px 0;font-size:12px}.facility-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.facility-card{display:flex;gap:11px;align-items:flex-start;padding:12px;border:1px solid #e7e1cf;border-radius:13px;background:#fff}.facility-card.locked{opacity:.63;background:#f5f2e8}.facility-icon{width:38px;height:38px;flex:none;display:grid;place-items:center;border-radius:11px;background:#edf2e4;font-size:21px}.facility-copy b{font-size:13px;color:#344637}.facility-copy p{margin:3px 0 7px;color:#797a69;font-size:10px;line-height:1.4}.facility-copy small{font-size:10px;font-weight:900;color:#54804d}.locked .facility-copy small{color:#8b886f}.landscape-note{margin:14px 0 0;padding:11px 13px;border-radius:11px;background:#edf2e4;color:#5e7055;font-size:11px;line-height:1.5}.count-pill{display:inline-grid;place-items:center;min-width:26px;height:26px;padding:0 7px;border-radius:20px;background:#e8eddf;color:#3d6043;font-size:12px;vertical-align:middle}.resident-list{overflow:auto}.resident-row{display:flex;align-items:center;gap:10px;padding:9px 3px;border-bottom:1px solid var(--line)}.resident-avatar{width:34px;height:34px;display:grid;place-items:center;border-radius:50%;background:#e8eddf;color:#35543a;font-size:13px;font-weight:900}.resident-row b{flex:1;font-size:13px}.resident-row b em{font-size:10px;font-style:normal;color:#a17b22}.resident-row small{font-size:10px;color:#858573}.rt-list{display:grid;gap:9px}.rt-card{display:flex;align-items:center;gap:13px;padding:13px;border:1px solid #e8e1ce;border-radius:13px;background:#fff}.rt-number{width:42px;height:42px;display:grid;place-items:center;border-radius:12px;background:#e8eddf;color:#31563b;font-size:16px;font-weight:900}.rt-card>div:nth-child(2){flex:1}.rt-card small{display:block;color:#8c896f;font-size:10px;font-weight:900;letter-spacing:.08em}.rt-card b{display:block;margin-top:2px;font-size:14px}.rt-card p{margin:2px 0 0;color:#777965;font-size:10px}.rt-card>span{font-size:22px}.account-panel{width:min(100%,560px)}.auth-card,.notice-card{margin-top:10px;padding:15px;border:1px solid #e4ddca;border-radius:14px;background:#fff}.notice-card p{margin:5px 0 0;color:#777965;font-size:12px;line-height:1.5}.mode-switch{display:flex;gap:5px;padding:4px;margin-bottom:12px;border-radius:10px;background:#f0eee4}.mode-switch button{flex:1;padding:8px;border:0;border-radius:7px;background:transparent;color:#727361;font-size:12px;font-weight:900}.mode-switch button.selected{background:#fff;color:var(--green);box-shadow:0 1px 5px #00000012}.stack-form{display:grid;gap:10px}.stack-form label{display:grid;gap:5px;color:#5e624f;font-size:11px;font-weight:800}.helper-text{margin:11px 0 0;color:#858573;font-size:10px;line-height:1.5}.resident-welcome{display:flex;align-items:center;gap:13px;margin:12px 0;padding:14px;border:1px solid #e4ddca;border-radius:14px;background:#fff}.avatar{width:48px;height:48px;display:grid;place-items:center;border-radius:15px;background:#f5e2a7;color:#70551b;font-size:22px;font-weight:900}.resident-welcome span{color:#777965;font-size:11px}.resident-welcome h3{margin:0;font-size:18px}.resident-welcome p{margin:1px 0 0;color:#777965;font-size:11px}.profile-form{margin-top:12px}.profile-form .secondary-button{justify-self:start}.notice-card b{font-size:13px;color:#354a38}@media(max-width:620px){.topbar{min-height:59px;padding:7px 12px}.brand-mark{width:37px;height:37px;font-size:21px}.brand-lockup h1{font-size:17px}.brand-lockup p{font-size:9px}.clock-block span{font-size:10px}.clock-block strong{font-size:9px}.bottom-nav{min-height:61px}.bottom-nav button{font-size:9px}.bottom-nav button span{height:26px;font-size:17px}.panel-layer{padding:8px}.panel{padding:18px 15px 16px;border-radius:15px}.panel h2{font-size:22px}.facility-grid{grid-template-columns:1fr}.map-stat{top:9px;left:9px;min-width:77px;padding:7px 10px}.map-stat strong{font-size:26px}.map-controls{right:9px;top:9px}.map-controls button{width:38px;height:38px}.time-control{left:9px;bottom:9px;padding:5px 7px;gap:6px}.time-control input{width:clamp(75px,27vw,125px)}.time-control button{padding:5px 8px}.chat-composer{gap:6px}.chat-composer .primary-button{padding:9px 12px}}@media(prefers-reduced-motion:no-preference){.panel{animation:panel-in .18s ease-out}@keyframes panel-in{0%{opacity:.7;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}}
