/* FSPS Exploration — V12.5 Green Town design module.
 * UI-only. Does not alter stored buildings, formulas or transactional RPCs.
 */
.fs125-town-root{--t125-ink:#203e32;--t125-forest:#326b54;--t125-border:#dce8dc;--t125-soft:#f6faf5;--t125-mint:#e9f2ea;--t125-gold:#d9a04c;color:var(--t125-ink);min-width:0;}
.fs125-town-root button{touch-action:manipulation;}
.fs125-town-root button:focus-visible,.fs125-town-root summary:focus-visible,.fs125-town-root input:focus-visible{outline:3px solid #8dba9e;outline-offset:2px;}
.fs125-town-root .v120-town-nav{background:#eaf2ed;border:1px solid var(--t125-border);border-radius:17px;padding:5px;top:4px;z-index:36;}
.fs125-town-root .v120-town-tab{border-radius:12px;min-height:43px;color:#557864;white-space:normal;line-height:1.3;font-size:12px;}
.fs125-town-root .v120-town-tab.selected{background:#fff;color:#2f654b;box-shadow:0 2px 8px #2a654819;}
.fs125-town{min-width:0;border:1px solid #e2eae0;background:linear-gradient(155deg,#fbfdf9 0%,#f3f8f3 100%);border-radius:23px;padding:clamp(12px,2vw,23px);box-shadow:0 8px 30px #284a3310;}
.fs125-scene-heading,.fs125-scene-heading-actions,.fs125-scene-title,.fs125-resource-pills,.fs125-inspector-actions,.fs125-card-actions,.fs125-section-heading,.fs125-catalog-toolbar{display:flex;align-items:center;gap:11px;}
.fs125-scene-heading{justify-content:space-between;flex-wrap:wrap;margin-bottom:13px;}
.fs125-scene-title{min-width:0;}
.fs125-scene-mark{display:grid;place-items:center;width:48px;height:48px;border-radius:16px;font-size:25px;background:#e0f0dc;box-shadow:inset 0 -3px 0 #cae2c9;}
.fs125-scene-title p{margin:0 0 1px;font-size:9px;letter-spacing:.16em;font-weight:800;color:#90a698;}
.fs125-scene-title h2{font-size:19px;line-height:1.35;margin:0;font-weight:900;letter-spacing:.01em;color:#254a39;}
.fs125-scene-title span{font-size:10px;color:#71897a;font-weight:650;}
.fs125-scene-heading-actions{margin-left:auto;}
.fs125-primary,.fs125-secondary,.fs125-claim{border:0;border-radius:12px;padding:10px 14px;font-size:12px;line-height:1.2;font-weight:850;min-height:40px;white-space:nowrap;cursor:pointer;transition:background .18s,transform .18s,box-shadow .18s;}
.fs125-primary{background:#376d53;color:white;box-shadow:0 3px 8px #31654d20;}
.fs125-primary:not(:disabled):hover{background:#255941;transform:translateY(-1px);}
.fs125-secondary{background:#fff;border:1px solid #d8e6da;color:#3b7056;}
.fs125-secondary:not(:disabled):hover{background:#eaf4ec;}
.fs125-primary:disabled,.fs125-secondary:disabled,.fs125-claim:disabled{opacity:.45;cursor:not-allowed;box-shadow:none;}
.fs125-resource-pills{gap:7px;flex-wrap:wrap;margin-bottom:13px;}
.fs125-resource-pills > span{font-size:11px;display:flex;gap:4px;align-items:center;background:white;border:1px solid #e3ebe2;border-radius:100px;padding:7px 11px;color:#648272;white-space:nowrap;}
.fs125-resource-pills b{color:#28533f;font-weight:900;font-variant-numeric:tabular-nums;}
.fs125-claim{padding:7px 13px;min-height:34px;background:#e0ecdf;color:#2e644b;margin-left:auto;}
.fs125-claim:not(:disabled):hover{background:#cbe2ce;}
.fs125-workspace{display:grid;grid-template-columns:minmax(0,1fr) minmax(220px,278px);gap:17px;align-items:start;min-width:0;}
.fs125-map-column,.fs125-inspector{min-width:0;}
.fs125-map-caption{display:flex;align-items:center;gap:8px;font-size:12px;font-weight:800;color:#3d7255;padding:8px 12px;margin-bottom:8px;border-radius:12px;background:#eaf4e9;border:1px solid #d5e6d5;min-height:36px;}
.fs125-status-light{width:8px;height:8px;border-radius:100%;background:#77ad7c;box-shadow:0 0 0 3px #d4e7d4;flex:none;}
.fs125-map-frame{padding:9px;background:#fff;border:1px solid #dfe8da;border-radius:21px;box-shadow:0 9px 22px #3c704314;}
.fs125-map-board{position:relative;width:min(100%,610px)!important;aspect-ratio:1 / 1!important;height:auto!important;margin-inline:auto;border:4px solid #8eaf78;border-radius:16px;box-shadow:inset 0 0 0 3px #d0e2c0,0 3px 0 #729c64;overflow:hidden;background:#a8c98f;isolation:isolate;}
.fs125-map-board:before{content:"";position:absolute;inset:0;pointer-events:none;z-index:1;background:radial-gradient(circle at 13% 18%,#fff7 0 2px,transparent 3px),radial-gradient(circle at 76% 82%,#efffe077 0 1.5px,transparent 2px),linear-gradient(145deg,transparent 25%,#fff2 50%,transparent 75%);background-size:68px 71px,89px 91px,100% 100%;}
.fs125-map-cells{position:absolute;inset:0;display:grid;grid-template-columns:repeat(10,minmax(0,1fr));grid-template-rows:repeat(10,minmax(0,1fr));}
.fs125-map-cell{appearance:none;display:block;min-width:0;min-height:0;border:1px solid #83ae7947;margin:0;padding:0;box-sizing:border-box;cursor:crosshair;transition:background .12s;}
.fs125-map-cell.tone-a{background:linear-gradient(135deg,#bbd79b,#a9c990);}
.fs125-map-cell.tone-b{background:linear-gradient(135deg,#b2d193,#a2c786);}
.fs125-map-cell:focus-visible{outline:3px solid #f8eb94;outline-offset:-4px;z-index:8;}
.fs125-map-cell:hover{background:#d5eab9;}
.fs125-map-board.without-grid .fs125-map-cell{border-color:transparent;}
.fs125-map-preview{pointer-events:none;position:relative;z-index:10;background:#f8e9ae8f;border:2px dashed #a67a22;min-width:0;min-height:0;display:grid;place-items:center;border-radius:9px;box-shadow:inset 0 0 20px #fcecb47d;}
.fs125-map-preview.is-invalid{background:#f4adad96;border-color:#cc5959;}
.fs125-map-preview.is-draft{background:#f4e8af9c;border:3px solid #efd062;box-shadow:0 0 0 2px #415c3177,inset 0 0 24px #fffbd3;}
.fs125-map-preview img{width:95%;height:95%;object-fit:contain;filter:drop-shadow(0 3px 2px #496c4b70);}
.fs125-placed-building{position:relative;z-index:12;display:flex;align-items:center;justify-content:center;min-width:0;min-height:0;padding:0;border:0;background:transparent;cursor:pointer;transition:transform .17s,filter .17s;}
.fs125-placed-building img{width:min(94%,95px);height:min(94%,95px);object-fit:contain;pointer-events:none;filter:drop-shadow(0 3px 2px #53754d88);}
.fs125-placed-building:hover{transform:translateY(-3px) scale(1.05);}
.fs125-placed-building.is-selected{outline:3px solid #f0cf72;outline-offset:-3px;border-radius:10px;background:#fffbd744;}
.fs125-placed-building.is-broken{filter:grayscale(.65);}
.fs125-building-level{position:absolute;right:0;bottom:0;display:block;font-size:9px;font-weight:900;color:white;background:#2e6046d9;border-radius:9px 0 0 0;padding:1px 4px;white-space:nowrap;}
.fs125-broken-tag{position:absolute;right:1px;top:1px;border-radius:100px;color:white;background:#c35a47;font-weight:900;font-size:9px;padding:2px 6px;}
.fs125-map-toast{position:absolute;left:50%;bottom:18px;transform:translateX(-50%);z-index:20;background:#294b3af2;color:white;border-radius:12px;padding:11px 17px;max-width:85%;min-width:140px;text-align:center;box-shadow:0 8px 24px #263f3160;font-size:12px;font-weight:800;pointer-events:none;}
.fs125-map-toast.is-error{background:#ab5749;}
.fs125-map-footer{display:flex;justify-content:space-between;gap:10px;color:#7d9181;font-size:10px;font-weight:700;padding:8px 5px 2px;}
.fs125-roster{margin-top:14px;border:1px solid #dfe9db;border-radius:15px;background:#f9fbf8;padding:11px;}
.fs125-roster-heading{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:9px;}
.fs125-roster-heading strong{font-size:12px;color:#355843;}.fs125-roster-heading span{font-size:10px;color:#8a9e8f;}
.fs125-roster-items{display:flex;gap:7px;overflow-x:auto;padding:3px 3px 7px;scrollbar-width:thin;}
.fs125-roster-item,.fs125-roster-empty{flex:none;display:flex;gap:6px;align-items:center;border:1px solid #dce6db;border-radius:12px;background:white;padding:6px 9px;min-height:51px;max-width:170px;font-size:11px;font-weight:800;color:#3b5d48;cursor:pointer;}
.fs125-roster-item img{width:36px;height:36px;object-fit:contain;flex:none;}.fs125-roster-item span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:80px;}
.fs125-roster-item small{font-size:9px;color:#819786;white-space:nowrap;}.fs125-roster-item.is-selected{border-color:#4d8861;background:#edf8ed;box-shadow:0 0 0 1px #4d886144;}
.fs125-roster-empty{max-width:none;}
.fs125-inspector{position:sticky;top:60px;border:1px solid #d9e6d8;border-radius:18px;background:white;box-shadow:0 7px 22px #41634a10;min-height:200px;padding:15px;}
.fs125-inspector-empty{display:flex;flex-direction:column;align-items:center;text-align:center;gap:8px;padding:17px 4px 10px;}
.fs125-inspector-icon{font-size:36px;}.fs125-inspector-empty h3{font-size:15px;font-weight:900;color:#385e45;margin:0;}.fs125-inspector-empty p{font-size:11px;color:#7f9384;line-height:1.4;margin:0 0 7px;}
.fs125-inspector-head{display:flex;align-items:center;gap:10px;min-width:0;}.fs125-inspector-head img{width:67px;height:67px;object-fit:contain;flex:none;background:#ecf4e9;border-radius:13px;padding:3px;}
.fs125-inspector-head>div{min-width:0;}.fs125-inspector-head span{font-size:10px;color:#7f987f;}.fs125-inspector-head h3{font-size:15px;font-weight:900;line-height:1.35;word-break:break-word;color:#29513e;margin:3px 0 0;}
.fs125-inspector-status{margin:13px 0;background:#eaf4ec;border:1px solid #dceadd;color:#497d59;border-radius:10px;padding:8px 10px;font-size:11px;font-weight:800;}
.fs125-inspector-status.is-broken{background:#fff0e9;color:#a65342;border-color:#f1cfbf;}
.fs125-inspector-stats{display:grid;grid-template-columns:1fr 1fr;gap:7px;}.fs125-inspector-stats div{padding:10px 8px;background:#f7f9f5;border-radius:10px;display:flex;flex-direction:column;gap:4px;}
.fs125-inspector-stats small{font-size:10px;color:#819386;}.fs125-inspector-stats strong{font-size:14px;color:#2f6149;font-variant-numeric:tabular-nums;}
.fs125-inspector-actions{flex-wrap:wrap;align-items:stretch;margin-top:13px;gap:7px;}.fs125-inspector-actions>*{flex:1 1 100px;min-width:0;white-space:normal;padding:9px 7px;}
.fs125-inspector-more{font-size:11px;color:#7a927d;margin-top:13px;border-top:1px solid #e1ebe0;padding-top:9px;}
.fs125-inspector-more summary,.fs125-mini-details summary{cursor:pointer;color:#3b7455;font-weight:850;list-style:none;}
.fs125-inspector-more summary::-webkit-details-marker,.fs125-mini-details summary::-webkit-details-marker{display:none;}
.fs125-inspector-more p{margin:8px 0 0;line-height:1.55;}
.fs125-confirm-box{margin-top:12px;padding:12px;border:1px solid #eacb75;border-radius:12px;background:#fff9df;color:#655130;}
.fs125-confirm-box strong{font-size:12px;}.fs125-confirm-box p{font-size:10px;margin:4px 0 0;color:#8a7449;}
.fs125-cancel-move{border:0;background:transparent;color:#a16b46;text-decoration:underline;font-size:11px;margin-top:9px;cursor:pointer;}
.fs125-catalog,.fs125-owned{min-width:0;padding:18px;border-radius:20px;border:1px solid #dfe8df;background:#fcfdfb;}
.fs125-catalog-toolbar{justify-content:space-between;flex-wrap:wrap;margin-bottom:13px;}
.fs125-catalog-title,.fs125-section-heading>div{display:flex;flex-direction:column;gap:3px;}.fs125-catalog-title strong,.fs125-section-heading h3{font-size:19px;color:#2d553e;font-weight:900;margin:0;}.fs125-catalog-title span,.fs125-section-heading span{font-size:11px;color:#809581;}
.fs125-search input{width:min(100%,250px);border:1px solid #d9e7d9;background:#fff;border-radius:11px;padding:10px 13px;font-size:12px;color:#2e503b;}
.fs125-categories{display:flex;align-items:center;gap:6px;overflow-x:auto;padding:5px 2px 11px;scrollbar-width:thin;}
.fs125-chip{border:1px solid #d9e7dc;background:white;color:#53765e;padding:8px 11px;min-height:36px;border-radius:11px;font-size:11px;font-weight:800;white-space:nowrap;cursor:pointer;}
.fs125-chip.is-active{color:#fff;background:#3f7358;border-color:#3f7358;}.fs125-chip span{margin-right:5px;}
.fs125-building-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,255px),1fr));gap:13px;}
.fs125-building-card{padding:15px;min-width:0;border:1px solid #dfe9df;border-radius:16px;background:#fff;display:flex;flex-direction:column;gap:11px;box-shadow:0 4px 17px #3c70430d;}
.fs125-building-card.is-locked{background:#f8f8f6;}
.fs125-building-head{display:flex;align-items:center;gap:12px;min-width:0;}.fs125-catalog-art{width:75px;height:75px;object-fit:contain;flex:none;padding:4px;background:#eef5eb;border-radius:13px;}
.fs125-building-copy{min-width:0;display:flex;flex-direction:column;align-items:flex-start;gap:4px;}
.fs125-overline{color:#83a089;font-size:10px;font-weight:850;}.fs125-building-copy h3{font-size:15px;font-weight:900;color:#274e38;margin:0;line-height:1.35;}
.fs125-price{border-radius:8px;padding:4px 7px;background:#f7edd1;color:#84601a;font-size:11px;font-weight:900;}
.fs125-effect-chips{display:flex;gap:5px;flex-wrap:wrap;}.fs125-effect-chips span{font-size:10px;color:#50765c;background:#edf6ed;padding:6px 7px;border-radius:8px;font-weight:700;}
.fs125-lock-note{font-size:11px;color:#a2693e;background:#fff4e8;padding:7px 9px;border-radius:9px;}
.fs125-card-actions{justify-content:space-between;margin-top:auto;gap:10px;}.fs125-card-actions .fs125-primary{min-width:86px;}.fs125-card-actions .fs125-mini-details{flex:1;min-width:0;}
.fs125-mini-details{font-size:11px;line-height:1.55;color:#6a836f;}.fs125-mini-details div{margin-top:8px;padding:10px;border-radius:10px;background:#f5f9f4;}.fs125-mini-details p{margin-top:4px;}
.fs125-owned .fs125-building-card>.fs125-mini-details{border-top:1px solid #edf2ec;padding-top:7px;}
.fs125-section-heading{justify-content:space-between;margin-bottom:15px;}.fs125-max-level{font-size:12px;color:#819581;background:#eef4eb;border-radius:10px;padding:10px;}
.fs125-empty{border:1px dashed #ccdece;background:#f5faf6;color:#6f8b78;border-radius:15px;padding:30px;text-align:center;font-size:13px;grid-column:1/-1;}
@media(max-width:920px){.fs125-workspace{grid-template-columns:minmax(0,1fr) 220px;gap:10px;}.fs125-inspector{padding:11px;}}
@media(max-width:750px){.fs125-workspace{grid-template-columns:1fr;}.fs125-map-column{min-width:0;}.fs125-inspector{position:relative;top:auto;min-height:0;}.fs125-scene-heading-actions{margin-left:0;}.fs125-map-board{max-width:580px;}.fs125-inspector-stats{grid-template-columns:repeat(2,1fr);}.fs125-roster{margin-bottom:3px;}}
@media(max-width:540px){
.fs125-town{padding:10px;border-radius:17px;}.fs125-scene-heading{gap:8px;}.fs125-scene-title h2{font-size:16px;}.fs125-scene-mark{width:39px;height:39px;font-size:21px;}.fs125-scene-heading-actions{width:100%;justify-content:flex-end;}
.fs125-scene-heading-actions button{min-height:35px;padding:7px 10px;font-size:11px;}.fs125-resource-pills{gap:5px;}.fs125-resource-pills>span{padding:5px 8px;font-size:10px;}.fs125-claim{min-height:32px;font-size:10px;}
.fs125-map-frame{padding:5px;border-radius:14px;}.fs125-map-board{border-width:2px;border-radius:9px;}.fs125-map-caption{font-size:11px;padding:7px 9px;}.fs125-map-footer{font-size:9px;gap:5px;}.fs125-placed-building img{width:94%;height:94%;}.fs125-building-level{font-size:8px;padding:0 2px;}.fs125-roster{padding:7px;}.fs125-inspector{padding:12px;}.fs125-catalog,.fs125-owned{padding:11px;}
.fs125-town-root .v120-town-tab{padding:8px 4px;font-size:10px;min-height:40px;}
}
@media(prefers-reduced-motion:reduce){.fs125-town-root *{transition:none!important;animation:none!important;}}
/* Touch route: choose a building before touching the map; confirm in the same viewport. */
.fs125-mobile-roster,.fs125-mobile-confirm{display:none;}
@media(max-width:750px){
.fs125-mobile-roster{display:flex;gap:6px;overflow-x:auto;padding:4px 0 10px;scrollbar-width:thin;}
.fs125-mobile-roster-chip{border:1px solid #d9e6d9;border-radius:10px;background:#fff;padding:5px 9px;display:flex;align-items:center;gap:5px;white-space:nowrap;color:#436f54;font-size:11px;font-weight:800;flex:none;min-height:39px;}
.fs125-mobile-roster-chip img{height:27px;width:27px;object-fit:contain;}
.fs125-mobile-roster-chip.is-selected{background:#e6f3e8;border-color:#5f9b77;}
.fs125-roster{display:none;}
.fs125-mobile-confirm{display:flex;align-items:center;gap:5px;position:absolute;z-index:25;left:5px;right:5px;bottom:5px;background:#fffffff2;backdrop-filter:blur(8px);border:1px solid #e1d39d;border-radius:11px;padding:6px;box-shadow:0 6px 18px #294b3a45;}
.fs125-mobile-confirm span{flex:1;min-width:0;color:#527053;font-size:11px;font-weight:900;white-space:nowrap;}
.fs125-mobile-confirm button{padding:6px;min-height:33px;font-size:10px;}
.fs125-inspector .fs125-confirm-box{display:none;}
}
