:root{--grass: #7eb957;--grass-dark: #68a448;--forest: #3f6b3c;--forest-dark: #2d4f2a;--water: #5cb6d3;--water-dark: #3e92ae;--sand: #e5c679;--mountain: #8d9aaa;--mountain-shadow: #5b6573;--snow: #f0f0f0;--trunk: #3d2817;--building: #f5f5f0;--temple: #5da8c8;--text-light: #f5f5f0;--text-dim: #b8c2d4;--rect-fill: rgba(52, 177, 250, .2);--rect-border: #000}*{box-sizing:border-box}html,body,#root{margin:0;padding:0;width:100%;height:100%;overflow:hidden;font-family:Helvetica Neue,Arial,sans-serif;color:var(--text-light);-webkit-font-smoothing:antialiased;background:#000;-webkit-text-size-adjust:100%}button{font-family:inherit;color:inherit;border:none;background:none;cursor:pointer;padding:0;-webkit-tap-highlight-color:transparent}a,[role=button],[data-clickable=true]{-webkit-tap-highlight-color:transparent}.scene{position:fixed;inset:0;background:#000}.stars{position:absolute;inset:0;pointer-events:none;z-index:0}.star{position:absolute;background:#fff;opacity:.75}.logo{position:absolute;top:max(clamp(8px,2vh,24px),env(safe-area-inset-top));left:max(clamp(8px,2vw,28px),env(safe-area-inset-left));z-index:5;-webkit-user-select:none;user-select:none;display:flex;flex-direction:column;align-items:center}.logo-img{width:clamp(120px,14vw,200px);height:auto;display:block}.logo-name{font-size:clamp(13px,1.5vw,19px);font-weight:400;letter-spacing:.22em;color:#fff;margin-top:2px;font-family:Helvetica Neue,Arial,sans-serif}.stats-overlay{position:absolute;top:max(clamp(12px,2.5vh,30px),env(safe-area-inset-top));right:max(clamp(12px,2.5vw,32px),env(safe-area-inset-right));z-index:5;font-style:italic;font-weight:300;font-size:clamp(14px,1.6vw,18px);color:#fff;line-height:1.5;-webkit-user-select:none;user-select:none;display:flex;flex-direction:column;align-items:flex-end;gap:4px}.stats-row{display:flex;align-items:center;gap:6px}.stats-star{width:clamp(16px,2vw,22px);height:clamp(16px,2vw,22px);object-fit:contain}.map-wrap{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:clamp(6px,1vh,16px) clamp(8px,2vw,40px) clamp(120px,16vh,180px);z-index:1}.map-svg{width:100%;height:100%;max-width:min(98vw,1600px);max-height:min(92vh,1000px);overflow:hidden;touch-action:none;cursor:grab}.map-svg.is-dragging{cursor:grabbing}.tile{transition:none}.sprite-group[data-clickable=true]{cursor:pointer}.hud{position:absolute;bottom:max(clamp(14px,3vh,36px),env(safe-area-inset-bottom));left:0;right:0;display:flex;justify-content:center;gap:clamp(14px,3vw,40px);padding:0 max(clamp(8px,2vw,24px),env(safe-area-inset-left)) 0 max(clamp(8px,2vw,24px),env(safe-area-inset-right));z-index:5;pointer-events:none}.hud-button{pointer-events:auto;display:flex;flex-direction:column;align-items:center;gap:6px;padding:0;transition:transform .12s ease}.hud-button[data-clickable=true]{cursor:pointer}.hud-button[data-clickable=true]:hover{transform:translateY(-2px)}.hud-button:disabled{opacity:.4;cursor:not-allowed}.hud-badge-wrap{position:relative;display:inline-block;width:clamp(48px,8vw,76px);height:clamp(48px,8vw,76px)}.hud-badge{width:100%;height:100%;display:block;object-fit:contain}.hud-badge-overlay{position:absolute;inset:14%;width:72%;height:72%;object-fit:contain;pointer-events:none}.hud-button-label{font-size:clamp(10px,1.2vw,14px);color:var(--text-light);letter-spacing:.04em;font-weight:300}.gate{position:fixed;inset:0;background:#000;overflow:hidden;z-index:10}.gate-bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center;pointer-events:none;z-index:0}.gate-form{position:relative;z-index:2;width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;padding-top:clamp(22vh,26vh,30vh);gap:clamp(6px,.8vh,12px)}.gate-box{position:relative;width:min(46vw,540px);min-width:280px;height:clamp(28px,4.2vh,44px);background:transparent;border:none;border-radius:0;display:flex;align-items:center;padding:0 clamp(10px,1.2vw,16px);font-size:clamp(12px,1.3vw,15px);color:var(--text-light);letter-spacing:.02em}.gate-box.is-shaking{animation:gate-shake .45s cubic-bezier(.36,.07,.19,.97)}@keyframes gate-shake{10%,90%{transform:translate(-1px)}20%,80%{transform:translate(2px)}30%,50%,70%{transform:translate(-6px)}40%,60%{transform:translate(6px)}}.gate-input{flex:1;background:transparent;border:none;outline:none;font:inherit;color:inherit;letter-spacing:inherit;border-radius:0;padding:0}.gate-input::placeholder{color:var(--text-dim);opacity:.7}.gate-label{color:var(--text-light);margin-right:6px}.gate-error{margin-top:clamp(8px,1.2vh,14px);min-height:18px;font-size:13px;color:#ff7a7a;letter-spacing:.04em;font-weight:300}.modal-backdrop{position:fixed;inset:0;background:#000000c7;display:flex;align-items:center;justify-content:center;z-index:100;padding:clamp(12px,3vw,32px)}.modal-backdrop-bare{background:#0000008c}.modal{background:#000;border:none;border-radius:12px;padding:clamp(14px,2.4vw,22px);width:100%;max-width:min(82vw,420px);max-height:88vh;max-height:88dvh;overflow-y:auto;position:relative}.modal-close{position:absolute;top:0;right:0;width:44px;height:44px;border:none;background:transparent;display:flex;align-items:center;justify-content:center;font-size:22px;line-height:1;color:var(--text-light);border-radius:0;-webkit-tap-highlight-color:transparent}.modal-title{font-size:clamp(15px,2vw,20px);font-weight:700;font-style:italic;letter-spacing:.04em;margin:0 0 4px;padding-right:36px}.modal-body{font-size:clamp(13px,1.5vw,16px);line-height:1.65;color:var(--text-light);font-weight:300;font-style:normal}.modal-body-side{display:flex;align-items:flex-start;gap:clamp(12px,2.5vw,24px)}.modal-body-side .modal-body-text{padding-top:0}.modal-body-side .modal-body-text p:first-child{margin-top:0}.modal-body-text{flex:1;min-width:0}.modal-body-side-image{width:clamp(120px,30%,220px);height:auto;border-radius:0;object-fit:cover;display:block}.modal-body-note{font-size:11px;color:var(--text-dim);margin-top:10px;line-height:1.4}.modal-body-below-images{display:flex;gap:6px;margin-top:20px}.modal-body-below-images img{flex:1;width:0;max-height:110px;object-fit:contain;display:block;border-radius:0}.modal-body-below-images img:nth-child(2){flex:1.8;max-height:150px}.modal-body p{margin:0 0 12px}.modal-image{width:100%;border-radius:0;margin:8px 0 16px;background:#111;aspect-ratio:4 / 3;object-fit:cover;display:block;border:1px solid #333}.modal-image-contain{aspect-ratio:auto;object-fit:contain;background:#000;height:auto;max-height:60vh;max-height:60dvh}.modal-image-stack{position:relative;width:100%;margin:8px 0 16px}.modal-image-stack .modal-image,.modal-image-stack .modal-image-contain{margin:0}.modal-image-overlay{position:absolute;top:-12px;left:50%;transform:translate(-50%);width:clamp(70px,14vw,120px);height:auto;z-index:2;pointer-events:none}.techtree-wrap{position:relative;width:100%;display:flex;align-items:center;justify-content:center}.techtree-svg{width:100%;max-width:min(82vw,660px);max-height:82vh;max-height:82dvh;display:block}.techtree-popup{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background:#000;padding:22px 26px;width:min(86vw,440px);max-height:88vh;max-height:88dvh;overflow-y:auto;font-family:Inter,Helvetica Neue,Arial,sans-serif;color:#fff;display:flex;flex-direction:column;gap:12px;z-index:4;border-radius:12px}.techtree-popup-wide{width:min(92vw,720px)}.techtree-popup-with-side{width:min(90vw,460px);padding:14px 16px;flex-direction:row;align-items:center;gap:14px}.techtree-popup-with-side .techtree-popup-image{width:110px;max-height:130px;margin:0;flex-shrink:0}.techtree-popup-main{display:flex;flex-direction:column;gap:8px;flex:1;min-width:0}.techtree-popup-with-side .techtree-popup-title,.techtree-popup-with-side .techtree-popup-cost,.techtree-popup-with-side .techtree-popup-desc{text-align:left}.techtree-popup-with-side .techtree-popup-cost,.techtree-popup-with-side .techtree-popup-actions{justify-content:flex-start}.techtree-link{color:inherit;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px}.techtree-link:hover{filter:brightness(1.2)}.techtree-popup-image{width:clamp(70px,25%,120px);max-height:120px;object-fit:contain;display:block;margin:0 auto;border-radius:0;background:transparent}.techtree-popup-video{position:relative;width:100%;aspect-ratio:16 / 9;background:#000}.techtree-popup-video iframe{position:absolute;inset:0;width:100%;height:100%;border:none;display:block}.techtree-fullscreen-btn{position:absolute;bottom:6px;right:6px;width:20px;height:20px;background:#0009;color:#fff;border:none;border-radius:0;cursor:pointer;font-size:12px;font-weight:200;line-height:1;display:flex;align-items:center;justify-content:center;z-index:2;padding:0}.techtree-fullscreen-btn:hover{background:#000000d9}.techtree-poem{white-space:pre-wrap;font-family:Geist,sans-serif;font-size:13px;line-height:1.65;text-align:center;display:block}.techtree-popup-title{font-size:20px;font-weight:600;font-style:italic;text-align:center}.techtree-popup-header{display:flex;justify-content:space-between;align-items:center;gap:12px}.techtree-popup-cost{display:flex;justify-content:center;align-items:center;gap:6px;font-size:16px;font-style:italic;font-weight:600}.techtree-popup-cost img{width:20px;height:20px}.techtree-popup-desc{margin:0;font-size:14px;line-height:1.5;text-align:center;color:#ddd;font-style:normal}.techtree-popup-actions{display:flex;justify-content:space-around;gap:10px;margin-top:6px}.techtree-btn{padding:4px 10px;background:#c8c8c8;color:#111;font-family:inherit;font-size:18px;line-height:1;font-style:normal;font-weight:200;letter-spacing:.06em;text-transform:uppercase;border:none;border-radius:6px;cursor:pointer;transition:background .15s,filter .15s}.techtree-btn:hover:not(:disabled){background:#b8b8b8}.techtree-btn-primary{background:#499df7;color:#fff}.techtree-btn-primary:hover:not(:disabled){background:#3a8be5;filter:brightness(1.05)}.techtree-btn:disabled{opacity:.4;cursor:not-allowed}.modal-bare{position:relative;width:100%;max-width:min(86vw,720px);max-height:90vh;max-height:90dvh;display:flex;align-items:center;justify-content:center;background:transparent;border:none;padding:clamp(16px,3vw,28px)}.modal-bare .modal-body{width:100%}.modal-bare .modal-image,.modal-bare .modal-image-contain{width:100%;max-height:84vh;max-height:84dvh;margin:0;border:none;background:transparent}.modal-bare .modal-image-stack{margin:0}.modal-close-bare{top:10px;right:10px;border:none;background:transparent;z-index:3}.modal-video-wrap{position:relative;width:100%;aspect-ratio:16 / 9;margin:8px 0 16px;border:1px solid #333}.modal-video{position:absolute;inset:0;width:100%;height:100%;border:none;border-radius:0;background:#000}.modal-placeholder{width:100%;aspect-ratio:4 / 3;background:#111;border:1px dashed #555;border-radius:0;display:flex;align-items:center;justify-content:center;color:var(--text-dim);font-size:13px;text-align:center;padding:18px;margin:8px 0 16px}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px;margin:16px 0}.stats-cell{background:#111;border:1px solid #333;border-radius:0;padding:14px}.stats-cell-label{font-size:10px;text-transform:uppercase;letter-spacing:.12em;color:var(--text-dim);margin-bottom:6px;font-weight:400}.stats-cell-value{font-size:clamp(18px,2.4vw,24px);font-weight:300;color:var(--text-light)}.list-section{margin:14px 0 8px}.list-section h3{font-size:12px;text-transform:uppercase;letter-spacing:.12em;color:var(--text-light);margin:0 0 10px;font-weight:400}.list-section ul{list-style:none;padding:0;margin:0}.list-section li{padding:10px 14px;background:#111;border:1px solid #333;border-radius:0;margin-bottom:6px;font-size:14px;display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap;font-weight:300}.list-section li .item-tag{color:var(--text-dim);font-size:11px;text-transform:uppercase;letter-spacing:.08em;background:#000;border:1px solid #333;padding:3px 8px;border-radius:0}.poem{font-family:Georgia,serif;font-style:normal;font-size:clamp(15px,1.8vw,19px);line-height:1.8;white-space:pre-wrap;padding:12px 0;color:var(--text-light)}@media(max-width:540px){.hud{gap:10px}.map-wrap{padding:clamp(60px,10vh,100px) 6px clamp(110px,18vh,160px)}}
