/* 山山农场 — warm landscape / compact game shell */
:root{--green:#245c45;--cream:#f6f4e9;--line:#dfdfcf;color:#254a38;background:#173c30;font-family:'PingFang SC','Microsoft YaHei',system-ui,sans-serif}
body{background:radial-gradient(ellipse at 20% 0,#3e6750,#193e32 70%)}button{transition:background .2s,box-shadow .2s,transform .2s}button:hover:not(:disabled){filter:none;box-shadow:0 5px 18px #193e3218;transform:translateY(-1px)}button:active:not(:disabled){transform:translateY(1px)}button:focus-visible{outline:3px solid #c3892c;outline-offset:3px}button:disabled{transform:none;box-shadow:none}.app-shell{width:min(1680px,100%);padding:0 28px 14px;background:#f6f4e9;box-shadow:0 0 100px #0b241a50}.app-header{height:82px;border:0;gap:13px}.avatar{font-family:serif;font-size:28px;border-radius:16px;background:#28553d;color:#ffe8a8;box-shadow:inset 0 0 0 4px #38684b;width:48px;height:48px}.app-title strong{font-size:21px;letter-spacing:3px}.app-title strong span{background:#e5e8d6;color:#65764a;font-size:10px;letter-spacing:0;border-radius:6px}.app-title small{font-size:10px;color:#7e8976;letter-spacing:2px}.wallet{background:#f4e2b1;border:1px solid #e5cd91;border-radius:14px;padding:9px 15px;color:#79551c}.wallet strong{font-size:24px}.wallet-plus{background:#e8ce91;color:#7b5a28;border-radius:6px;width:23px;height:23px;line-height:23px}.bag-button{background:#e0e9e1;border:1px solid #d1ded2;border-radius:14px;padding:11px 13px}.ticker{height:32px;background:#ebeede;border:1px solid #e0e3cf;border-radius:8px;padding:0 8px}.ticker-label,.ticker-copy,.ticker .text-button{color:#697853;font-size:11px}.estate-bar{display:flex;align-items:center;gap:18px;flex-shrink:0;height:46px;font-size:11px;color:#899079}.estate-live{color:#3c6348;font-weight:700;display:flex;align-items:center;gap:7px}.estate-live i{width:6px;height:6px;border-radius:50%;background:#82a65b;box-shadow:0 0 0 4px #82a65b18}.estate-bar>.text-button{margin-left:auto;color:#536e48}.play-area{padding:0;position:relative;isolation:isolate}.estate-overview{display:none}.world-stage{position:absolute;inset:0;border-radius:26px;overflow:hidden;background:#bdd9c7;isolation:isolate;border:1px solid #d3ddbd}.world-stage canvas{display:block;width:100%;height:100%;touch-action:none;cursor:grab}.world-stage canvas:active{cursor:grabbing}.world-vignette{position:absolute;inset:0;pointer-events:none;background:linear-gradient(90deg,#e9edda66,transparent 35%),linear-gradient(0deg,#50693920,transparent 30%)}.world-brand{position:absolute;left:295px;top:28px;pointer-events:none;color:#315b40;display:grid;gap:8px}.world-brand>span{font-size:9px;letter-spacing:3px;color:#527b57}.world-brand strong{font-family:'Songti SC',SimSun,Georgia,serif;font-size:30px;font-weight:600;letter-spacing:4px}.world-brand small{font-size:10px;color:#58755b}.world-controls{position:absolute;right:20px;top:22px;display:flex;gap:5px}.world-controls button{font-size:11px;background:#fffdf0dc;color:#45613e;border:1px solid #ffffffe0;backdrop-filter:blur(14px);border-radius:11px;padding:7px 11px;min-height:34px;box-shadow:0 2px 8px #42633f0d}.world-pins{position:absolute;inset:0;pointer-events:none}.world-pins button{position:absolute;left:0;top:0;pointer-events:auto;min-height:29px;padding:5px 10px;font-size:10px;font-weight:600;white-space:nowrap;color:#fff9df;background:#315b41e8;border:1px solid #ffffff55;box-shadow:0 4px 12px #173d3526;border-radius:9px;font-variant-numeric:tabular-nums}.world-pins button.selected{background:#fff2c9;color:#6a501f;border:2px solid #fff7dc;box-shadow:0 0 0 3px #cb982960,0 5px 12px #173d3520}.world-pins button.mature{background:#e9b749;color:#473a18;border-color:#fff2b7;animation:harvest-glow 2s infinite}.world-pins button:hover{filter:brightness(1.1);transform:none}.world-caption{position:absolute;bottom:22px;left:295px;color:#486848;font-size:10px;letter-spacing:3px;pointer-events:none}.world-caption span{display:block;font-size:9px;letter-spacing:1px;margin-top:7px;opacity:.75}.world-enabled.world-active>.estate-overview{display:flex;position:absolute;z-index:3;left:18px;top:18px;bottom:18px;width:245px;flex-direction:column;border-radius:19px;background:#fffdf1e8;border:1px solid #fff9e8;box-shadow:0 12px 40px #39532d12;backdrop-filter:blur(14px);padding:24px 22px}.estate-overview>.eyebrow{font-size:8px;letter-spacing:1.5px;color:#869273}.estate-overview h2{font:600 26px/1.6 'Songti SC',SimSun,serif;letter-spacing:2px;margin:10px 0 23px}.overview-stat>span{font-size:11px;color:#68805c;display:block}.overview-stat small{font-size:9px;color:#9b9f84;margin-left:6px}.overview-stat>strong{font-size:30px;letter-spacing:-1px;display:block;margin:5px 0 18px;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}.estate-level{display:flex;justify-content:space-between;font-size:8px;color:#80906b;gap:8px}.estate-meter{height:5px;border-radius:8px;background:#e6e8d4;margin-top:9px;overflow:hidden}.estate-meter>i{display:block;height:100%;background:#739350;border-radius:8px;transition:width .5s}.estate-metrics{display:flex;justify-content:space-between;gap:8px;margin:22px 0}.estate-metrics>div{text-align:center;flex:1}.estate-metrics b{font-size:22px;font-weight:500;display:block;color:#486344}.estate-metrics small{font-size:9px;color:#8e967b;display:block;margin-top:5px}.estate-primary{background:#285a40;color:#fff8df;border-radius:10px;padding:13px 5px;font-size:11px;min-height:42px}.estate-shortcuts{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:10px}.estate-shortcuts button{background:#eeefdf;color:#61714e;font-size:10px;padding:10px 3px}.estate-shortcuts span{display:block;font-size:18px;margin-bottom:5px}.estate-note{margin-top:auto;padding-top:18px;color:#8c977b;font-size:9px;border-top:1px solid #e7e8d7}.estate-note strong{display:block;color:#61754e;font-size:11px;margin-top:8px;font-weight:500}.world-enabled.world-active>.game-panel:not([hidden]){position:relative;pointer-events:none;z-index:2}.world-enabled.world-active .panel-head{position:absolute;right:22px;bottom:210px;min-height:0}.world-enabled.world-active .panel-head>div{display:none}.world-enabled.world-active .panel-head button{pointer-events:auto;background:#fffae9;border:1px solid #fff6cf;color:#65572e;box-shadow:0 4px 20px #31522f15;padding:12px 18px}.world-enabled.world-active .panel-tip,.world-enabled.world-active .field-bottom{display:none}.world-enabled.world-active .grid{position:absolute;bottom:18px;right:18px;display:block;width:235px;pointer-events:auto}.world-enabled.world-active .grid>.plot{display:none}.world-enabled.world-active .grid>.plot.world-selected{display:flex;min-height:170px;background:#fffbedf5;backdrop-filter:blur(16px);box-shadow:0 12px 35px #25462c25;border:1px solid #ffffed;padding:23px 16px 16px;gap:10px;border-radius:18px}.world-enabled.world-active .plot .icon{display:none}.world-enabled.world-active .plot strong{font-size:21px;font-family:'Songti SC',SimSun,serif;letter-spacing:1px}.world-enabled.world-active .plot:before{height:4px;background:#ad8b3b;opacity:.5}.world-enabled.world-active .plot .slot-number{top:12px;left:13px;background:#eee7d2;color:#95815c;border-radius:4px;padding:3px 5px;font-size:9px}.world-enabled.world-active .plot p{font-size:12px;color:#7c845c}.world-enabled.world-active .plot button{padding:11px 23px;border-radius:9px}.world-enabled.world-active .plot.ready{border-color:#f1d493;background:#fff8dcf5}.world-stage.list-mode{inset:auto 0 0;height:35px;background:transparent;border:0;z-index:4;pointer-events:none}.world-stage.list-mode>*:not(.world-controls){display:none}.world-stage.list-mode .world-controls{top:0;right:0;pointer-events:auto}.world-stage.list-mode .world-controls>button:not([data-mode]){display:none}.bottom-nav{align-self:center;width:min(640px,100%);max-width:none;height:72px;margin-top:12px;padding:7px 10px;border-radius:22px;background:#fffdf4;border:1px solid #e5e5d3;box-shadow:0 5px 25px #213b2510;gap:5px}.bottom-nav button{font-size:11px;color:#899278;border-radius:14px;gap:5px;transition:background .2s,color .2s}.bottom-nav button span{font-size:22px;filter:none;opacity:1;height:24px}.bottom-nav svg{width:23px;height:23px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}.bottom-nav button.active{background:#28563e;color:#fff3ca;box-shadow:0 3px 9px #23473118}.connection-indicator{font-size:8px;bottom:5px;right:10px;color:#8b977b}.game-panel:not([hidden]){padding:0 12px}.world-active .game-panel{padding:0}.panel-head h2{font-family:'Songti SC',SimSun,serif;font-size:26px;letter-spacing:1px}.panel-tip{font-size:12px}.grid{gap:14px}.plot{border-radius:18px}.plot button{border-radius:9px}.plot.locked{background:#e9edde}.field-bottom{padding-bottom:24px}.invite-banner{border:1px solid #d9dfc5;border-radius:18px;background:linear-gradient(120deg,#e6ebd5,#f2eddb)}.invite-banner p{line-height:1.8}.social-tools button{border:1px solid #dfe4cf;border-radius:11px;background:#edf0df;color:#5c734b}.friends-list{gap:10px}.community-row{border:1px solid #e5e6d6;background:#fffdf3;border-radius:13px;padding:14px}.community-name strong{color:#345d40}.rank-row{border-radius:10px;margin-bottom:6px;background:#f4f4e9;padding:14px}.rank-row.is-me{background:#e5ecd7}.reward-card{border-radius:22px;background:radial-gradient(circle at 50% 5%,#f8edc7,#f1e9cc);border:1px solid #e8dcb4}.reward-card.car{background:radial-gradient(circle at 50% 5%,#e4eee4,#dce6d6);border-color:#cddcc7}.reward-card h3{font-size:22px;font-family:serif}.reward-card .reward-art{filter:drop-shadow(0 12px 9px #7d875b24)}.warning{border-radius:9px}.assist-entry{background:linear-gradient(120deg,#8b4c35,#bc8054);border-color:#d5a574;border-radius:15px}.assist-entry strong{font-size:14px}.assist-entry>span{background:#fbe2b71a}.friends-area{min-height:0}dialog{background:#fffdf3;border:1px solid #e1e4cf;border-radius:23px;box-shadow:0 30px 100px #102b3466;padding:26px;color:#32513d}dialog::backdrop{background:#183c3266;backdrop-filter:blur(6px)}.dialog-head{border-bottom:1px solid #e7e8d7;padding-bottom:15px;margin-bottom:17px}.dialog-head h2{font-family:'Songti SC',SimSun,serif;font-size:23px}.dialog-head button{border-radius:50%;background:#edf0e2;color:#6d7e59;min-width:34px;padding:7px}.choice{border-radius:13px}.choice.selected{background:#e8efd9;border-color:#9caf77}.choice-icon{font-size:30px}input,select{background:#fbfcf4;border:1px solid #d9dfcc;border-radius:9px;min-height:43px}#toast{border-radius:12px;background:#264e3bef;color:#fff7db;padding:14px 20px;box-shadow:0 8px 30px #173c3040}.empty-state{background:#f0f2e7;padding:24px;border-radius:12px;line-height:1.8}
/* Welcome screen */
.login-screen{position:absolute;inset:24px;max-width:none;width:auto;margin:0;padding:0;display:grid;grid-template-columns:minmax(0,1.3fr) minmax(340px,.8fr);overflow:hidden;border-radius:25px;background:#fffdf4;box-shadow:0 14px 65px #203d2020;text-align:left;max-height:none;height:auto}.welcome-art{position:relative;background:#dbe6cf;overflow:hidden;min-width:0}.welcome-wordmark{position:absolute;top:34px;left:38px;z-index:1;font:600 27px 'Songti SC',serif;letter-spacing:4px;color:#315c40}.welcome-wordmark span{display:block;font:9px system-ui,sans-serif;letter-spacing:3px;margin-top:9px;color:#77906c}.welcome-copy{position:absolute;z-index:1;left:38px;top:135px}.welcome-copy .eyebrow{color:#67825d;font-size:10px;letter-spacing:3px}.welcome-copy h2{font:600 clamp(35px,3.5vw,56px)/1.45 'Songti SC',SimSun,serif;letter-spacing:4px;margin-top:18px;color:#2f563c}.welcome-copy p{font-size:11px;color:#6d8162;margin-top:18px;letter-spacing:1px}.welcome-landscape{position:absolute;width:110%;bottom:-30px;left:-5%;height:auto}.welcome-footer{position:absolute;bottom:25px;left:38px;right:30px;display:flex;justify-content:space-between;font-size:8px;letter-spacing:2px;color:#f7f4d5;z-index:1}.login-form-wrap{align-self:center;padding:34px clamp(28px,4vw,65px);max-height:100%;overflow:auto}.login-logo{display:flex;align-items:center;justify-content:center;font:600 30px serif;background:#2f5c42;color:#ffe9b3;box-shadow:inset 0 0 0 5px #406e50;border-radius:16px;width:59px;height:59px;margin:0 0 24px}.login-form-wrap>.eyebrow{font-size:9px;letter-spacing:3px;color:#91a17b}.login-form-wrap>h1{font:600 30px 'Songti SC',SimSun,serif;letter-spacing:4px;margin:11px 0}.login-form-wrap>p{font-size:12px;color:#89957c;margin-bottom:23px}.login-form-wrap form{margin:0}.login-form-wrap label{font-size:11px;color:#6b7f5e;display:block;margin-bottom:14px}.login-form-wrap input{width:100%;display:block;margin-top:7px;min-height:45px;font-size:12px;padding:12px}.auth-actions{display:grid;grid-template-columns:1fr;gap:9px;margin-top:20px}.auth-actions button{min-height:44px;font-size:12px;border-radius:9px}.auth-actions .secondary{background:#ecf0e0;color:#637a51}.login-form-wrap>small{display:block;text-align:center;font-size:9px;color:#929c80;line-height:1.9;margin-top:20px}.login-form-wrap #authError{color:#ac543e;line-height:1.6;margin:12px 0}
@keyframes harvest-glow{50%{box-shadow:0 0 0 6px #efc76435,0 5px 16px #65471930}}
@media(min-width:1000px) and (max-height:780px){.estate-overview h2{font-size:22px;margin:8px 0 12px}.world-enabled.world-active>.estate-overview{padding:18px}.overview-stat>strong{font-size:25px;margin-bottom:12px}.estate-metrics{margin:14px 0}.estate-shortcuts button{padding:6px}.estate-note{padding-top:10px}.welcome-copy{top:100px}.welcome-copy h2{font-size:39px}.welcome-landscape{width:100%;left:0}.login-logo{margin-bottom:13px}.login-form-wrap{padding-top:20px;padding-bottom:20px}}
@media(max-width:1050px){.world-enabled.world-active>.estate-overview{width:200px;left:12px;top:12px;bottom:12px;padding:18px 15px}.estate-overview h2{font-size:22px}.world-brand{left:235px}.world-caption{left:235px}.world-brand strong{font-size:25px}.world-controls{top:105px;right:15px}.world-enabled.world-active .grid{width:200px}.world-enabled.world-active .plot strong{font-size:19px}.estate-shortcuts button{font-size:9px}}
@media(max-width:700px){.app-shell{padding:0 10px max(8px,env(safe-area-inset-bottom));width:100%}.app-header{height:66px;gap:8px}.avatar{width:39px;height:39px;font-size:24px;border-radius:12px}.app-title strong{font-size:16px;letter-spacing:1px}.app-title strong span{font-size:8px;padding:3px 4px}.app-title small{font-size:8px;letter-spacing:1px}.wallet{padding:7px 9px;gap:4px;max-width:38%;border-radius:12px}.wallet strong{font-size:18px}.wallet-plus{width:17px;height:20px;line-height:20px;font-size:12px}.bag-button{padding:9px 7px;font-size:16px;border-radius:11px}.bag-button b{font-size:9px}.ticker{height:28px;padding:0 4px}.ticker-label,.ticker-copy{font-size:9px}.estate-bar{height:34px;font-size:9px;gap:9px}.estate-bar #estateGreeting{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}.estate-bar .text-button{font-size:9px;white-space:nowrap;padding:2px 0}.estate-live{gap:5px}.world-stage{border-radius:19px}.world-enabled.world-active>.estate-overview{display:none}.world-brand{left:18px;top:20px;gap:6px}.world-brand>span{font-size:7px;letter-spacing:1.5px}.world-brand strong{font-size:25px;letter-spacing:3px}.world-brand small{font-size:9px}.world-controls{top:100px;right:12px;gap:5px}.world-controls button{min-height:30px;font-size:9px;padding:6px 9px;border-radius:8px}.world-caption{left:17px;bottom:118px;font-size:7px;letter-spacing:2px}.world-caption span{font-size:7px;letter-spacing:0;margin-top:4px}.world-pins button{font-size:8px;min-height:25px;padding:4px 6px;border-radius:7px}.world-enabled.world-active .panel-head{bottom:117px;right:12px;left:auto}.world-enabled.world-active .panel-head button{font-size:10px;padding:8px 11px;min-height:31px;border-radius:9px}.world-enabled.world-active .grid{bottom:10px;left:10px;right:10px;width:auto}.world-enabled.world-active .grid>.plot.world-selected{min-height:94px;display:grid;grid-template-columns:1fr auto;grid-template-rows:auto auto;gap:6px;padding:17px 14px 13px 40px;text-align:left;justify-items:start;border-radius:15px}.world-enabled.world-active .plot strong{grid-row:1;grid-column:1;font-size:17px;align-self:end}.world-enabled.world-active .plot p{grid-row:2;grid-column:1;font-size:10px}.world-enabled.world-active .grid>.plot.world-selected>button,.world-enabled.world-active .grid>.plot.world-selected>.tile-actions{grid-column:2;grid-row:1/3;align-self:center;justify-self:end;margin:0}.world-enabled.world-active .plot button{padding:11px 15px;font-size:11px}.world-enabled.world-active .plot .slot-number{top:16px;left:9px;font-size:8px;padding:3px}.world-enabled.world-active .plot.locked strong{grid-column:1;grid-row:1/3}.world-enabled.world-active .tile-actions button{min-height:38px!important}.bottom-nav{height:63px;margin-top:8px;border-radius:18px;padding:5px 6px;gap:3px}.bottom-nav button{font-size:9px;gap:4px;border-radius:12px}.bottom-nav svg{width:21px;height:21px}.connection-indicator{display:none}.game-panel:not([hidden]){padding:0 3px}.panel-head h2{font-size:22px}.reward-grid{gap:10px}.reward-card h3{font-size:18px}.social-tools button{font-size:10px}dialog{padding:20px;border-radius:20px;max-height:85dvh}.login-screen{inset:10px;display:block;border-radius:20px;overflow-y:auto;background:#fffdf4}.welcome-art{height:190px}.welcome-wordmark{left:22px;top:22px;font-size:22px}.welcome-wordmark span{font-size:7px;letter-spacing:2px}.welcome-copy{left:22px;top:84px}.welcome-copy .eyebrow{font-size:8px;letter-spacing:1px}.welcome-copy h2{font-size:24px;margin-top:7px;line-height:1.4;letter-spacing:2px}.welcome-copy p,.welcome-footer{display:none}.welcome-landscape{width:300px;left:auto;right:-65px;bottom:-26px}.login-form-wrap{padding:24px 25px;max-height:none;overflow:visible}.login-logo{display:none}.login-form-wrap>h1{font-size:25px;margin:8px 0}.login-form-wrap>p{font-size:11px;margin-bottom:17px}.login-form-wrap label{margin-bottom:11px}.login-form-wrap input{min-height:42px;padding:10px}.login-form-wrap>small{margin-top:14px}.auth-actions{margin-top:16px}.login-form-wrap>.eyebrow{font-size:8px}.login-form-wrap>h1{display:none}}
@media(max-height:650px){.app-header{height:55px}.estate-bar{height:29px}.bottom-nav{height:55px;margin-top:5px}.world-brand{top:14px}.world-brand small{display:none}.world-controls{top:79px}.world-enabled.world-active .grid>.plot.world-selected{min-height:80px;padding-top:12px;padding-bottom:9px}.world-enabled.world-active .panel-head{bottom:101px}.world-caption{bottom:106px}.estate-overview h2,.estate-shortcuts,.estate-note{display:none}.world-enabled.world-active>.estate-overview{justify-content:center}.welcome-art{height:140px}.welcome-copy{top:72px}.welcome-copy h2{font-size:20px}.welcome-copy .eyebrow{display:none}.login-form-wrap{padding-top:17px}.login-form-wrap>p{margin-bottom:13px}}
@media(max-width:360px){.app-title strong{font-size:14px}.app-title small{letter-spacing:0}.wallet strong{font-size:15px}.app-header{gap:5px}.world-controls button{padding:5px 7px}.world-brand strong{font-size:22px}.world-enabled.world-active .plot button{padding:9px 11px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}

@media(max-width:700px){.world-pins button{min-width:30px;min-height:30px;font-size:9px;padding:5px 6px}.world-pins button.selected{border-width:1px}}
