:root{--ink:#201923;--deep:#21192a;--deep2:#16121c;--paper:#efe4ca;--paper2:#d9c79f;--gold:#c79231;--teal:#0e5e68;--burg:#7d334d;--muted:#6c6266}
*{box-sizing:border-box}html,body{margin:0;min-height:100%}body{font-family:Inter,Arial,sans-serif;color:#f8f3e7;background:linear-gradient(rgba(25,18,31,.88),rgba(25,18,31,.94)),url('assets/council_hall.png') center/cover fixed;background-color:#1b1621;min-height:100vh}button,input,textarea,select{font:inherit}button{cursor:pointer}[hidden]{display:none!important}a{color:inherit}

/* HOME v10 page shell restored */
.kotc-shell{max-width:1440px;margin:auto;padding:18px 20px 60px}.map-shell{max-width:1760px}.kotc-top{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:13px 18px;position:sticky;top:10px;z-index:70;background:rgba(13,11,18,.9);border:1px solid rgba(255,255,255,.1);backdrop-filter:blur(10px);border-radius:18px}.kotc-brand{text-decoration:none;display:flex;align-items:center;gap:12px}.kotc-seal{width:48px;height:48px;border-radius:50%;display:grid;place-items:center;background:#633149;border:3px solid #cfaa5c;font-family:Cinzel,serif;font-size:25px}.kotc-brand strong{font-family:Cinzel,serif;font-size:20px}.kotc-brand small{display:block;font-size:8px;letter-spacing:.18em;color:#d4c6a6;margin-top:3px}.kotc-nav{display:flex;gap:6px;flex-wrap:wrap}.kotc-nav a{text-decoration:none;padding:10px 12px;border-radius:10px;font-size:11px;font-weight:800;letter-spacing:.05em}.kotc-nav a:hover,.kotc-nav a.active{background:#0e5e68}.page-hero{padding:76px 10px 35px;max-width:960px}.map-hero{padding-bottom:24px}.eyebrow{font-size:10px;font-weight:900;letter-spacing:.22em;color:#dfbf78;text-transform:uppercase}.page-hero h1{font-family:Cinzel,serif;font-size:clamp(42px,6vw,82px);line-height:.95;margin:8px 0 15px}.page-hero p{max-width:760px;line-height:1.7;color:#ded5c5}.paper{background:rgba(244,235,216,.97);color:var(--ink);border:6px solid #c8b58d;box-shadow:0 18px 50px rgba(0,0,0,.28);position:relative}.paper:after{content:'';position:absolute;inset:10px;border:1px solid rgba(93,65,35,.2);pointer-events:none}.btn{border:0;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;padding:12px 16px;font-weight:900;text-decoration:none;border-radius:8px;background:#0e5e68;color:white}.btn.ghost{background:#ddd0b4;color:#2e2630}.footer{text-align:center;padding:44px 0 10px;color:#bcb0aa;font-size:10px;letter-spacing:.12em}

/* Old map layout around the new layered map */
.map-layout{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:18px;align-items:start}.map-column{min-width:0;position:relative}.map-toolbar{min-height:64px;padding:9px 13px;display:flex;align-items:center;justify-content:space-between;gap:14px;border-width:4px;box-shadow:0 10px 30px rgba(0,0,0,.2)}.toolbar-group{display:flex;align-items:center;gap:7px}.toolbar-actions{justify-content:flex-end;flex-wrap:wrap}.toolbar-copy{text-align:center;display:flex;flex-direction:column;gap:3px;flex:0 0 auto}.toolbar-copy strong{font:800 14px Cinzel,serif;letter-spacing:.1em}.toolbar-copy span{font-size:10px;font-weight:800;color:#78684f}.map-tool,.map-toggle{border:1px solid #9e8a65;background:#fffaf0;color:#241d27;height:36px;min-width:38px;padding:0 11px;font-weight:900;cursor:pointer}.map-tool:hover,.map-toggle:hover{background:#e8dcc2}.map-toggle.active{background:#0e5e68;color:#fff;border-color:#0e5e68}.map-toggle:disabled{opacity:.42;cursor:not-allowed}.editor-only{display:flex;align-items:center;gap:7px}.editor-auth{display:flex;align-items:center;gap:7px;margin-left:3px;padding-left:9px;border-left:1px solid #bba985}.editor-auth>span{font-size:9px;color:#78684f;font-weight:800;white-space:nowrap}.auth-button{font-size:9px;padding:0 9px}.save-colours{background:#7d334d;color:#fff;border-color:#7d334d}.status-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:#419b66;margin-right:5px}
.map-frame-wrap{position:relative}.map-viewport{position:relative;height:min(72vh,820px);min-height:560px;margin-top:12px;background:#1e192c;border:7px solid #c8b58d;box-shadow:0 18px 48px rgba(0,0,0,.35),inset 0 0 70px rgba(0,0,0,.32);overflow:hidden;cursor:grab;touch-action:none;user-select:none}.map-viewport.dragging{cursor:grabbing}.map-stage{position:absolute;left:0;top:0;width:5000px;height:5000px;transform-origin:0 0;will-change:transform;background:#1b1830}.world-underlay,.world-mainland,.world-land,.world-overlay,.world-fog{position:absolute;inset:0;width:5000px;height:5000px;pointer-events:none;user-select:none}.world-underlay{z-index:0}.world-mainland{z-index:1}.world-land{z-index:2;opacity:.94}.subregion-layer{position:absolute;inset:0;z-index:4;pointer-events:none}.world-details{z-index:8;opacity:.98}.world-fog{z-index:14;opacity:1}.subregion{position:absolute;border:0;padding:0;margin:0;background:var(--region-colour,transparent);opacity:.74;-webkit-mask-image:var(--mask);mask-image:var(--mask);-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;pointer-events:none;transition:opacity .1s,filter .1s}.subregion[data-region="unclaimed"]{opacity:0}.paint-mode .subregion{pointer-events:auto;cursor:crosshair}.paint-mode .subregion[data-region="unclaimed"]{opacity:.05;background:#fff}.paint-mode .subregion:hover{opacity:.88;filter:brightness(1.12) drop-shadow(0 0 7px #fff)}.selection-overlay{position:absolute;z-index:5;background:#ffda60;opacity:.42;pointer-events:none;-webkit-mask-image:var(--mask);mask-image:var(--mask);-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;filter:drop-shadow(0 0 10px #ffe08a)}
.road-layer{position:absolute;inset:0;width:5000px;height:5000px;z-index:6;pointer-events:none}.road-shadow{fill:none;stroke:#1c132b;stroke-width:28;stroke-linecap:round;stroke-linejoin:round;opacity:.88}.road{fill:none;stroke:#392f52;stroke-width:16;stroke-linecap:round;stroke-linejoin:round}.detail-layer,.label-layer,.poi-layer{position:absolute;inset:0;pointer-events:none}.detail-layer{z-index:7}.label-layer{z-index:9}.poi-layer{z-index:10}.map-detail{position:absolute;transform-origin:center center;image-rendering:auto;filter:drop-shadow(0 6px 4px #00101955)}
.map-label{position:absolute;transform:translate(-50%,-50%);text-align:center;color:#fff;font-family:Cinzel,serif;font-weight:800;text-shadow:0 4px 4px #0009;white-space:nowrap;pointer-events:auto;cursor:pointer;border:0}.map-label.banner{font-family:Inter,sans-serif;font-size:52px;letter-spacing:.03em;padding:16px 56px 16px 36px;background:var(--banner,#138c96);clip-path:polygon(0 0,88% 0,100% 50%,88% 100%,0 100%);box-shadow:0 8px 0 #091c2690}.map-label.small{font-size:38px;letter-spacing:.14em}.map-label.sign{font-family:Inter,sans-serif;font-size:40px;padding:14px 24px;background:#14263b;border:4px solid #334b65;transform:translate(-50%,-50%) rotate(-1deg)}.label-layer.hidden,.poi-layer.hidden{display:none}
.poi-holder{position:absolute;transform:translate(-50%,-50%);pointer-events:auto;border:0;background:none;padding:0;cursor:pointer;filter:drop-shadow(0 8px 8px rgba(0,0,0,.4));transition:filter .13s}.poi-holder:hover,.poi-holder.selected{filter:drop-shadow(0 12px 10px rgba(0,0,0,.55)) drop-shadow(0 0 10px #ffe08a)}.poi-visual{position:relative;display:block;min-width:84px;min-height:84px}.poi-holder img{display:block;width:84px;max-height:84px;object-fit:contain;margin:auto}.poi-holder.capital img{width:144px;max-height:116px}.poi-visual.port{width:92px;height:84px}.poi-visual.port .ship-hull,.poi-visual.port .ship-sails{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:88px;height:auto}.poi-visual.port .ship-sails{width:70px;top:42%}.poi-label{position:absolute;left:50%;top:calc(100% + 8px);transform:translateX(-50%);padding:8px 14px;background:#21192aef;color:#fff9e8;border:2px solid rgba(255,255,255,.22);font:800 18px Inter,sans-serif;white-space:nowrap;opacity:0;transition:.12s}.poi-holder:hover .poi-label,.poi-holder.selected .poi-label{opacity:1}.map-tooltip{position:absolute;z-index:45;padding:8px 10px;border:1px solid #c8aa6b;background:#15111bef;color:#fff;font-size:11px;pointer-events:none;box-shadow:0 5px 20px #0009}.map-drag-hint{position:absolute;left:14px;bottom:14px;background:rgba(15,12,22,.78);color:#e8d8b7;padding:7px 9px;font-size:9px;font-weight:900;letter-spacing:.1em;pointer-events:none;z-index:20}
.realm-legend{margin-top:12px;padding:12px 14px;border-width:4px;display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.legend-button{border:1px solid #bba67f;background:#fffaf0;color:#281f27;display:flex;align-items:center;gap:9px;padding:10px;cursor:pointer;text-align:left;min-width:0}.legend-button:hover{background:#eee2ca}.legend-swatch{width:18px;height:18px;border-radius:2px;border:2px solid rgba(20,20,25,.35);flex:0 0 auto}.legend-button span{display:block;min-width:0}.legend-button strong{font:800 10px Cinzel,serif;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.legend-button small{display:block;font-size:9px;color:#786d69;margin-top:2px}

/* Old parchment notebook sidebar */
.map-sidebar{position:sticky;top:92px;padding:26px;border-width:5px;min-height:540px}.sidebar-kicker{font-size:9px;font-weight:900;letter-spacing:.18em;color:#846b42;margin-bottom:8px}.map-sidebar h2{font:800 29px Cinzel,serif;line-height:1.05;margin:0 0 10px}.sidebar-desc{color:#655b5f;font-size:13px;line-height:1.55}.empty-state{margin-top:20px;padding:35px 18px;border:1px dashed #ae9a75;text-align:center;background:#faf4e9;display:flex;flex-direction:column;gap:7px;color:#786e6d}.empty-icon{font-size:42px;color:#7d334d}.region-group-chip{display:inline-flex;align-items:center;gap:7px;padding:6px 8px;background:#e5d9c0;font-size:9px;font-weight:900;letter-spacing:.06em;margin:4px 0 14px}.region-group-chip i{width:11px;height:11px;border-radius:50%;display:block;border:1px solid #0004}.province-id{font-size:10px;color:#8c7d77;margin-bottom:10px}.legacy-note{font-size:10px;color:#7f716c;margin:8px 0}.region-editor .field{margin-top:12px}.region-editor label{display:block;font-size:10px;font-weight:900;letter-spacing:.12em;text-transform:uppercase;color:#6e5a49;margin-bottom:6px}.region-editor input,.region-editor select,.region-editor textarea{width:100%;padding:11px 12px;border:1px solid #bba985;background:#fffdf8;color:#2e2630;font:inherit}.region-editor textarea{min-height:110px;resize:vertical}.actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:18px}.poi-info{padding:15px;background:#fff9ed;border:1px solid #c6b38b;margin-top:18px}.poi-info h3{font:800 19px Cinzel,serif;margin:0 0 7px}.poi-info p{font-size:12px;color:#655b5f;line-height:1.55}.save-note{font-size:10px;color:#736762;margin-top:10px}

/* New editor paint tools restyled to match old parchment UI */
.paint-panel{position:absolute;z-index:42;right:18px;top:26px;width:330px;padding:20px;border-width:4px;box-shadow:0 18px 48px rgba(0,0,0,.4)}.paint-heading{display:flex;justify-content:space-between;align-items:flex-start}.paint-panel h2{font:800 22px Cinzel,serif;margin:3px 0 0}.paint-panel p,.paint-help{font-size:12px;line-height:1.55;color:#655b5f}.icon-btn{width:34px;height:34px;border:1px solid #9e8a65;background:#fffaf0;color:#281f27;font-size:21px;font-weight:900}.region-palette{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:15px 0}.region-swatch{display:flex;align-items:center;gap:9px;justify-content:flex-start;text-align:left;border:1px solid #bba67f;background:#fffaf0;color:#281f27;padding:9px;font-size:10px;font-weight:900}.region-swatch::before{content:"";width:18px;height:18px;background:var(--swatch);border:1px solid #4a4038;box-shadow:0 0 0 1px #fff7}.region-swatch:hover{background:#eee2ca}.region-swatch.active{background:#0e5e68;color:#fff;border-color:#0e5e68}.paint-help{padding:10px;border:1px solid #c6b38b;background:#fff9ed;margin-bottom:12px}

.login-dialog{padding:0;border:0;background:transparent;color:#281f27;box-shadow:0 24px 60px #000c}.login-dialog::backdrop{background:#000b}.login-dialog form{width:360px;padding:26px;position:relative;z-index:1}.login-dialog h2{font:800 24px Cinzel,serif;margin:0 0 15px}.login-dialog label{display:block;font-size:10px;text-transform:uppercase;font-weight:900;letter-spacing:.09em;color:#65575c;margin:12px 0}.login-dialog input{display:block;width:100%;margin-top:6px;padding:11px;border:1px solid #b7a681;background:#fffaf0;color:#281f27}.dialog-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:17px}.form-error{color:#9d2638;font-size:12px}

@media(max-width:1120px){.map-layout{grid-template-columns:1fr}.map-sidebar{position:static;min-height:0}.realm-legend{grid-template-columns:repeat(2,1fr)}.toolbar-actions{max-width:60%}}
@media(max-width:850px){.kotc-top{position:static}.kotc-nav{display:none}.page-hero{padding-top:45px}.map-toolbar{flex-wrap:wrap}.toolbar-copy{order:-1;width:100%}.toolbar-actions{max-width:none;width:100%;justify-content:center}.map-viewport{height:62vh;min-height:430px;border-width:4px}.map-sidebar{padding:20px}.paint-panel{right:10px;top:20px;width:min(330px,calc(100vw - 48px))}}
@media(max-width:620px){.kotc-shell{padding:10px 10px 40px}.kotc-brand strong{font-size:15px}.kotc-seal{width:40px;height:40px;font-size:20px}.page-hero{padding-left:4px;padding-right:4px}.realm-legend{grid-template-columns:1fr 1fr}.editor-auth{width:100%;justify-content:center;border-left:0;border-top:1px solid #bba985;padding:7px 0 0;margin:3px 0 0}.region-palette{grid-template-columns:1fr}}
/* v67: PSD-only map artwork. Political colour sits over the native PSD geography. */
.world-underlay{z-index:0}
.world-base-tint{position:absolute;inset:0;width:5000px;height:5000px;z-index:2;pointer-events:none;background:#9b8a4a;opacity:.38;-webkit-mask:url('assets/map/world-land-white.png?v=69') 0 0/5000px 5000px no-repeat;mask:url('assets/map/world-land-white.png?v=69') 0 0/5000px 5000px no-repeat}
.subregion-layer{z-index:4}.subregion{opacity:.72;transition:opacity .1s,filter .1s}.subregion[data-region="unclaimed"]{opacity:.72}.paint-mode .subregion[data-region="unclaimed"]{opacity:.72;background:#fff}.selection-overlay{z-index:5}

/* v68 layering fix: keep rivers/text/terrain above political colours */
.world-underlay{z-index:0}
.world-land{z-index:2;opacity:.94}
.subregion-layer{z-index:4}
.world-overlay{position:absolute;inset:0;width:5000px;height:5000px;pointer-events:none;user-select:none;z-index:6;opacity:1;mix-blend-mode:normal}
.selection-overlay{z-index:7}

/* v73 manual province move mode */
.reset-moves{background:#7a5c48;color:#fff;border-color:#7a5c48}
.move-mode .subregion{pointer-events:auto;cursor:move}
.move-mode .subregion.move-selected{opacity:.9;filter:brightness(1.1) drop-shadow(0 0 10px #ffe083) drop-shadow(0 0 3px #3a2410)}
.move-mode .subregion.move-dragging{cursor:grabbing;filter:brightness(1.15) drop-shadow(0 0 14px #fff0a8)}
.move-mode .selection-overlay{display:none!important}
.map-viewport.move-mode{cursor:grab}
.map-viewport.move-mode.dragging{cursor:grabbing}
.map-viewport.move-mode .map-drag-hint{background:rgba(82,52,23,.88);color:#fff4cf}

/* v76: exact Island(1).psd province geometry. No generated mainland or alignment transform. */
.world-mainland,.world-base-tint{display:none!important}
.world-underlay{z-index:0!important;opacity:1!important}
.subregion-layer{z-index:4!important}
.subregion{transform:none!important}
.world-overlay{z-index:6!important;opacity:1!important;mix-blend-mode:normal!important}

/* v79 — transparent ownership masks over the untouched Main Island. */
.map-stage{background:#002E44!important}
.world-underlay{z-index:0!important;opacity:1!important}
.subregion-layer{z-index:4!important}
.subregion{background:var(--region-colour,transparent)!important;opacity:.44!important;mix-blend-mode:normal!important;filter:none!important}
.subregion[data-region="unclaimed"]{opacity:0!important;background:transparent!important}
.paint-mode .subregion[data-region="unclaimed"]{opacity:.08!important;background:#fff!important}
.paint-mode .subregion:hover{opacity:.62!important;filter:drop-shadow(0 0 7px rgba(255,255,255,.7))!important}
.move-mode .subregion.move-selected{opacity:.62!important;filter:drop-shadow(0 0 10px #ffe083)!important}
.move-mode .subregion.move-dragging{opacity:.68!important;filter:drop-shadow(0 0 14px #fff0a8)!important}
.world-overlay{z-index:6!important;opacity:1!important;mix-blend-mode:normal!important}
.ownership-field{padding:10px;background:#f7efdc;border:1px solid #c8b58d}
.ownership-field small{display:block;margin-top:7px;color:#766a62;font-size:9px;line-height:1.45}

/* v80: animated ambience and interactive scenery */
.ambient-layer,.fixed-label-layer,.object-layer,.cloud-layer{position:absolute;inset:0;width:5000px;height:5000px;pointer-events:none}
.ambient-layer{z-index:3}
.fixed-label-layer{z-index:3}
.object-layer{z-index:10;pointer-events:auto}
.cloud-layer{z-index:11}
.ambient-item,.cloud-item{position:absolute;transform:translate(-50%,-50%);pointer-events:none;user-select:none}
.ambient-item svg,.cloud-item svg{display:block}
.ambient-wave{opacity:.82;animation:waveSway var(--dur,8s) ease-in-out infinite;animation-delay:var(--delay,0s)}
.ambient-wave.small{opacity:.72}
.ambient-wave svg{width:120px;height:28px}
.ambient-wave.small svg{width:70px;height:20px}
.ambient-wave path{fill:none;stroke:#2bb6d1;stroke-width:5;stroke-linecap:round;stroke-linejoin:round}
@keyframes waveSway{0%,100%{transform:translate(-50%,-50%) translateX(-10px)}50%{transform:translate(-50%,-50%) translateX(10px)}}
.cloud-item{opacity:.28;animation:cloudDrift var(--dur,75s) linear infinite;animation-delay:var(--delay,0s)}
.cloud-item svg{width:220px;height:110px}
.cloud-item path{fill:#ffffff}
@keyframes cloudDrift{0%{transform:translate(-50%,-50%) translateX(-110px)}50%{transform:translate(-50%,-50%) translateX(40px)}100%{transform:translate(-50%,-50%) translateX(150px)}}
.background-map-label{position:absolute;transform:translate(-50%,-50%) rotate(var(--rot,0deg));font-family:Cinzel,serif;font-weight:800;letter-spacing:.22em;color:rgba(255,245,228,.72);text-shadow:0 2px 2px rgba(0,0,0,.22);white-space:nowrap;pointer-events:none;font-size:46px}
.background-map-label.large{font-size:54px;letter-spacing:.12em}
.background-map-label.small{font-size:36px;letter-spacing:.18em}
.map-object{position:absolute;transform:translate(-50%,-50%) scale(var(--scale,1)) scaleX(var(--flip,1));transform-origin:center center;border:0;background:none;padding:0;pointer-events:auto;cursor:pointer;filter:drop-shadow(0 7px 8px rgba(0,0,0,.35));transition:filter .13s ease,opacity .13s ease}
.map-object:hover,.map-object.selected{filter:drop-shadow(0 10px 10px rgba(0,0,0,.48)) drop-shadow(0 0 10px rgba(255,224,131,.75))}
.map-object.object-moving{cursor:grabbing}
.map-object .object-visual{display:block}
.map-object svg{display:block;overflow:visible}
.map-object.castle svg{width:108px;height:100px}
.map-object.ship svg{width:96px;height:84px}
.map-object.tree svg{width:72px;height:84px}
.map-object.mountain svg{width:108px;height:82px}
.map-object .object-tag{position:absolute;left:50%;top:100%;transform:translateX(-50%) scaleX(calc(1 / var(--flip,1)));margin-top:6px;padding:6px 10px;background:#241c2dde;color:#fff7e7;border:1px solid rgba(255,255,255,.26);font:800 15px Inter,sans-serif;white-space:nowrap;opacity:0;transition:opacity .13s ease;pointer-events:none}
.map-object:hover .object-tag,.map-object.selected .object-tag{opacity:1}
.map-viewport.object-mode{cursor:grab}
.map-viewport.object-mode .map-drag-hint{background:rgba(14,94,104,.92);color:#effdfd}
.object-field-note{padding:10px;background:#f7efdc;border:1px solid #c8b58d;color:#756961;font-size:10px;line-height:1.45;margin-top:10px}
.object-range{display:flex;align-items:center;gap:10px}.object-range output{min-width:40px;font-size:11px;font-weight:800;color:#6f5a44}
.object-delete{background:#8f2b3a;color:#fff}

/* v81: use only provided map detail assets */
.ambient-wave{animation:waveSway var(--dur,8s) ease-in-out infinite;animation-delay:var(--delay,0s)}
.ambient-wave img{display:block;width:100%;height:auto}
.ambient-wave.wave-1{width:62px;height:24px}
.ambient-wave.wave-2{width:115px;height:24px}
.ambient-wave.wave-3{width:219px;height:24px}
.cloud-item img{display:block;width:100%;height:auto}
.cloud-item.cloud-1,.cloud-item.cloud-2,.cloud-item.cloud-3{width:177px;height:59px}
.cloud-item.cloud-4{width:330px;height:108px}
.map-object .object-visual{display:block;position:relative}
.map-object .object-visual img{display:block;max-width:none;user-select:none;pointer-events:none}
.map-object.castle .object-visual img{height:auto}
.map-object.castle.castle-1 .object-visual{width:97px;height:58px}
.map-object.castle.castle-2 .object-visual{width:70px;height:68px}
.map-object.castle.castle-3 .object-visual{width:43px;height:36px}
.map-object.ship .object-visual{width:114px;height:90px}
.map-object.ship .ship-mask{position:absolute;left:0;bottom:0;width:114px;height:40px;opacity:1}
.map-object.ship .ship-hull{position:absolute;left:10px;bottom:11px;width:95px;height:90px}
.map-object.ship .ship-sails{position:absolute;left:29px;top:11px;width:75px;height:51px}
.map-object.ship .ship-flag{position:absolute;left:4px;top:33px;width:59px;height:10px}
.map-object.tree.tree-a .object-visual{width:36px;height:54px}
.map-object.tree.tree-round .object-visual{width:20px;height:26px}
.map-object.tree.tree-palm .object-visual{width:39px;height:38px}
.map-object.mountain.mountain-1 .object-visual{width:226px;height:147px}
.map-object.mountain.mountain-2 .object-visual{width:66px;height:43px}
.map-object.mountain.hill-1 .object-visual{width:89px;height:31px}

/* v82: object picker in sidebar */
.object-picker-panel{margin:18px 0 22px;padding:16px;border:1px solid #c8b48e;background:#fff9ee}
.object-picker-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:6px}
.object-picker-head h3{margin:2px 0 0;font:800 24px Cinzel,serif;line-height:1.05;color:#2e2630}
.object-picker-badge{display:inline-flex;align-items:center;padding:6px 8px;background:#e5d9c0;font-size:9px;font-weight:900;letter-spacing:.12em;text-transform:uppercase;color:#5b4433}
.object-picker-desc{margin:0 0 14px;color:#655b5f;font-size:12px;line-height:1.5}
.object-picker-tabs{display:flex;gap:8px;overflow:auto;padding-bottom:4px;margin-bottom:14px}
.object-picker-tab{appearance:none;border:1px solid #bca67f;background:#f4ead7;color:#423537;padding:8px 10px;font:800 11px/1 Inter,sans-serif;letter-spacing:.06em;text-transform:uppercase;white-space:nowrap;cursor:pointer;min-height:36px}
.object-picker-tab.active{background:#1b4259;color:#fff;border-color:#1b4259}
.object-picker-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.object-picker-card{appearance:none;border:1px solid #c7b696;background:#fffdf8;padding:10px;display:flex;flex-direction:column;align-items:center;gap:10px;cursor:pointer;transition:transform .12s ease,border-color .12s ease,box-shadow .12s ease;min-height:178px;text-align:center}
.object-picker-card:hover{transform:translateY(-1px);border-color:#8f7346;box-shadow:0 8px 22px #00000010}
.object-picker-card .object-visual{transform:none!important}
.object-picker-card .object-preview{display:flex;align-items:center;justify-content:center;width:100%;min-height:96px}
.object-picker-card .object-preview img{max-width:100%;height:auto}
.object-picker-card .object-title{font:800 14px/1.2 Cinzel,serif;color:#231d20}
.object-picker-card .object-sub{font:700 10px/1.25 Inter,sans-serif;letter-spacing:.08em;text-transform:uppercase;color:#7b6e6b}
.object-picker-empty{padding:16px;border:1px dashed #bca67f;background:#faf4e9;color:#786e6d;font-size:12px;text-align:center}
.object-field-note{font-size:11px;color:#6a5e5f;line-height:1.5;margin-top:10px}
.object-variant-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:6px}
.object-variant-btn{appearance:none;border:1px solid #bba985;background:#fffdf8;padding:8px;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:6px;text-align:center;font:800 11px/1.2 Inter,sans-serif;color:#2e2630}
.object-variant-btn.active{border-color:#7c5b29;box-shadow:inset 0 0 0 2px #d9bf7e}
.object-variant-btn .object-preview{display:flex;align-items:center;justify-content:center;min-height:56px;width:100%}
.object-variant-btn .object-preview img{max-width:100%;height:auto}
@media(max-width:1120px){.object-picker-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:850px){.object-picker-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.object-picker-head h3{font-size:22px}}

/* object picker asset preview sizing */
.object-picker-card .object-visual,.object-variant-btn .object-visual{display:block;position:relative;transform:none!important}
.object-picker-card.castle.castle-1 .object-visual,.object-variant-btn.castle.castle-1 .object-visual{width:97px;height:58px}
.object-picker-card.castle.castle-2 .object-visual,.object-variant-btn.castle.castle-2 .object-visual{width:70px;height:68px}
.object-picker-card.castle.castle-3 .object-visual,.object-variant-btn.castle.castle-3 .object-visual{width:43px;height:36px}
.object-picker-card.ship.ship-classic .object-visual,.object-variant-btn.ship.ship-classic .object-visual{width:114px;height:90px}
.object-picker-card .ship-mask,.object-variant-btn .ship-mask{position:absolute;left:0;bottom:0;width:114px;height:40px;opacity:1}
.object-picker-card .ship-hull,.object-variant-btn .ship-hull{position:absolute;left:10px;bottom:11px;width:95px;height:90px}
.object-picker-card .ship-sails,.object-variant-btn .ship-sails{position:absolute;left:29px;top:11px;width:75px;height:51px}
.object-picker-card .ship-flag,.object-variant-btn .ship-flag{position:absolute;left:4px;top:33px;width:59px;height:10px}
.object-picker-card.tree.tree-a .object-visual,.object-variant-btn.tree.tree-a .object-visual{width:36px;height:54px}
.object-picker-card.tree.tree-round .object-visual,.object-variant-btn.tree.tree-round .object-visual{width:20px;height:26px}
.object-picker-card.tree.tree-palm .object-visual,.object-variant-btn.tree.tree-palm .object-visual{width:39px;height:38px}
.object-picker-card.mountain.mountain-1 .object-visual,.object-variant-btn.mountain.mountain-1 .object-visual{width:120px;height:78px}
.object-picker-card.mountain.mountain-2 .object-visual,.object-variant-btn.mountain.mountain-2 .object-visual{width:66px;height:43px}
.object-picker-card.mountain.hill-1 .object-visual,.object-variant-btn.mountain.hill-1 .object-visual{width:89px;height:31px}

#fixedLabelLayer{display:none!important}
.ambient-layer{position:absolute;inset:0;z-index:1;pointer-events:none}
.object-layer{position:absolute;inset:0;z-index:9}
.cloud-layer{position:absolute;inset:0;z-index:12;pointer-events:none}

/* v84 ship layered asset layout */
.map-object.ship .ship-wave{position:absolute;left:0;bottom:0;width:114px;height:26px;opacity:1}
.object-picker-card .ship-wave,.object-variant-btn .ship-wave{position:absolute;left:0;bottom:0;width:114px;height:26px;opacity:1}

/* v85 restored road layer */
.road-layer{position:absolute;inset:0;width:5000px;height:5000px;z-index:7;pointer-events:none}
.road-shadow{fill:none;stroke:#1c132b;stroke-width:28;stroke-linecap:round;stroke-linejoin:round;opacity:.88}
.road{fill:none;stroke:#4f4469;stroke-width:16;stroke-linecap:round;stroke-linejoin:round;opacity:.96}


/* v86 map details polish */
.road-layer{z-index:5}
.world-overlay.world-details{z-index:6}
.ambient-wave{animation-duration:var(--dur,4.8s)}
@keyframes waveSway{0%,100%{transform:translate(-50%,-50%) translateX(-14px)}50%{transform:translate(-50%,-50%) translateX(14px)}}

.map-object.ship .object-visual,
.object-picker-card.ship .object-visual,
.object-variant-btn.ship .object-visual{overflow:visible}
.map-object.ship .ship-body,
.object-picker-card.ship .ship-body,
.object-variant-btn.ship .ship-body{position:absolute;left:0;top:0;width:114px;height:90px;transform-origin:50% 75%;animation:shipSway 4.6s ease-in-out infinite}
.map-object.ship .ship-hull,
.object-picker-card.ship .ship-hull,
.object-variant-btn.ship .ship-hull{-webkit-mask-image:url('assets/map/details/ship_mask.png');mask-image:url('assets/map/details/ship_mask.png');-webkit-mask-size:114px 40px;mask-size:114px 40px;-webkit-mask-position:0 29px;mask-position:0 29px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}
.map-object.ship .ship-mask,.object-picker-card.ship .ship-mask,.object-variant-btn.ship .ship-mask{opacity:.96}
.map-object.ship .ship-wave,.object-picker-card.ship .ship-wave,.object-variant-btn.ship .ship-wave{animation:shipWaveFlicker 2.3s ease-in-out infinite}
@keyframes shipSway{0%,100%{transform:translateX(-5px) rotate(-2deg) scaleX(-1)}50%{transform:translateX(5px) rotate(1.8deg) scaleX(1)}}
@keyframes shipWaveFlicker{0%,100%{transform:translateX(-3px)}50%{transform:translateX(3px)}}

.map-object.mountain.mountain-1 .object-visual img,.object-picker-card.mountain.mountain-1 .object-visual img,.object-variant-btn.mountain.mountain-1 .object-visual img{filter:grayscale(1) brightness(.52) contrast(1.05)}
.map-object.mountain.mountain-2 .object-visual img,.object-picker-card.mountain.mountain-2 .object-visual img,.object-variant-btn.mountain.mountain-2 .object-visual img{filter:grayscale(1) brightness(.68) contrast(1.02)}
.map-object.mountain.hill-1 .object-visual img,.object-picker-card.mountain.hill-1 .object-visual img,.object-variant-btn.mountain.hill-1 .object-visual img{filter:grayscale(1) brightness(.84) contrast(1.02)}


/* v88 — Current Island PSD exact Map Details */
.world-roads{position:absolute;inset:0;width:5000px;height:5000px;z-index:5;pointer-events:none;user-select:none}
.world-overlay.world-details{z-index:6!important}
.psd-detail-layer{position:absolute;inset:0;width:5000px;height:5000px;z-index:8;pointer-events:none}
.psd-map-detail{position:absolute;display:block;max-width:none;pointer-events:none;user-select:none;transform-origin:center center}
.psd-map-detail.psd-wave{animation:psdWaveSway var(--wave-speed,2.8s) ease-in-out var(--wave-delay,0s) infinite}
@keyframes psdWaveSway{0%,100%{transform:translateX(0)}25%{transform:translateX(10px)}75%{transform:translateX(-10px)}}
.psd-map-detail.psd-hill{filter:grayscale(1) brightness(.86)}
.psd-map-detail.psd-mountain.shade-small{filter:grayscale(1) brightness(.72)}
.psd-map-detail.psd-mountain.shade-med{filter:grayscale(1) brightness(.60)}
.psd-map-detail.psd-mountain.shade-big{filter:grayscale(1) brightness(.49)}
.object-layer{z-index:9!important}
.cloud-layer{z-index:12!important}
.world-fog{z-index:20!important;opacity:1!important;pointer-events:none}

/* Current Island building sizes */
.map-object.castle.castle-1 .object-visual,.object-picker-card.castle.castle-1 .object-visual,.object-variant-btn.castle.castle-1 .object-visual{width:98px;height:59px}
.map-object.castle.castle-2 .object-visual,.object-picker-card.castle.castle-2 .object-visual,.object-variant-btn.castle.castle-2 .object-visual{width:77px;height:75px}
.map-object.castle.castle-3 .object-visual,.object-picker-card.castle.castle-3 .object-visual,.object-variant-btn.castle.castle-3 .object-visual{width:49px;height:41px}
.map-object.castle.castle-4 .object-visual,.object-picker-card.castle.castle-4 .object-visual,.object-variant-btn.castle.castle-4 .object-visual{width:145px;height:139px}
.map-object.castle.town-1 .object-visual,.object-picker-card.castle.town-1 .object-visual,.object-variant-btn.castle.town-1 .object-visual{width:108px;height:50px}
.map-object.castle.town-2 .object-visual,.object-picker-card.castle.town-2 .object-visual,.object-variant-btn.castle.town-2 .object-visual{width:136px;height:68px}
.map-object.castle .object-visual img,.object-picker-card.castle .object-visual img,.object-variant-btn.castle .object-visual img{width:100%;height:100%;object-fit:contain}

/* Current Island ship composite: exact PSD relative placement. */
.map-object.ship .object-visual,.object-picker-card.ship .object-visual,.object-variant-btn.ship .object-visual{width:223px!important;height:117px!important;overflow:visible;position:relative}
.map-object.ship .ship-wave,.object-picker-card.ship .ship-wave,.object-variant-btn.ship .ship-wave{position:absolute;left:0;top:74px;width:223px;height:24px;animation:shipWaterSway 2.55s ease-in-out infinite}
.map-object.ship .ship-body,.object-picker-card.ship .ship-body,.object-variant-btn.ship .ship-body{position:absolute;left:0;top:0;width:223px;height:117px;transform-origin:111.5px 58.5px;animation:shipDirectionSway 2.55s ease-in-out infinite}
.map-object.ship .ship-hull,.object-picker-card.ship .ship-hull,.object-variant-btn.ship .ship-hull{position:absolute;left:61px;top:0;width:102px;height:97px}
.map-object.ship .ship-sails,.object-picker-card.ship .ship-sails,.object-variant-btn.ship .ship-sails{position:absolute;left:61px;top:6px;width:81px;height:55px}
.map-object.ship .ship-flag,.object-picker-card.ship .ship-flag,.object-variant-btn.ship .ship-flag{position:absolute;left:102px;top:4px;width:64px;height:11px}
.map-object.ship .ship-mask,.object-picker-card.ship .ship-mask,.object-variant-btn.ship .ship-mask{position:absolute;left:50px;top:74px;width:123px;height:43px;z-index:4}
@keyframes shipWaterSway{0%,100%{transform:translateX(0)}25%{transform:translateX(9px)}75%{transform:translateX(-9px)}}
@keyframes shipDirectionSway{0%,1%{transform:translateX(0) scaleX(1)}25%,49%{transform:translateX(9px) scaleX(1)}50%,51%{transform:translateX(0) scaleX(-1)}75%,99%{transform:translateX(-9px) scaleX(-1)}100%{transform:translateX(0) scaleX(1)}}

/* v89 road layer above rivers/details */
.world-roads{z-index:7!important;}
.world-overlay.world-details{z-index:6!important;}


/* v90 smoother waves, greener spring details, more clouds, lighter runtime */
.psd-detail-layer,.cloud-layer,.object-layer{contain:layout paint style}
.psd-map-detail,.cloud-item,.map-object.ship .ship-wave,.map-object.ship .ship-body{will-change:transform}
.map-detail,.psd-map-detail{filter:none}
.psd-map-detail.psd-tree{filter:sepia(1) saturate(4.2) hue-rotate(62deg) brightness(.74)!important}
.psd-map-detail.psd-hill{filter:sepia(1) saturate(3.5) hue-rotate(58deg) brightness(.58)!important}
.psd-map-detail.psd-mountain.shade-small{filter:grayscale(1) brightness(.72)!important}
.psd-map-detail.psd-mountain.shade-med{filter:grayscale(1) brightness(.60)!important}
.psd-map-detail.psd-mountain.shade-big{filter:grayscale(1) brightness(.49)!important}
.psd-map-detail.psd-wave{animation:psdWaveSway var(--wave-speed,3.2s) cubic-bezier(.42,0,.58,1) var(--wave-delay,0s) infinite alternate!important}
@keyframes psdWaveSway{0%{transform:translate3d(-16px,0,0)}100%{transform:translate3d(16px,0,0)}}
.cloud-item{opacity:.24!important;animation:cloudDrift var(--dur,48s) linear infinite!important}
@keyframes cloudDrift{0%{transform:translate(-50%,-50%) translate3d(-180px,0,0) scale(var(--cloud-scale,1))}100%{transform:translate(-50%,-50%) translate3d(180px,0,0) scale(var(--cloud-scale,1))}}
.map-object.ship .object-visual,.object-picker-card.ship .object-visual,.object-variant-btn.ship .object-visual{width:223px!important;height:117px!important;overflow:visible;position:relative}
.map-object.ship .ship-wave,.object-picker-card.ship .ship-wave,.object-variant-btn.ship .ship-wave{position:absolute;left:0;top:74px;width:223px;height:24px;animation:shipWaterSway 3.1s ease-in-out infinite alternate!important}
.map-object.ship .ship-body,.object-picker-card.ship .ship-body,.object-variant-btn.ship .ship-body{position:absolute;left:0;top:0;width:223px;height:117px;transform-origin:111.5px 58.5px;animation:shipGlide 3.1s ease-in-out infinite alternate!important}
.map-object.ship .ship-hull,.object-picker-card.ship .ship-hull,.object-variant-btn.ship .ship-hull{position:absolute;left:61px;top:0;width:102px;height:97px}
.map-object.ship .ship-sails,.object-picker-card.ship .ship-sails,.object-variant-btn.ship .ship-sails{position:absolute;left:61px;top:6px;width:81px;height:55px}
.map-object.ship .ship-flag,.object-picker-card.ship .ship-flag,.object-variant-btn.ship .ship-flag{position:absolute;left:102px;top:4px;width:64px;height:11px}
.map-object.ship .ship-mask,.object-picker-card.ship .ship-mask,.object-variant-btn.ship .ship-mask{display:none!important}
@keyframes shipWaterSway{0%{transform:translate3d(-10px,0,0)}100%{transform:translate3d(10px,0,0)}}
@keyframes shipGlide{0%{transform:translate3d(-10px,0,0)}100%{transform:translate3d(10px,0,0)}}


/* v91 polish: working paint, cleaner ships, lighter water, faster feel */
.world-underlay{opacity:.84!important}
.world-land-pass{position:absolute;inset:0;width:5000px;height:5000px;pointer-events:none;user-select:none;z-index:1;background:url('assets/map/world-underlay.png?v=91') 0 0/100% 100% no-repeat;-webkit-mask-image:url('assets/map/world-land-white.png?v=91');mask-image:url('assets/map/world-land-white.png?v=91');-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;opacity:1}
.subregion-layer{z-index:4!important}
.subregion{opacity:.40!important;transition:none!important;will-change:transform}
.subregion[data-region="unclaimed"]{opacity:0!important}
.paint-mode .subregion{cursor:crosshair;pointer-events:auto}
.paint-mode .subregion[data-region="unclaimed"]{opacity:.08!important;background:#fff!important}
.paint-mode .subregion:hover{opacity:.56!important;filter:drop-shadow(0 0 5px rgba(255,255,255,.45))!important}
.selection-overlay{opacity:.30!important;filter:drop-shadow(0 0 6px #ffe08a)!important}
.region-palette,.realm-legend{contain:content}
.psd-detail-layer,.cloud-layer,.object-layer,.subregion-layer{contain:layout paint}
.map-viewport,.subregion,.map-object{touch-action:none}

/* smoother/faster clouds without stutter */
.cloud-item{opacity:.20!important;will-change:transform;animation:cloudDriftSoft var(--dur,42s) linear infinite!important}
@keyframes cloudDriftSoft{0%{transform:translate(-50%,-50%) translate3d(-220px,0,0) scale(var(--cloud-scale,1))}100%{transform:translate(-50%,-50%) translate3d(220px,0,0) scale(var(--cloud-scale,1))}}

/* waves: smoother and a touch broader */
.psd-map-detail.psd-wave{animation:psdWaveSway 2.2s ease-in-out infinite alternate!important}
@keyframes psdWaveSway{0%{transform:translate3d(-18px,0,0)}100%{transform:translate3d(18px,0,0)}}

/* ships: simpler composition closer to reference */
.map-object.ship .object-visual,.object-picker-card.ship .object-visual,.object-variant-btn.ship .object-visual{width:136px!important;height:74px!important;overflow:visible;position:relative}
.map-object.ship .ship-wave,.object-picker-card.ship .ship-wave,.object-variant-btn.ship .ship-wave{position:absolute;left:0;top:44px;width:136px;height:15px;animation:shipWaterSway 2.2s ease-in-out infinite alternate!important}
.map-object.ship .ship-body,.object-picker-card.ship .ship-body,.object-variant-btn.ship .ship-body{position:absolute;left:0;top:0;width:136px;height:74px;animation:shipGlide 2.2s ease-in-out infinite alternate!important;transform-origin:68px 37px}
.map-object.ship .ship-hull,.object-picker-card.ship .ship-hull,.object-variant-btn.ship .ship-hull{position:absolute;left:37px;top:15px;width:62px;height:59px}
.map-object.ship .ship-sails,.object-picker-card.ship .ship-sails,.object-variant-btn.ship .ship-sails{position:absolute;left:37px;top:14px;width:49px;height:33px}
.map-object.ship .ship-flag,.object-picker-card.ship .ship-flag,.object-variant-btn.ship .ship-flag{position:absolute;left:61px;top:11px;width:39px;height:7px}
.map-object.ship .ship-mask,.object-picker-card.ship .ship-mask,.object-variant-btn.ship .ship-mask{display:none!important}
@keyframes shipWaterSway{0%{transform:translate3d(-12px,0,0)}100%{transform:translate3d(12px,0,0)}}
@keyframes shipGlide{0%{transform:translate3d(-12px,0,0) rotate(-0.6deg)}100%{transform:translate3d(12px,0,0) rotate(0.6deg)}}


/* v92: exact Current Island ship layering + lighter waves */
.map-stage{background:#001f2e!important}
.world-underlay{opacity:1!important}
.psd-map-detail.psd-wave{filter:none!important}
.map-object.ship .object-visual,.object-picker-card.ship .object-visual,.object-variant-btn.ship .object-visual{width:105px!important;height:97px!important;overflow:visible;position:relative}
.map-object.ship .ship-body,.object-picker-card.ship .ship-body,.object-variant-btn.ship .ship-body{position:absolute;left:0;top:0;width:105px;height:97px;transform-origin:52.5px 48.5px;animation:shipPsdGlide 2.8s ease-in-out infinite alternate!important}
.map-object.ship .ship-hull,.object-picker-card.ship .ship-hull,.object-variant-btn.ship .ship-hull{position:absolute;left:0;top:0;width:102px;height:97px}
.map-object.ship .ship-sails,.object-picker-card.ship .ship-sails,.object-variant-btn.ship .ship-sails{position:absolute;left:0;top:6px;width:81px;height:55px}
.map-object.ship .ship-flag,.object-picker-card.ship .ship-flag,.object-variant-btn.ship .ship-flag{position:absolute;left:41px;top:4px;width:64px;height:11px}
.map-object.ship .ship-wave,.object-picker-card.ship .ship-wave,.object-variant-btn.ship .ship-wave,.map-object.ship .ship-mask,.object-picker-card.ship .ship-mask,.object-variant-btn.ship .ship-mask{display:none!important}
@keyframes shipPsdGlide{0%{transform:translate3d(-8px,0,0) rotate(-.4deg)}100%{transform:translate3d(8px,0,0) rotate(.4deg)}}

/* v101 — Living Realm: player nobles, estates, voyages and Twitch chat */
.living-property-layer,.living-noble-layer{position:absolute;inset:0;width:5000px;height:5000px;pointer-events:none}
.living-property-layer{z-index:10}
.living-noble-layer{z-index:16}
.noble-estate{position:absolute;transform:translate(-50%,-50%);border:0;background:none;padding:0;pointer-events:auto;cursor:pointer;filter:drop-shadow(0 5px 6px #00101a88);transition:opacity .18s,filter .15s;z-index:1}
.noble-estate:hover,.noble-estate.selected{filter:drop-shadow(0 7px 8px #000b) drop-shadow(0 0 12px #f2d180)}
.noble-estate img{display:block;width:78px;height:72px;object-fit:contain;pointer-events:none}
.noble-estate.royal-estate img{width:92px;height:88px}
.noble-estate.grand-castle img{width:178px;height:170px}
.noble-estate .estate-crown{position:absolute;left:50%;top:-22px;transform:translateX(-50%);font-size:27px;line-height:1;text-shadow:0 3px 4px #000c;pointer-events:none}
.noble-estate .estate-label{position:absolute;left:50%;top:calc(100% + 5px);transform:translateX(-50%);padding:5px 8px;background:#111827e8;border:1px solid #d1b26f;color:#fff7df;font:800 13px Inter,sans-serif;white-space:nowrap;opacity:0;transition:opacity .12s;pointer-events:none}
.noble-estate:hover .estate-label,.noble-estate.selected .estate-label,.noble-estate.grand-castle .estate-label{opacity:1}
.noble-estate.occupied:after{content:'';position:absolute;right:4px;top:4px;width:14px;height:14px;border-radius:50%;background:#70e6b1;border:3px solid #162132;box-shadow:0 0 10px #70e6b1}
.map-viewport:not(.living-estates-visible) .noble-estate.player-estate{opacity:0;pointer-events:none}

.living-noble{--region:#c8b58d;position:absolute;transform:translate(-50%,-50%) scale(var(--living-marker-scale,1));transform-origin:center center;border:0;background:none;padding:0;pointer-events:auto;cursor:pointer;z-index:2;filter:drop-shadow(0 7px 8px #0009);transition:filter .15s,opacity .18s}
.living-noble:hover,.living-noble.selected{filter:drop-shadow(0 9px 9px #000c) drop-shadow(0 0 13px var(--region))}
.living-noble .noble-map-portrait{display:block;width:126px;height:126px;border-radius:22px;border:8px solid var(--region);background:#17223a;object-fit:cover;object-position:50% 14%;box-shadow:0 0 0 5px #efe4ca,0 8px 16px #0008;pointer-events:none}
.living-noble .noble-map-name{position:absolute;left:50%;top:118px;transform:translateX(-50%);min-width:max-content;max-width:270px;padding:7px 11px;background:#111827ec;border:2px solid var(--region);color:#fff;font:900 19px Cinzel,serif;letter-spacing:.02em;text-shadow:0 2px 2px #000;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;pointer-events:none}
.living-noble .noble-action-chip{position:absolute;left:50%;bottom:112px;transform:translateX(-50%);padding:5px 9px;background:#efe4ca;color:#231c29;border:2px solid #c8b58d;font:900 11px Inter,sans-serif;letter-spacing:.04em;white-space:nowrap;opacity:0;transition:opacity .12s;pointer-events:none}
.living-noble:hover .noble-action-chip,.living-noble.selected .noble-action-chip{opacity:1}
.living-noble.sailing .noble-map-portrait{display:none}
.living-noble.sailing{width:158px;height:112px}
.living-noble .noble-boat{position:absolute;left:50%;top:50%;width:105px;height:97px;transform:translate(-50%,-50%);pointer-events:none}
.living-noble .noble-boat img{position:absolute;display:block;pointer-events:none}
.living-noble .noble-boat .hull{left:0;top:0;width:102px;height:97px}
.living-noble .noble-boat .sails{left:0;top:6px;width:81px;height:55px}
.living-noble .noble-boat .flag{left:41px;top:4px;width:64px;height:11px}
.living-noble.sailing .noble-map-name{top:-24px}
.living-noble.sailing .noble-action-chip{bottom:-25px}

.noble-chat-bubble{position:absolute;left:50%;top:164px;transform:translateX(-50%);width:max-content;max-width:330px;padding:11px 14px;background:#fff9e9;color:#201923;border:4px solid #c8b58d;border-radius:13px;font:800 16px/1.25 Inter,sans-serif;text-align:left;box-shadow:0 8px 20px #0008;white-space:normal;pointer-events:none;animation:nobleChatPop .18s ease-out}
.noble-chat-bubble:before{content:'';position:absolute;left:32px;top:-13px;border-width:0 11px 12px;border-style:solid;border-color:transparent transparent #c8b58d}
.living-noble.sailing .noble-chat-bubble{top:116px}
@keyframes nobleChatPop{from{opacity:0;transform:translateX(-50%) translateY(8px) scale(.94)}to{opacity:1;transform:translateX(-50%) translateY(0) scale(1)}}

.living-card{display:grid;gap:14px;margin-top:14px}
.living-person-head{display:grid;grid-template-columns:92px 1fr;gap:14px;align-items:center}
.living-person-head img{width:92px;height:92px;object-fit:cover;object-position:50% 14%;border:4px solid #c8b58d;background:#17223a;border-radius:16px}
.living-person-head h3{font:800 19px Cinzel,serif;margin:0 0 5px;color:#2b222a}
.living-person-head p{margin:0;color:#6f6260;font-size:11px;line-height:1.45}
.living-status{padding:13px;background:#f8f0dd;border:1px solid #c8b58d}
.living-status strong{display:block;font:800 13px Cinzel,serif;color:#6f3651;margin-bottom:5px}
.living-status span{font-size:11px;color:#655a59;line-height:1.45}
.living-facts{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.living-fact{padding:9px;background:#e8dcc2;border:1px solid #c4ad82}
.living-fact small{display:block;font-size:8px;font-weight:900;letter-spacing:.08em;color:#78684f;text-transform:uppercase}
.living-fact b{display:block;margin-top:3px;font-size:11px;color:#2d252d}
.twitch-connect{background:#6441a5!important;color:#fff!important;border-color:#4d3280!important}
.living-noble:not(.sailing) .noble-boat{display:none}

/* v102 — quieter Living Realm + shared households + castle interiors */
.noble-estate .estate-resident-count{position:absolute;right:-7px;bottom:-5px;min-width:25px;height:25px;padding:0 6px;border-radius:999px;display:grid;place-items:center;background:#efe4ca;border:3px solid #17223a;color:#342838;font:900 12px Inter,sans-serif;box-shadow:0 3px 7px #0008;pointer-events:none}
.noble-estate.shared-estate img{width:96px;height:88px}
.noble-estate.shared-estate.large-household img{width:116px;height:108px}
.noble-estate.shared-estate.small-household img{width:76px;height:70px}
.map-viewport:not(.living-estates-visible) .noble-estate.shared-estate,
.map-viewport:not(.living-royal-estates-visible) .noble-estate.royal-estate:not(.grand-castle):not(.player-residence){opacity:0;pointer-events:none}
.map-viewport:not(.living-estates-visible) .noble-estate.royal-estate.player-residence:not(.grand-castle){opacity:0;pointer-events:none}
.noble-estate.interior-active{filter:drop-shadow(0 9px 10px #000c) drop-shadow(0 0 18px #f2d180)}

.castle-interior-dialog{width:min(1180px,94vw);max-width:none;margin:auto;padding:0;border:0;background:transparent;overflow:visible;color:#fff}
.castle-interior-dialog::backdrop{background:rgba(4,9,19,.88);backdrop-filter:blur(5px)}
.castle-interior-shell{position:relative;width:100%;background:#111a2d;border:7px solid #17223a;box-shadow:0 28px 80px #000c,0 0 0 1px #6f879c;overflow:hidden}
.castle-interior-close{position:absolute;right:16px;top:13px;z-index:12;width:44px;height:44px;border-radius:50%;border:2px solid #efe4ca;background:#17223add;color:#fff;font:900 31px/1 Inter,sans-serif;cursor:pointer;box-shadow:0 4px 10px #0008}
.castle-interior-close:hover{background:#6f3651}
.castle-interior-scene{position:relative;width:100%;aspect-ratio:16/9;min-height:0;background:#05080d;overflow:hidden;isolation:isolate}
.castle-interior-room{position:absolute;inset:0;z-index:0;width:100%;height:100%;object-fit:cover;object-position:center center;pointer-events:none;user-select:none}
.castle-interior-scene:after{content:'';position:absolute;inset:0;pointer-events:none;background:linear-gradient(180deg,rgba(2,6,12,.50) 0%,rgba(2,6,12,.02) 24%,rgba(2,6,12,.01) 68%,rgba(2,6,12,.38) 100%);z-index:1}
.castle-interior-heading{position:absolute;left:26px;top:22px;z-index:8;max-width:70%;text-shadow:0 3px 7px #000}
.castle-interior-heading span{display:block;color:#e2bd68;font:900 11px Inter,sans-serif;letter-spacing:.19em}
.castle-interior-heading h2{margin:3px 0 2px;color:#fff9e8;font:900 clamp(22px,2.6vw,36px) Cinzel,serif}
.castle-interior-heading p{margin:0;color:#e6ded1;font:700 12px Inter,sans-serif}
.castle-interior-actors{position:absolute;inset:0;z-index:4;display:flex;align-items:flex-end;justify-content:center;gap:2%;padding:106px 7% 4.5%;pointer-events:none}
.castle-interior-actor{position:relative;height:46%;min-width:0;display:flex;align-items:flex-end;justify-content:center;filter:drop-shadow(0 13px 10px #000a)}
.castle-interior-actor img{display:block;width:100%;height:100%;object-fit:contain;object-position:center bottom;transform-origin:50% 92%}
.castle-interior-actor .castle-actor-name{position:absolute;left:50%;top:-8px;transform:translate(-50%,-100%);max-width:96%;padding:6px 11px;background:#111827e8;border:2px solid #e6c676;color:#fffdf1;font:900 clamp(11px,1.25vw,16px) Cinzel,serif;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;box-shadow:0 5px 12px #0008;text-shadow:0 2px 2px #000}
/* A single resident stands in front of the throne without hiding the room. */
.castle-interior-actors.court.count-1 .castle-interior-actor{width:26%;max-width:270px;height:53%}
.castle-interior-actors.court.count-2 .castle-interior-actor{width:24%;max-width:245px;height:49%}
.castle-interior-actors.court.count-3 .castle-interior-actor{width:21%;max-width:220px;height:45%}
.castle-interior-actors.court.count-4 .castle-interior-actor,.castle-interior-actors.court.count-5 .castle-interior-actor{width:18%;max-width:190px;height:41%}
.castle-interior-actors.court{justify-content:center;gap:1.5%;padding-left:8%;padding-right:8%}
/* Visits happen in the host's hall: two full portraits face one another. */
.castle-interior-actors.conversation{justify-content:center;gap:20%;padding-left:8%;padding-right:8%;padding-bottom:4%}
.castle-interior-actors.conversation .castle-interior-actor{width:27%;max-width:285px;height:55%}
.castle-interior-actors.conversation .actor-left img{transform:scaleX(-1)}
.castle-interior-actors.conversation .actor-left.talking img{animation:castleTalkLeft .32s steps(2,end) infinite}
.castle-interior-actors.conversation .actor-right.talking img{animation:castleTalkRight .35s steps(2,end) infinite}
@keyframes castleTalkLeft{0%{transform:scaleX(-1) translate(0,0) rotate(0)}50%{transform:scaleX(-1) translate(-3px,-2px) rotate(-.5deg)}100%{transform:scaleX(-1) translate(2px,1px) rotate(.35deg)}}
@keyframes castleTalkRight{0%{transform:translate(0,0) rotate(0)}50%{transform:translate(3px,-2px) rotate(.5deg)}100%{transform:translate(-2px,1px) rotate(-.35deg)}}
.castle-interior-caption{position:absolute;z-index:9;left:50%;bottom:14px;transform:translateX(-50%);max-width:86%;padding:8px 14px;background:#17223ae8;border:2px solid #d6b66c;color:#fff6df;font:900 12px Cinzel,serif;text-align:center;box-shadow:0 5px 12px #0008}
.castle-interior-caption:empty{display:none}
.castle-interior-footer{display:grid;grid-template-columns:minmax(0,1fr) 130px auto;gap:18px;align-items:center;padding:15px 18px;background:#17223a;border-top:1px solid #536b83}
.castle-interior-footer>div{min-width:0}
.castle-interior-footer small{display:block;color:#91a8bd;font:900 9px Inter,sans-serif;letter-spacing:.14em;margin-bottom:4px}
.castle-interior-footer strong{display:block;color:#fff7e5;font:800 12px/1.35 Inter,sans-serif;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.castle-interior-footer .btn{white-space:nowrap}
.castle-interior-actor .castle-actor-chat{position:absolute;left:50%;top:42px;transform:translateX(-50%);z-index:7;width:max-content;max-width:230px;padding:8px 11px;border-radius:10px;background:#fff9e9;border:3px solid #c8b58d;color:#201923;font:800 12px/1.25 Inter,sans-serif;text-align:center;box-shadow:0 5px 12px #0008}
@media(max-width:780px){
  .castle-interior-dialog{width:96vw}
  .castle-interior-heading{left:15px;top:14px;max-width:74%}
  .castle-interior-heading h2{font-size:20px}
  .castle-interior-heading p{font-size:10px}
  .castle-interior-actors{padding-top:78px;padding-bottom:5%}
  .castle-interior-actors.court.count-1 .castle-interior-actor{width:32%;height:51%}
  .castle-interior-actors.court.count-2 .castle-interior-actor,.castle-interior-actors.court.count-3 .castle-interior-actor{width:27%;height:44%}
  .castle-interior-actors.conversation{gap:8%}
  .castle-interior-actors.conversation .castle-interior-actor{width:38%;height:52%}
  .castle-interior-actor .castle-actor-name{padding:4px 6px;font-size:10px}
  .castle-interior-footer{grid-template-columns:1fr 78px;gap:10px}
  .castle-interior-footer .btn{grid-column:1/-1}
}

.living-property-residents{padding:12px;background:#f8f0dd;border:1px solid #c8b58d;color:#5d514d;font:700 10px/1.5 Inter,sans-serif}
.living-property-residents strong{display:block;margin-bottom:5px;color:#6f3651;font:900 11px Cinzel,serif}

@media(max-width:780px){
  .castle-interior-dialog{width:96vw}
  .castle-interior-scene{min-height:360px}
  .castle-interior-heading{left:15px;top:14px;max-width:72%}
  .castle-interior-actors{padding-top:90px}
  .castle-interior-actors.conversation .castle-interior-actor{width:49%;height:69%}
  .castle-interior-actor .castle-actor-name{padding:5px 7px}
  .castle-interior-footer{grid-template-columns:1fr 78px;gap:10px}
  .castle-interior-footer .btn{grid-column:1/-1}
}
.castle-interior-actor .castle-actor-chat{position:absolute;left:50%;top:46px;transform:translateX(-50%);z-index:4;width:max-content;max-width:230px;padding:8px 11px;border-radius:10px;background:#fff9e9;border:3px solid #c8b58d;color:#201923;font:800 12px/1.25 Inter,sans-serif;text-align:center;box-shadow:0 5px 12px #0008}

/* v105 — persistent homes, strict land/water travellers and outer-island expeditions */
.living-property-layer,.living-camp-layer,.living-party-layer,.living-noble-layer{position:absolute;inset:0;width:5000px;height:5000px;pointer-events:none}
.living-camp-layer{z-index:14}
.living-party-layer{z-index:15}
/* Homes should be readable from the full realm view; never hide them by zoom threshold. */
.map-viewport .noble-estate.shared-estate,
.map-viewport .noble-estate.manual-estate,
.map-viewport .noble-estate.royal-estate{opacity:1!important;pointer-events:auto!important}
.noble-estate.manual-estate .estate-label{border-color:#70c6c9}
.noble-estate.manual-estate:hover,.noble-estate.manual-estate.selected{filter:drop-shadow(0 7px 8px #000b) drop-shadow(0 0 14px #6ddde0)}

.map-stage.home-placement-mode{cursor:crosshair}
.map-stage.home-placement-mode:after{content:'CLICK LAND TO PLACE HOME';position:fixed;left:50%;top:88px;transform:translateX(-50%);padding:10px 14px;background:#162132ed;border:2px solid #e1bd67;color:#fff7df;font:900 12px Cinzel,serif;letter-spacing:.08em;pointer-events:none;z-index:1000;box-shadow:0 5px 16px #0009}
.home-manager .custom-owner-fields{display:grid;gap:10px}
.home-manager .manual-home-list{display:grid;gap:6px;margin-top:8px}
.home-manager .manual-home-list button{display:grid;gap:2px;text-align:left;padding:8px 9px;border:1px solid #c6ad7c;background:#fff8e6;color:#2b222a;cursor:pointer}
.home-manager .manual-home-list button:hover{border-color:#6f3651;background:#f1e5c8}
.home-manager .manual-home-list b{font:800 11px Cinzel,serif}
.home-manager .manual-home-list span{font:700 9px Inter,sans-serif;color:#756760}
.btn.danger{background:#6b2231!important;border-color:#431620!important;color:#fff!important}

.living-camp{position:absolute;transform:translate(-50%,-50%) scale(var(--living-marker-scale,1));transform-origin:center;border:0;background:none;padding:0;pointer-events:auto;cursor:pointer;z-index:5;filter:drop-shadow(0 8px 9px #000a)}
.living-camp>img{display:block;width:108px;height:122px;object-fit:contain;pointer-events:none;animation:campFireBreath 1.1s ease-in-out infinite alternate}
.living-camp:hover{filter:drop-shadow(0 10px 11px #000c) drop-shadow(0 0 15px #ff9e31)}
.living-camp .camp-party-count{position:absolute;right:2px;top:4px;min-width:28px;height:28px;padding:0 7px;border-radius:999px;display:grid;place-items:center;background:#17223a;border:3px solid #e7c16a;color:#fff;font:900 12px Inter,sans-serif;box-shadow:0 4px 8px #0008}
.living-camp .camp-label{position:absolute;left:50%;top:106px;transform:translateX(-50%);padding:6px 9px;background:#111827ed;border:2px solid #e7a54f;color:#fff4da;font:900 12px Cinzel,serif;white-space:nowrap;opacity:.92;pointer-events:none}
@keyframes campFireBreath{from{transform:scale(.98) translateY(1px)}to{transform:scale(1.025) translateY(-2px)}}

.camp-interior-scene .castle-interior-room{object-fit:cover;object-position:center center}
.camp-interior-scene:after{background:linear-gradient(180deg,rgba(3,8,22,.16) 0%,rgba(3,8,22,.02) 48%,rgba(0,0,0,.55) 100%)}
.camp-interior-fire{position:absolute;z-index:3;left:50%;bottom:3.5%;transform:translateX(-50%);width:16%;max-width:180px;min-width:90px;height:auto;filter:drop-shadow(0 8px 14px #000a);pointer-events:none;animation:campFireBreath 1.1s ease-in-out infinite alternate}
.camp-interior-scene .castle-interior-actors{z-index:4;padding-bottom:7%;gap:3%;justify-content:center}
.camp-interior-scene .castle-interior-actors.count-1 .castle-interior-actor{width:26%;height:52%;max-width:250px}
.camp-interior-scene .castle-interior-actors.count-2 .castle-interior-actor{width:24%;height:48%;max-width:230px}
.camp-interior-scene .castle-interior-actors.count-3 .castle-interior-actor{width:21%;height:44%;max-width:205px}
.camp-interior-scene .castle-interior-actors .actor-left img{transform:scaleX(-1)}
.camp-interior-scene .castle-interior-actors .talking img{animation:campTalk .48s ease-in-out infinite alternate}
.camp-interior-scene .castle-interior-actors .actor-left.talking img{animation:campTalkFlip .48s ease-in-out infinite alternate}
@keyframes campTalk{from{transform:translateY(0) rotate(-.3deg)}to{transform:translateY(-3px) rotate(.35deg)}}
@keyframes campTalkFlip{from{transform:scaleX(-1) translateY(0) rotate(-.3deg)}to{transform:scaleX(-1) translateY(-3px) rotate(.35deg)}}

@media(max-width:780px){
  .living-camp>img{width:82px;height:94px}
  .living-camp .camp-label{top:82px;font-size:9px}
  .camp-interior-fire{width:22%}
}
.living-camp .camp-chat-bubble{position:absolute;left:50%;top:145px;transform:translateX(-50%);width:max-content;max-width:320px;padding:9px 12px;border-radius:12px;background:#fff9e9;border:4px solid #c8b58d;color:#201923;font:800 13px/1.25 Inter,sans-serif;text-align:left;box-shadow:0 8px 18px #0009;white-space:normal;pointer-events:none}
.living-camp .camp-chat-bubble b{display:block;margin-bottom:3px;color:#6f3651;font:900 10px Cinzel,serif}
.living-camp .camp-chat-bubble:before{content:'';position:absolute;left:50%;top:-14px;transform:translateX(-50%);border-width:0 11px 12px;border-style:solid;border-color:transparent transparent #c8b58d}

/* v106 — existing settlements become residences; surface-aware Noble travel */
.map-object.populated-building{z-index:3}
.map-object.populated-building:hover,
.map-object.populated-building.selected-residence,
.map-object.populated-building.interior-active-residence{filter:drop-shadow(0 10px 10px rgba(0,0,0,.48)) drop-shadow(0 0 14px rgba(242,209,128,.95))}
.map-object.populated-building .object-resident-count{position:absolute;right:-8px;bottom:-8px;min-width:27px;height:27px;padding:0 7px;border-radius:999px;display:grid;place-items:center;background:#efe4ca;border:3px solid #17223a;color:#342838;font:900 12px Inter,sans-serif;box-shadow:0 3px 8px #0009;pointer-events:none;transform:scaleX(calc(1 / var(--flip,1)))}
.map-object.populated-building .object-home-tag{position:absolute;left:50%;top:100%;transform:translateX(-50%) scaleX(calc(1 / var(--flip,1)));margin-top:6px;padding:6px 10px;background:#111827ed;color:#fff7df;border:1px solid #d1b26f;font:800 13px Inter,sans-serif;white-space:nowrap;opacity:0;transition:opacity .13s ease;pointer-events:none}
.map-object.populated-building:hover .object-home-tag,
.map-object.populated-building.selected-residence .object-home-tag,
.map-object.populated-building.interior-active-residence .object-home-tag,
.map-object.populated-building.castle-4 .object-home-tag{opacity:1}
.map-object.populated-building.occupied-residence:before{content:'';position:absolute;right:5px;top:3px;width:14px;height:14px;border-radius:50%;background:#70e6b1;border:3px solid #162132;box-shadow:0 0 10px #70e6b1;pointer-events:none;z-index:5;transform:scaleX(calc(1 / var(--flip,1)))}

/* v107 — travel surface follows the current PSD coastline; ships require open-water clearance. */


/* v108 social-life pass -------------------------------------------------- */
.map-object.castle.tavern-1 .object-visual,.object-picker-card.castle.tavern-1 .object-visual,.object-variant-btn.castle.tavern-1 .object-visual{width:92px;height:44px}
.map-object.castle.tavern-1 .object-visual:after{content:'TAVERN';position:absolute;left:50%;top:72%;transform:translate(-50%,-50%) scaleX(calc(1 / var(--flip,1)));padding:2px 5px;background:#4c2e20e8;border:1px solid #e5c36d;color:#fff4dc;font:900 7px Cinzel,serif;letter-spacing:.08em;white-space:nowrap}

.living-camp{width:184px;height:184px;display:grid;place-items:center;margin:-92px 0 0 -92px;transform:scale(var(--living-marker-scale,1));transform-origin:center}
.living-camp>img{position:relative;z-index:2}
.living-camp .camp-hit-glow{position:absolute;inset:20px;border-radius:50%;background:radial-gradient(circle,#ff9d2a22 0 28%,transparent 70%);border:2px solid transparent;pointer-events:none}
.living-camp:hover .camp-hit-glow,.living-camp:focus-visible .camp-hit-glow{border-color:#e7c16a88}
.living-camp .camp-party-count{z-index:4;right:30px;top:28px}
.living-camp .camp-label{z-index:4;top:130px}
.living-camp .camp-chat-bubble{z-index:5;top:170px}

.living-expedition-party{position:absolute;width:190px;height:160px;transform:translate(-50%,-50%) scale(var(--living-marker-scale,1));transform-origin:center;border:0;background:none;padding:0;pointer-events:auto;cursor:pointer;filter:drop-shadow(0 8px 9px #000a);z-index:6}
.living-expedition-party:hover,.living-expedition-party:focus-visible{filter:drop-shadow(0 10px 12px #000c) drop-shadow(0 0 14px #e7c16a)}
.living-expedition-party .party-portraits{position:absolute;left:50%;top:37px;transform:translateX(-50%);width:126px;height:74px;display:flex;align-items:center;justify-content:center;pointer-events:none;z-index:5}
.living-expedition-party .party-portrait{position:relative;width:68px;height:68px;margin-left:-12px;border-radius:14px;background:#17223a;border:5px solid var(--party-region,#c8b58d);box-shadow:0 0 0 3px #efe4ca,0 5px 10px #0009;overflow:hidden}
.living-expedition-party .party-portrait:first-child{margin-left:0}
.living-expedition-party .party-portrait img{width:100%;height:100%;object-fit:cover;object-position:50% 14%;pointer-events:none}
.living-expedition-party .party-boat{display:none;position:absolute;left:50%;top:59px;width:118px;height:108px;transform:translate(-50%,-50%);pointer-events:none;z-index:2}
.living-expedition-party .party-boat img{position:absolute;display:block;pointer-events:none}
.living-expedition-party .party-boat .hull{left:0;top:0;width:114px;height:108px}.living-expedition-party .party-boat .sails{left:0;top:7px;width:91px;height:62px}.living-expedition-party .party-boat .flag{left:46px;top:4px;width:72px;height:13px}
.living-expedition-party.sailing .party-boat{display:block}.living-expedition-party.sailing .party-portraits{top:12px;transform:translateX(-50%) scale(.72)}
.living-expedition-party .party-name{position:absolute;left:50%;top:112px;transform:translateX(-50%);padding:6px 9px;background:#111827ed;border:2px solid #e7c16a;color:#fff4da;font:900 12px Cinzel,serif;white-space:nowrap;pointer-events:none;z-index:8}
.living-expedition-party .party-action{position:absolute;left:50%;top:143px;transform:translateX(-50%);padding:4px 7px;background:#efe4ca;color:#231c29;border:2px solid #c8b58d;font:900 10px Inter,sans-serif;white-space:nowrap;pointer-events:none;z-index:8}
.living-expedition-party.sailing .party-name{top:112px}.living-expedition-party.sailing .party-action{top:143px}

.living-noble.social-meeting .noble-map-portrait{box-shadow:0 0 0 5px #efe4ca,0 8px 16px #0008,0 0 18px #78cfb5}
.living-noble.social-meeting:after{content:'♥';position:absolute;right:-12px;top:-14px;width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:#f6eee0;border:3px solid #6f3651;color:#a63055;font:900 18px serif;box-shadow:0 4px 8px #0008;pointer-events:none}
.living-noble.social-fight .noble-map-portrait{box-shadow:0 0 0 5px #efe4ca,0 8px 16px #0008,0 0 18px #d65b52}
.living-noble.social-fight:after{content:'⚔';position:absolute;right:-15px;top:-14px;width:38px;height:38px;border-radius:50%;display:grid;place-items:center;background:#2a1d25;border:3px solid #e6c676;color:#fff0cf;font:900 18px serif;box-shadow:0 4px 8px #0008;pointer-events:none}

.resident-room-list{display:grid;gap:7px}
.resident-room-list>strong{grid-column:1/-1}
.resident-room-button{width:100%;display:grid;grid-template-columns:38px minmax(0,1fr);gap:9px;align-items:center;padding:7px 8px;border:1px solid #c8b58d;background:#fff9eb;color:#392d35;text-align:left;cursor:pointer}
.resident-room-button:hover,.resident-room-button:focus-visible{background:#efe4ca;border-color:#6f3651}
.resident-room-button img{width:38px;height:38px;border-radius:9px;object-fit:cover;object-position:50% 14%;background:#17223a;border:2px solid #6f3651}
.resident-room-button span{min-width:0}.resident-room-button b{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:900 11px Cinzel,serif}.resident-room-button small{display:block;margin-top:2px;color:#7c6768;font:800 9px Inter,sans-serif;letter-spacing:.04em;text-transform:uppercase}
.noble-relations{display:grid;grid-template-columns:1fr 1fr;gap:9px}.noble-relations>div{min-width:0;padding:10px;background:#f8f0dd;border:1px solid #c8b58d;display:grid;gap:6px}.noble-relations>div>strong{color:#6f3651;font:900 10px Cinzel,serif;letter-spacing:.05em}.noble-relations .enemy-list{border-color:#bb8677}.noble-relations .enemy-list>strong{color:#8d3d3a}.relation-empty{color:#7b6e6b;font:700 10px Inter,sans-serif}
.castle-interior-actors.private-room .castle-interior-actor{height:58%;width:28%;max-width:290px}
@media(max-width:760px){.noble-relations{grid-template-columns:1fr}.living-expedition-party{transform:translate(-50%,-50%) scale(calc(var(--living-marker-scale,1) * .85))}}

/* v109 — town navigation, combined social groups, Noble search + controlled housing */
.noble-map-search{display:grid;gap:4px;min-width:240px;max-width:330px;flex:1}.noble-map-search>label{font:900 8px Inter,sans-serif;letter-spacing:.13em;color:#78684f}.noble-map-search>div{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px}.noble-map-search input{min-width:0;height:36px;border:1px solid #9e8a65;background:#fffaf0;color:#241d27;padding:0 10px;font:800 11px Inter,sans-serif;outline:none}.noble-map-search input:focus{border-color:#0e5e68;box-shadow:0 0 0 2px #0e5e6833}.noble-map-search .map-toggle{height:36px}
.living-social-layer{position:absolute;inset:0;width:5000px;height:5000px;pointer-events:none;z-index:15}
.living-social-party{--social-colour:#78cfb5;position:absolute;width:205px;height:160px;transform:translate(-50%,-50%) scale(var(--living-marker-scale,1));transform-origin:center;border:0;background:none;padding:0;pointer-events:auto;cursor:pointer;filter:drop-shadow(0 8px 9px #000a);z-index:7}
.living-social-party:hover,.living-social-party:focus-visible{filter:drop-shadow(0 10px 12px #000c) drop-shadow(0 0 15px var(--social-colour))}
.living-social-party .social-portraits{position:absolute;left:50%;top:34px;transform:translateX(-50%);width:166px;height:82px;display:grid;grid-template-columns:repeat(2,76px);gap:7px;align-items:center;justify-content:center;pointer-events:none}
.living-social-party .social-portrait{position:relative;width:76px;height:76px;margin:0;border-radius:15px;background:#17223a;border:5px solid var(--portrait-region,#c8b58d);box-shadow:0 0 0 3px #efe4ca,0 5px 10px #0009;overflow:hidden}.living-social-party .social-portrait img{width:100%;height:100%;object-fit:cover;object-position:50% 14%}
.living-social-party .social-icon{position:absolute;right:13px;top:6px;width:38px;height:38px;border-radius:50%;display:grid;place-items:center;background:#f6eee0;border:3px solid #6f3651;color:#a63055;font:900 19px serif;box-shadow:0 4px 8px #0008;pointer-events:none}.living-social-party.fighting{--social-colour:#d65b52}.living-social-party.fighting .social-icon{background:#2a1d25;border-color:#e6c676;color:#fff0cf}
.living-social-party .social-name{position:absolute;left:50%;top:113px;transform:translateX(-50%);max-width:260px;padding:6px 9px;background:#111827ed;border:2px solid var(--social-colour);color:#fff4da;font:900 12px Cinzel,serif;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;pointer-events:none}.living-social-party .social-action{position:absolute;left:50%;top:143px;transform:translateX(-50%);padding:4px 7px;background:#efe4ca;color:#231c29;border:2px solid #c8b58d;font:900 10px Inter,sans-serif;white-space:nowrap;pointer-events:none}
.castle-interior-shell.settlement-mode .castle-interior-scene:after{background:linear-gradient(180deg,rgba(2,6,12,.54) 0%,rgba(2,6,12,.03) 28%,rgba(2,6,12,.06) 63%,rgba(2,6,12,.58) 100%)}
.castle-interior-actors.settlement-residents{display:grid;grid-template-columns:repeat(auto-fit,minmax(92px,1fr));gap:11px;align-content:end;align-items:end;justify-items:center;padding:120px 5% 4.5%;pointer-events:auto;overflow:hidden}
.settlement-resident{appearance:none;width:min(100%,122px);min-width:0;border:0;background:transparent;color:#fff;cursor:pointer;padding:0;display:grid;gap:5px;justify-items:center;filter:drop-shadow(0 8px 9px #000a);transition:transform .13s ease,filter .13s ease}.settlement-resident:hover,.settlement-resident:focus-visible{transform:translateY(-8px);filter:drop-shadow(0 12px 13px #000d) drop-shadow(0 0 13px var(--resident-region,#c8b58d));outline:none}.settlement-resident img{width:94px;height:94px;object-fit:cover;object-position:50% 14%;pointer-events:none;border-radius:16px;border:4px solid var(--resident-region,#c8b58d);background:#17223a;box-shadow:0 5px 10px #0008}.settlement-resident span{display:block;width:100%;padding:5px 6px;background:#111827e8;border:2px solid var(--resident-region,#c8b58d);font:900 10px/1.15 Cinzel,serif;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-shadow:0 2px 2px #000}.settlement-resident small{display:block;margin-top:2px;color:#f3dd9e;font:900 7px Inter,sans-serif;letter-spacing:.08em;text-transform:uppercase}
.castle-interior-shell.room-mode .castle-interior-room{filter:brightness(1.18) saturate(1.02)}.castle-interior-shell.room-mode .castle-interior-actors.private-room{pointer-events:none}.castle-interior-shell.room-mode .castle-interior-caption{bottom:18px}
.castle-interior-footer{grid-template-columns:minmax(0,1fr) 130px auto auto}.castle-interior-footer #castleInteriorBack[hidden]{display:none!important}
.living-card .controlled-noble-banner{padding:9px 11px;margin-bottom:10px;border:2px solid #d2ad56;background:#fff3cd;color:#5a4215;font:900 10px/1.35 Inter,sans-serif;letter-spacing:.04em;text-transform:uppercase}.living-card .controlled-noble-banner b{display:block;color:#7d334d;font:900 12px Cinzel,serif;margin-bottom:2px}
.housing-panel{margin-top:12px;border:1px solid #c8b58d;background:#fff8e8;padding:11px;color:#4c3f3f}.housing-panel>strong{display:block;font:900 12px Cinzel,serif;color:#6f3651;margin-bottom:4px}.housing-panel>p{margin:0 0 9px;font:700 9px/1.45 Inter,sans-serif;color:#74625d}.housing-options{display:grid;gap:6px}.housing-option{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:center;padding:8px;border:1px solid #c8b58d;background:#fff}.housing-option b{display:block;font:900 10px Cinzel,serif}.housing-option small{display:block;margin-top:2px;font:700 8px Inter,sans-serif;color:#78684f}.housing-option .btn{padding:7px 8px;font-size:8px;min-height:30px}.housing-option .btn:disabled{opacity:.45;cursor:not-allowed}.housing-current{padding:7px 8px;margin:7px 0;background:#efe4ca;border-left:4px solid #6f3651;font:800 9px/1.4 Inter,sans-serif}
.map-sidebar .actions{display:flex;flex-wrap:wrap;gap:7px}.map-sidebar .actions .btn{flex:1 1 130px;text-align:center}
@media(max-width:1100px){.noble-map-search{order:3;min-width:220px}.castle-interior-actors.settlement-residents{grid-template-columns:repeat(auto-fit,minmax(76px,1fr));gap:7px;padding-left:3%;padding-right:3%}.settlement-resident img{width:76px;height:76px}.settlement-resident span{font-size:8px}.castle-interior-footer{grid-template-columns:1fr 90px}.castle-interior-footer .btn{grid-column:auto}}
@media(max-width:760px){.noble-map-search{width:100%;max-width:none;flex-basis:100%}.living-social-party{transform:translate(-50%,-50%) scale(calc(var(--living-marker-scale,1) * .82))}.castle-interior-actors.settlement-residents{grid-template-columns:repeat(4,minmax(0,1fr));padding-top:88px}.settlement-resident img{width:62px;height:62px}.settlement-resident span{font-size:7px;padding:4px}.castle-interior-footer{grid-template-columns:1fr 1fr}.castle-interior-footer .btn{grid-column:auto}}


/* ---- v110: square portrait language + viewable social encounters ---- */
.social-scene-dialog{width:min(900px,94vw);max-width:none;padding:0;border:0;background:transparent;color:#261f29;box-shadow:none}.social-scene-dialog::backdrop{background:#09070bc9;backdrop-filter:blur(5px)}
.social-scene-shell{position:relative;overflow:hidden;background:#efe4ca;border:6px solid #c8b58d;box-shadow:0 22px 70px #000b}.social-scene-visual{position:relative;height:min(48vw,430px);min-height:300px;overflow:hidden;background:#203745}.social-scene-background{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;filter:brightness(.67) saturate(.88)}
.social-scene-heading{position:absolute;z-index:3;left:24px;right:72px;top:20px;color:#fff;text-shadow:0 2px 5px #000}.social-scene-heading span{font:900 10px Inter,sans-serif;letter-spacing:.16em;color:#f2cf80}.social-scene-heading h2{margin:4px 0 2px;font:900 clamp(23px,4vw,39px) Cinzel,serif}.social-scene-heading p{margin:0;font:800 11px Inter,sans-serif;color:#f7ead0}
.social-scene-portraits{position:absolute;z-index:3;left:50%;bottom:27px;transform:translateX(-50%);display:flex;gap:30px;align-items:flex-end}.social-scene-person{appearance:none;border:0;background:transparent;color:#fff;display:grid;gap:7px;justify-items:center;cursor:pointer;filter:drop-shadow(0 10px 12px #000b)}.social-scene-person img{width:150px;height:150px;border-radius:24px;object-fit:cover;object-position:50% 14%;border:6px solid #efe4ca;background:#17223a;box-shadow:0 0 0 5px #6f3651}.social-scene-person b{padding:6px 10px;background:#111827ec;border:2px solid #e6c676;font:900 12px Cinzel,serif;max-width:190px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.social-scene-transcript{display:grid;gap:8px;padding:20px 24px;background:#fff9eb}.social-dialogue-line{display:grid;grid-template-columns:130px 1fr;gap:12px;align-items:start;padding:9px 11px;border-left:4px solid #6f3651;background:#f3ead6}.social-dialogue-line.right{border-left-color:#0e5e68}.social-dialogue-line b{font:900 11px Cinzel,serif}.social-dialogue-line span{font:700 13px/1.4 Inter,sans-serif;color:#493c42}.social-scene-actions{display:flex;justify-content:flex-end;padding:0 24px 20px;background:#fff9eb}
@media(max-width:650px){.social-scene-visual{min-height:275px}.social-scene-portraits{gap:12px}.social-scene-person img{width:105px;height:105px;border-radius:17px}.social-scene-heading{left:16px;top:15px}.social-scene-transcript{padding:15px}.social-dialogue-line{grid-template-columns:1fr;gap:3px}.social-scene-actions{padding:0 15px 15px}}

.castle-interior-actors.settlement-residents.busy{grid-template-columns:repeat(auto-fit,minmax(76px,1fr));gap:8px}.castle-interior-actors.settlement-residents.busy .settlement-resident img{width:78px;height:78px}.castle-interior-actors.settlement-residents.crowded{grid-template-columns:repeat(auto-fit,minmax(66px,1fr));gap:5px;padding-top:98px}.castle-interior-actors.settlement-residents.crowded .settlement-resident img{width:66px;height:66px;border-radius:12px}.castle-interior-actors.settlement-residents.crowded .settlement-resident span{font-size:7px;padding:4px}.castle-interior-actors.settlement-residents.crowded .settlement-resident small{font-size:6px}

/* v111 — player-noble care / tamagotchi-style daily life */
.noble-care-summary{display:grid;grid-template-columns:1fr auto;gap:9px 12px;align-items:center;background:linear-gradient(135deg,#e8f4e7,#f8f0d7);border:2px solid #9e8052;color:#352a28}.noble-care-summary>b{grid-column:1/-1;font-family:Cinzel,serif;letter-spacing:.06em}.noble-care-summary>span{font-size:11px;color:#6a5a50}.noble-care-summary .btn{grid-column:1/-1}.care-summary-bars{display:flex;gap:4px}.care-summary-bars i{width:32px;height:27px;border:1px solid #9f8a69;border-radius:6px;display:grid;place-items:center;font-style:normal;font-size:12px;background:linear-gradient(to top,#b8d99e var(--v),#efe8d7 var(--v))}
.noble-care-dialog{width:min(980px,calc(100vw - 28px));max-height:calc(100vh - 34px);padding:0;border:0;background:transparent;color:#241d27}.noble-care-dialog::backdrop{background:rgba(9,12,18,.74);backdrop-filter:blur(5px)}.noble-care-shell{position:relative;overflow:auto;max-height:calc(100vh - 34px);background:#efe5cb;border:7px solid #2d2532;box-shadow:0 22px 80px #0009}.noble-care-shell:before{content:"";position:absolute;inset:11px;border:1px solid rgba(104,77,46,.25);pointer-events:none}.noble-care-head{position:relative;display:grid;grid-template-columns:92px 1fr auto;align-items:center;gap:16px;padding:24px 28px 16px;background:linear-gradient(135deg,#253745,#3f3150);color:#fff3dd}.noble-care-head>div:nth-child(2)>span{font:900 9px/1 Inter,sans-serif;letter-spacing:.13em;color:#dfbd73}.noble-care-head h2{margin:5px 0 4px;font:800 27px/1.05 Cinzel,serif}.noble-care-head p{margin:0;color:#d6ccbe;font-size:12px}.noble-care-portrait{width:78px;height:78px;border-radius:15px;overflow:hidden;border:4px solid #dfc486;background:#171724}.noble-care-portrait img{width:100%;height:100%;object-fit:cover}.noble-care-purse{text-align:right;padding:9px 12px;background:#ffffff12;border:1px solid #ffffff2e;border-radius:9px}.noble-care-purse small{display:block;font:800 8px Inter,sans-serif;letter-spacing:.1em;color:#d9c9af}.noble-care-purse strong{display:block;margin-top:3px;font:800 17px Cinzel,serif}.noble-care-needs{position:relative;display:grid;grid-template-columns:repeat(4,1fr);gap:9px;padding:15px 28px;background:#ded0b1;border-bottom:1px solid #bca67c}.noble-care-need{min-width:0}.noble-care-need>div:first-child{display:grid;grid-template-columns:auto 1fr auto;gap:5px;align-items:center;font-size:10px}.noble-care-need b{font-family:Inter,sans-serif;text-transform:uppercase;font-size:9px}.noble-care-need strong{font-size:10px}.noble-care-meter{height:7px;margin-top:5px;border-radius:999px;background:#ac9a7d;overflow:hidden}.noble-care-meter i{display:block;height:100%;background:#317d67}.noble-care-grid{position:relative;display:grid;grid-template-columns:1.25fr 1fr 1fr;gap:12px;padding:18px 28px 24px}.noble-care-card{background:#fffaf0;border:2px solid #bca67c;border-radius:9px;padding:13px;box-shadow:0 5px 14px #4e3a2412}.noble-care-card-head{display:flex;gap:9px;align-items:center;padding-bottom:10px;border-bottom:1px solid #dacbad}.noble-care-card-head>span{font-size:24px}.noble-care-card-head strong{display:block;font:800 12px Cinzel,serif}.noble-care-card-head small{font-size:9px;color:#76685d}.care-shop-row{display:grid;grid-template-columns:30px 1fr auto auto;gap:6px;align-items:center;padding:9px 0;border-bottom:1px solid #eadfc9}.care-shop-row:last-child{border-bottom:0}.care-shop-row span:nth-child(2){min-width:0}.care-shop-row b,.care-shop-row small{display:block}.care-shop-row b{font-size:10px}.care-shop-row small{font-size:8px;color:#7b6d61}.care-shop-row .btn{font-size:8px;padding:7px 8px;min-height:30px}.care-shop-icon{font-size:20px}.noble-care-actions{display:grid;grid-template-columns:1fr 1fr;gap:7px;padding-top:10px}.care-action{border:1px solid #bfae8e;background:#f0e4cb;padding:10px 7px;border-radius:7px;cursor:pointer;color:#332a2d}.care-action:hover{background:#e5d3b0}.care-action span,.care-action b,.care-action small{display:block}.care-action span{font-size:21px}.care-action b{margin-top:4px;font:800 9px Inter,sans-serif;text-transform:uppercase}.care-action small{font-size:8px;color:#786b61}.care-pet-empty{margin:11px 0 5px;font-size:10px;color:#6d6158;line-height:1.45}.pet-row{grid-template-columns:30px 1fr auto}.care-pet-owned{display:grid;grid-template-columns:52px 1fr auto;gap:9px;align-items:center;margin-top:12px;padding:11px;background:#e7dbc1;border-radius:7px}.care-pet-owned>span{font-size:38px}.care-pet-owned b,.care-pet-owned small{display:block}.care-pet-owned small{font-size:9px;color:#6c6159}.noble-care-foot{position:relative;display:flex;justify-content:space-between;align-items:center;gap:12px;padding:13px 28px 18px;border-top:1px solid #c4b08b;color:#75675d;font-size:9px}.noble-care-foot .btn{white-space:nowrap}
@media(max-width:800px){.noble-care-head{grid-template-columns:70px 1fr}.noble-care-purse{grid-column:1/-1;text-align:left}.noble-care-portrait{width:62px;height:62px}.noble-care-needs{grid-template-columns:1fr 1fr}.noble-care-grid{grid-template-columns:1fr}.noble-care-foot{align-items:flex-start;flex-direction:column}.care-shop-row{grid-template-columns:30px 1fr auto}.care-shop-row [data-care-feed]{grid-column:2/-1}.noble-care-dialog{width:calc(100vw - 14px)}}
.noble-room-pet{position:absolute;right:8%;bottom:7%;z-index:12;display:grid;justify-items:center;gap:2px;padding:7px 10px;border-radius:10px;background:#f7e7c7dd;border:2px solid #7f6545;box-shadow:0 7px 18px #0005;color:#34272a}.noble-room-pet span{font-size:34px;line-height:1}.noble-room-pet b{font:800 8px Inter,sans-serif;text-transform:uppercase;letter-spacing:.04em}
.care-pet-rename{display:flex;gap:6px;margin-top:8px}.care-pet-rename input{min-width:0;flex:1;padding:8px 9px;border:1px solid #b9a37c;border-radius:6px;background:#fffdf7;color:#2f272b;font:600 11px Inter,sans-serif}.care-pet-rename .btn{font-size:8px;padding:7px 9px}


/* ---- v112: player-first multiplayer life-sim refinement ---- */
.controlled-noble-hud{position:absolute;left:20px;top:28px;z-index:40;width:min(360px,calc(100% - 40px));padding:10px;background:rgba(22,26,38,.95);border:2px solid #d5b66b;box-shadow:0 10px 28px rgba(0,0,0,.45);color:#fff5df;font-family:Inter,sans-serif;backdrop-filter:blur(5px)}
.controlled-noble-hud[hidden]{display:none!important}.controlled-hud-main{width:100%;display:grid;grid-template-columns:58px 1fr;gap:10px;align-items:center;text-align:left;border:0;background:transparent;color:inherit;padding:0;cursor:pointer}.controlled-hud-main img{width:58px;height:58px;object-fit:cover;object-position:50% 14%;border-radius:12px;border:3px solid #d5b66b;background:#171724}.controlled-hud-main span{min-width:0}.controlled-hud-main small,.controlled-hud-home small{display:block;color:#d5b66b;font:900 8px/1 Inter,sans-serif;letter-spacing:.12em}.controlled-hud-main strong{display:block;margin-top:3px;font:800 15px/1.1 Cinzel,serif;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.controlled-hud-main em{display:block;margin-top:4px;color:#d9d9d2;font:700 10px/1.3 Inter,sans-serif;font-style:normal}.controlled-hud-home{display:flex;align-items:baseline;gap:8px;margin:9px 0 7px;padding-top:7px;border-top:1px solid rgba(213,182,107,.28)}.controlled-hud-home b{font:800 10px Inter,sans-serif;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.controlled-hud-needs{display:grid;grid-template-columns:repeat(4,1fr);gap:5px}.controlled-hud-needs span{position:relative;overflow:hidden;min-height:28px;display:flex;align-items:center;justify-content:center;gap:4px;border:1px solid rgba(255,255,255,.15);background:#2e3444;font-size:11px}.controlled-hud-needs span i{position:absolute;left:0;bottom:0;height:4px;width:var(--v);background:#79c49b}.controlled-hud-needs b{font-size:9px}.controlled-hud-actions{display:grid;grid-template-columns:repeat(4,1fr);gap:5px;margin-top:7px}.controlled-hud-actions button{min-height:34px;border:1px solid #b69c62;background:#efe4ca;color:#2a2430;font:900 8px Inter,sans-serif;cursor:pointer}.controlled-hud-actions button:hover,.controlled-hud-actions button:focus-visible{background:#fff3d8;outline:2px solid #fff;outline-offset:1px}.controlled-hud-actions button[hidden]{display:none}.controlled-hud-actions button:disabled{opacity:.4;cursor:not-allowed}
.living-noble.controlled-noble-map-marker:not(.sailing) .noble-map-portrait{box-shadow:0 0 0 5px #fff0bc,0 0 0 11px #d8a73f,0 10px 20px #0009}.living-noble.controlled-noble-map-marker:before{content:'YOU';position:absolute;left:50%;top:-26px;transform:translateX(-50%);z-index:5;padding:4px 7px;background:#d5a945;color:#241d28;border:2px solid #fff0bc;font:900 9px Inter,sans-serif;letter-spacing:.09em;pointer-events:none}.living-noble.controlled-noble-map-marker.sailing:before{top:-40px}
/* The original PSD contains the default buildings; empty settlements stay visually quiet until used/selected. */
.map-object.populated-building:not(.occupied-residence):not(.selected-residence):not(.interior-active-residence) .object-home-tag{opacity:0!important}.map-object.populated-building:not(.occupied-residence) .object-resident-count{display:none}
/* Social parties are deliberately compact so their open-field encounters do not cover nearby scenery. */
.living-social-party{width:188px;height:150px}.living-social-party .social-name{max-width:225px;font-size:11px}.living-social-party .social-action{font-size:9px;max-width:230px;overflow:hidden;text-overflow:ellipsis}
@media(max-width:760px){.controlled-noble-hud{left:10px;top:20px;width:min(330px,calc(100% - 20px));padding:8px}.controlled-hud-main{grid-template-columns:48px 1fr}.controlled-hud-main img{width:48px;height:48px;border-radius:10px}.controlled-hud-actions{grid-template-columns:repeat(2,1fr)}.controlled-hud-actions button{min-height:38px}.controlled-hud-needs span{min-height:30px}}


/* ---- v113: de-overlap, compact solo nobles, collapsible HUD, restored full-body social scenes ---- */
.living-noble{z-index:6}
.living-noble .noble-map-portrait{width:98px;height:98px;border-radius:18px;border-width:6px;object-position:50% 10%}
.living-noble .noble-map-name{top:92px;max-width:220px;padding:6px 9px;font-size:14px}
.living-noble .noble-action-chip{bottom:87px;padding:4px 7px;font-size:9px;max-width:220px;overflow:hidden;text-overflow:ellipsis}
.living-noble.controlled-noble-map-marker:not(.sailing) .noble-map-portrait{box-shadow:0 0 0 4px #fff0bc,0 0 0 9px #d8a73f,0 10px 20px #0009}
.living-social-party{z-index:8}
.living-social-party .social-portrait img,.settlement-resident img,.controlled-hud-main img{object-position:50% 10%}
.controlled-noble-hud{overflow:hidden;padding-top:38px;transition:max-height .2s ease,opacity .2s ease}
.controlled-hud-toggle{position:absolute;right:8px;top:8px;width:28px;height:28px;border:1px solid #d5b66b;background:#efe4ca;color:#251f29;font:900 16px/1 Inter,sans-serif;cursor:pointer;z-index:2}
.controlled-hud-toggle:hover,.controlled-hud-toggle:focus-visible{background:#fff3d8;outline:2px solid #fff;outline-offset:1px}
.controlled-noble-hud.collapsed{width:min(240px,calc(100% - 40px));padding-bottom:8px}
.controlled-noble-hud.collapsed .controlled-hud-home,.controlled-noble-hud.collapsed .controlled-hud-needs,.controlled-noble-hud.collapsed .controlled-hud-actions{display:none}
.controlled-noble-hud.collapsed .controlled-hud-main em{display:none}
.social-scene-portraits.social-actor-stage{position:absolute;inset:0;left:0;bottom:0;transform:none;display:block}
.social-scene-actors{position:absolute;inset:0;z-index:3;display:flex;align-items:flex-end;justify-content:center;gap:18%;padding:108px 7% 4.5%;pointer-events:none}
.social-scene-actors .castle-interior-actor{width:28%;max-width:300px;height:61%;min-width:0;display:flex;align-items:flex-end;justify-content:center;filter:drop-shadow(0 13px 10px #000a)}
.social-scene-actors .actor-left img{transform:scaleX(-1)}
.social-scene-actors .actor-left.talking img{animation:castleTalkLeft .32s steps(2,end) infinite}
.social-scene-actors .actor-right.talking img{animation:castleTalkRight .35s steps(2,end) infinite}
.social-scene-actors .castle-interior-actor img{display:block;width:100%;height:100%;object-fit:contain;object-position:center bottom;transform-origin:50% 92%}
.social-scene-actors .castle-actor-name{position:absolute;left:50%;top:-8px;transform:translate(-50%,-100%);max-width:96%;padding:6px 11px;background:#111827e8;border:2px solid #e6c676;color:#fffdf1;font:900 clamp(11px,1.25vw,16px) Cinzel,serif;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;box-shadow:0 5px 12px #0008;text-shadow:0 2px 2px #000}
.social-scene-actors .castle-actor-chat{position:absolute;left:50%;top:44px;transform:translateX(-50%);z-index:7;width:max-content;max-width:250px;padding:9px 12px;border-radius:10px;background:#fff9e9;border:3px solid #c8b58d;color:#201923;font:800 12px/1.25 Inter,sans-serif;text-align:center;box-shadow:0 5px 12px #0008}
.social-dialogue-line.active{background:#fff2d3;border-left-width:6px;box-shadow:0 0 0 1px rgba(111,54,81,.15) inset}
@media(max-width:760px){.living-noble .noble-map-portrait{width:84px;height:84px;border-radius:15px}.living-noble .noble-map-name{top:79px;font-size:12px;max-width:180px}.living-noble .noble-action-chip{bottom:75px;font-size:8px;max-width:180px}.controlled-noble-hud.collapsed{width:min(200px,calc(100% - 20px))}.social-scene-actors{gap:6%;padding-top:90px}.social-scene-actors .castle-interior-actor{width:43%;height:63%}.social-scene-actors .castle-actor-name{padding:4px 7px;font-size:10px}.social-scene-actors .castle-actor-chat{max-width:170px;font-size:10px;padding:6px 8px}}


/* ---- v114: unified portrait sizes, wide multi-noble markers, crisper text ---- */
:root{--map-portrait-size:88px;--map-multi-portrait-size:82px}
.living-noble .noble-map-portrait{width:var(--map-portrait-size);height:var(--map-portrait-size);border-radius:18px;border-width:6px;object-position:50% 0%}
.living-noble .noble-map-name{top:84px;max-width:240px;padding:6px 10px;font-size:14px;text-rendering:geometricPrecision;-webkit-font-smoothing:antialiased;backface-visibility:hidden}
.living-noble .noble-action-chip{bottom:80px;max-width:240px;font-size:10px;text-rendering:geometricPrecision;-webkit-font-smoothing:antialiased}
.living-social-party{width:232px;height:154px;filter:drop-shadow(0 8px 10px #0009)}
.living-social-party:hover,.living-social-party:focus-visible{filter:drop-shadow(0 10px 12px #000c) drop-shadow(0 0 14px #e7c16a)}
.living-social-party .social-portraits{position:absolute;left:50%;top:34px;transform:translateX(-50%);display:flex;align-items:center;justify-content:center;gap:0;width:auto;height:auto;padding:7px 10px;border-radius:20px;background:#17223a;border:5px solid var(--social-colour);box-shadow:0 0 0 4px #efe4ca,0 6px 10px #0008;pointer-events:none}
.living-social-party .social-portrait{position:relative;width:var(--map-multi-portrait-size);height:var(--map-multi-portrait-size);margin:0;background:transparent;border:0;box-shadow:none;overflow:hidden;border-radius:14px}
.living-social-party .social-portrait + .social-portrait{margin-left:4px}
.living-social-party .social-portrait img{width:100%;height:100%;object-fit:cover;object-position:50% 0%;background:#17223a}
.living-social-party .social-portrait:first-child img{transform:scaleX(-1)}
.living-social-party .social-name{top:113px;max-width:248px;padding:6px 10px;font-size:13px;text-rendering:geometricPrecision;-webkit-font-smoothing:antialiased}
.living-social-party .social-action{top:142px;max-width:240px;padding:4px 8px;font-size:10px;text-rendering:geometricPrecision;-webkit-font-smoothing:antialiased}
.living-expedition-party{width:248px;height:160px;filter:drop-shadow(0 8px 10px #0009)}
.living-expedition-party .party-portraits{position:absolute;left:50%;top:34px;transform:translateX(-50%);display:flex;align-items:center;justify-content:center;gap:4px;width:auto;height:auto;padding:7px 10px;border-radius:20px;background:#17223a;border:5px solid var(--party-region,#c8b58d);box-shadow:0 0 0 4px #efe4ca,0 6px 10px #0008;pointer-events:none;z-index:5}
.living-expedition-party .party-portrait{position:relative;width:var(--map-multi-portrait-size);height:var(--map-multi-portrait-size);margin:0;border-radius:14px;background:transparent;border:0;box-shadow:none;overflow:hidden}
.living-expedition-party .party-portrait img{width:100%;height:100%;object-fit:cover;object-position:50% 0%;pointer-events:none;background:#17223a}
.living-expedition-party .party-boat{top:62px}
.living-expedition-party.sailing .party-portraits{top:15px;transform:translateX(-50%) scale(.72)}
.living-expedition-party .party-name{top:114px;max-width:250px;padding:6px 10px;font-size:13px;text-rendering:geometricPrecision;-webkit-font-smoothing:antialiased}
.living-expedition-party .party-action{top:143px;max-width:242px;padding:4px 8px;font-size:10px;text-rendering:geometricPrecision;-webkit-font-smoothing:antialiased}
.settlement-resident img,.controlled-hud-main img,.social-scene-actors .castle-interior-actor img{object-position:50% 0%}
@media(max-width:760px){
  :root{--map-portrait-size:80px;--map-multi-portrait-size:72px}
  .living-noble .noble-map-name{top:76px;max-width:200px;font-size:12px}
  .living-noble .noble-action-chip{bottom:73px;max-width:190px;font-size:9px}
  .living-social-party{width:208px;height:146px}.living-social-party .social-name{max-width:218px;font-size:11px}.living-social-party .social-action{max-width:210px;font-size:9px}
  .living-expedition-party{width:214px;height:150px}.living-expedition-party .party-name{max-width:218px;font-size:11px}.living-expedition-party .party-action{max-width:214px;font-size:9px}
}


/* ---- v133: restore image-first click-through social encounter viewer only ---- */
.social-scene-dialog{width:min(1180px,97vw);max-width:none;padding:0;border:0;background:transparent;box-shadow:none}
.social-scene-shell{border:6px solid #c8b58d;background:#111827;box-shadow:0 24px 82px #000c}
.social-scene-visual{position:relative;height:min(78vh,760px);min-height:560px;cursor:pointer;overflow:hidden;background:#203745}
.social-scene-background{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;filter:brightness(.74) saturate(.92)}
.social-scene-heading{position:absolute;left:30px;right:390px;top:22px;z-index:8;color:#fff;text-shadow:0 3px 4px #000}.social-scene-heading h2{font-size:clamp(28px,4vw,48px);margin:6px 0}.social-scene-heading p{margin:0}
.social-scene-summary{position:absolute;z-index:9;right:72px;top:24px;width:min(300px,32%);max-height:150px;overflow:auto;padding:11px 13px;background:rgba(17,24,39,.88);border:2px solid #d8bd7b;color:#fff8e8;box-shadow:0 7px 20px #0007;backdrop-filter:blur(5px)}
.social-scene-summary>strong{display:block;margin-bottom:6px;color:#efce80;font:900 9px Inter,sans-serif;letter-spacing:.12em}.social-scene-summary-line{font:700 10px/1.32 Inter,sans-serif;margin-top:4px}.social-scene-summary-line b{font-family:Cinzel,serif;color:#fff}
.social-scene-portraits.social-actor-stage{position:absolute;inset:0;display:block;pointer-events:none}
.social-scene-actors{position:absolute;inset:0;display:flex;align-items:flex-end;justify-content:center;gap:20%;padding:118px 6% 0;pointer-events:none}
.social-scene-actors .castle-interior-actor{position:relative;width:31%;max-width:340px;height:78%;display:flex;align-items:flex-end;justify-content:center;filter:drop-shadow(0 15px 12px #000b);pointer-events:none!important}
.social-scene-actors .castle-interior-actor img{width:100%;height:100%;object-fit:contain;object-position:center bottom;display:block}
.social-scene-actors .actor-left img{transform:scaleX(-1)}
.social-scene-actors .actor-left.talking img{animation:castleTalkLeft .32s steps(2,end) infinite}.social-scene-actors .actor-right.talking img{animation:castleTalkRight .35s steps(2,end) infinite}
.social-scene-actors .castle-actor-name{position:absolute;left:50%;top:3%;transform:translate(-50%,-100%);max-width:96%;padding:6px 11px;background:#111827e8;border:2px solid #e6c676;color:#fffdf1;font:900 14px Cinzel,serif;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;box-shadow:0 5px 12px #0008;text-shadow:0 2px 2px #000;z-index:9}
.social-scene-actors .castle-actor-chat{position:absolute;top:31%;width:290px;max-width:290px;padding:13px 15px;border-radius:15px;border:3px solid #b79b68;background:#fff9e9;color:#211b22;font:800 15px/1.32 Inter,sans-serif;box-shadow:0 8px 20px #0009;z-index:10;text-align:center}
.social-scene-actors .actor-left .castle-actor-chat{left:78%;transform:none}.social-scene-actors .actor-right .castle-actor-chat{left:auto;right:78%;transform:none}
.social-scene-actors .actor-left .castle-actor-chat:after,.social-scene-actors .actor-right .castle-actor-chat:after{content:'';position:absolute;top:50%;width:18px;height:18px;background:#fff9e9;border-bottom:3px solid #b79b68;border-right:3px solid #b79b68}
.social-scene-actors .actor-left .castle-actor-chat:after{left:-11px;transform:translateY(-50%) rotate(135deg)}.social-scene-actors .actor-right .castle-actor-chat:after{right:-11px;transform:translateY(-50%) rotate(-45deg)}
.social-scene-next,.social-scene-map{position:absolute;z-index:12;bottom:18px;min-height:42px;padding:0 16px;border:2px solid #d8bd7b;background:#111827e8;color:#fff7e6;font:900 10px Cinzel,serif;letter-spacing:.07em;cursor:pointer;box-shadow:0 5px 14px #0008}
.social-scene-next{right:20px}.social-scene-map{left:20px}.social-scene-next:hover,.social-scene-map:hover,.social-scene-next:focus-visible,.social-scene-map:focus-visible{background:#efe4ca;color:#251f29;outline:2px solid #fff;outline-offset:1px}
.social-scene-click-hint{position:absolute;z-index:11;left:50%;bottom:25px;transform:translateX(-50%);padding:6px 10px;background:#111827c9;color:#f1d58d;font:900 9px Inter,sans-serif;letter-spacing:.12em;pointer-events:none}
@media(max-width:760px){.social-scene-dialog{width:98vw}.social-scene-visual{height:72vh;min-height:520px}.social-scene-heading{left:18px;right:55px}.social-scene-heading h2{font-size:25px}.social-scene-summary{right:18px;top:110px;width:220px;max-height:100px}.social-scene-actors{gap:3%;padding:145px 2% 0}.social-scene-actors .castle-interior-actor{width:48%;height:70%}.social-scene-actors .castle-actor-chat{width:185px;max-width:185px;font-size:11px;padding:9px 10px}.social-scene-actors .actor-left .castle-actor-chat{left:55%}.social-scene-actors .actor-right .castle-actor-chat{right:55%}.social-scene-click-hint{display:none}}


/* v138 court events */
.living-court-layer{position:absolute;inset:0;width:5000px;height:5000px;pointer-events:none;z-index:18}
.living-court-event{position:absolute;transform:translate(-50%,-50%) scale(var(--living-marker-scale,1));transform-origin:center;pointer-events:auto;cursor:pointer;border:0;background:transparent;color:#fff;padding:0;width:250px;height:155px;filter:drop-shadow(0 8px 10px #000a)}
.living-court-event .court-crown{position:absolute;left:50%;top:23px;transform:translateX(-50%);width:84px;height:84px;border-radius:20px;display:grid;place-items:center;background:#241b2e;border:5px solid #e4c46e;box-shadow:0 0 0 4px #f3e8ca,0 6px 11px #0009;color:#f5d980;font:900 42px/1 serif}
.living-court-event .court-count{position:absolute;right:65px;top:13px;min-width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:#7b2037;border:3px solid #f0d28a;color:#fff;font:900 11px Inter,sans-serif}
.living-court-event .court-name{position:absolute;left:50%;top:112px;transform:translateX(-50%);max-width:260px;padding:6px 10px;background:#111827ed;border:2px solid #e4c46e;color:#fff7db;font:900 12px Cinzel,serif;white-space:nowrap}
.living-court-event .court-action{position:absolute;left:50%;top:142px;transform:translateX(-50%);padding:4px 8px;background:#efe4ca;border:2px solid #c8b58d;color:#2d232a;font:900 9px Inter,sans-serif;white-space:nowrap}
.living-court-event:hover,.living-court-event:focus-visible{filter:drop-shadow(0 10px 13px #000c) drop-shadow(0 0 15px #e4c46e);outline:none}

/* v138 multi-person conversation staging */
.social-scene-actors.count-3 .castle-interior-actor{width:24%;max-width:260px}
.social-scene-actors.count-4 .castle-interior-actor{width:20%;max-width:220px}
.social-scene-actors.count-5 .castle-interior-actor{width:17%;max-width:190px}
.social-scene-actors.count-6 .castle-interior-actor{width:15%;max-width:175px}
.social-scene-actors.count-3,.social-scene-actors.count-4,.social-scene-actors.count-5,.social-scene-actors.count-6{gap:3.5%}
.social-scene-actors.count-5 .castle-actor-chat,.social-scene-actors.count-6 .castle-actor-chat{width:220px;max-width:220px;font-size:13px}
@media(max-width:760px){.social-scene-actors.count-3 .castle-interior-actor{width:30%}.social-scene-actors.count-4 .castle-interior-actor{width:24%}.social-scene-actors.count-5 .castle-interior-actor,.social-scene-actors.count-6 .castle-interior-actor{width:19%}.social-scene-actors.count-5 .castle-actor-chat,.social-scene-actors.count-6 .castle-actor-chat{width:160px;max-width:160px;font-size:10px}}


/* v139 — cleaner group camp / expedition conversations */
.social-scene-actors.count-3,.social-scene-actors.count-4,.social-scene-actors.count-5,.social-scene-actors.count-6{
  justify-content:space-evenly;
  gap:4%;
  padding-left:4%;
  padding-right:4%;
}
.social-scene-actors.count-3 .castle-interior-actor{width:23%;max-width:250px}
.social-scene-actors.count-4 .castle-interior-actor{width:18%;max-width:215px}
.social-scene-actors.count-5 .castle-interior-actor{width:14%;max-width:180px}
.social-scene-actors.count-6 .castle-interior-actor{width:12%;max-width:160px}
.social-scene-actors.count-3 .castle-actor-chat,
.social-scene-actors.count-4 .castle-actor-chat,
.social-scene-actors.count-5 .castle-actor-chat,
.social-scene-actors.count-6 .castle-actor-chat{
  left:50%!important;
  right:auto!important;
  top:-10px!important;
  transform:translate(-50%,-100%)!important;
  width:220px;
  max-width:min(220px,22vw);
  z-index:20;
}
.social-scene-actors.count-3 .castle-actor-chat:after,
.social-scene-actors.count-4 .castle-actor-chat:after,
.social-scene-actors.count-5 .castle-actor-chat:after,
.social-scene-actors.count-6 .castle-actor-chat:after{
  left:50%!important;right:auto!important;top:auto!important;bottom:-11px!important;
  transform:translateX(-50%) rotate(45deg)!important;
}
@media(max-width:760px){
  .social-scene-actors.count-3,.social-scene-actors.count-4,.social-scene-actors.count-5,.social-scene-actors.count-6{gap:2%;padding-left:2%;padding-right:2%}
  .social-scene-actors.count-3 .castle-interior-actor{width:29%}
  .social-scene-actors.count-4 .castle-interior-actor{width:22%}
  .social-scene-actors.count-5 .castle-interior-actor{width:17%}
  .social-scene-actors.count-6 .castle-interior-actor{width:14%}
  .social-scene-actors.count-3 .castle-actor-chat,.social-scene-actors.count-4 .castle-actor-chat,.social-scene-actors.count-5 .castle-actor-chat,.social-scene-actors.count-6 .castle-actor-chat{width:155px;max-width:30vw;font-size:10px;padding:8px 9px}
}


/* v140 — staggered Royal Court arrivals/departures */
.living-court-event.assembling .court-crown{background:#253344;color:#f4d88a}
.living-court-event.assembling .court-action{background:#e8e1d0}
.living-court-event.adjourning .court-crown{background:#31263a;color:#d9c8ec}
.living-court-event.adjourning .court-action{background:#e4dbe8}

/* v141 — dynamic relationships, mood and editor conversation library */
.relationship-meter-list{display:grid;gap:7px;margin-top:8px}.relationship-meter{display:grid;grid-template-columns:42px minmax(0,1fr) auto;gap:8px;align-items:center;padding:7px 8px;border:1px solid #c8b58d;background:#fff9eb;cursor:pointer}.relationship-meter:hover{background:#f2e8cf}.relationship-meter img{width:42px;height:42px;border-radius:9px;object-fit:cover;object-position:50% 10%;background:#17223a}.relationship-meter-main{min-width:0}.relationship-meter-main b{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font:900 10px Cinzel,serif}.relationship-meter-main small{display:flex;justify-content:space-between;gap:8px;margin-top:3px;color:#715f5d;font:800 8px Inter,sans-serif;text-transform:uppercase}.relationship-bar{height:7px;margin-top:5px;border-radius:99px;background:#c7c3b8;overflow:hidden;position:relative}.relationship-bar i{display:block;height:100%;width:var(--value,50%);background:linear-gradient(90deg,#8f3f48,#d4b35e 48%,#5fa677);border-radius:inherit}.relationship-score{font:900 10px Inter,sans-serif;color:#4c4044}.noble-mood-panel{margin:10px 0;padding:10px;border:1px solid #c8b58d;background:#f9f1de}.noble-mood-panel>div:first-child{display:flex;justify-content:space-between;align-items:baseline;gap:10px}.noble-mood-panel strong{font:900 10px Cinzel,serif;color:#6f3651}.noble-mood-panel b{font:900 17px Inter,sans-serif}.noble-mood-track{height:10px;margin-top:7px;background:#c8c1b5;border-radius:999px;overflow:hidden}.noble-mood-track i{display:block;height:100%;width:var(--mood,50%);background:linear-gradient(90deg,#9b4247,#d9ad51 50%,#67a86c)}.noble-mood-panel small{display:block;margin-top:5px;color:#786760;font:700 9px/1.35 Inter,sans-serif}.social-plan-controls{display:grid;gap:8px}.social-plan-controls select{width:100%;min-height:34px;border:1px solid #9e8a65;background:#fffaf0;padding:0 8px;color:#2b2228;font:800 10px Inter,sans-serif}.social-plan-controls .actions{display:flex;gap:6px}.social-plan-controls .actions .btn{flex:1}.social-plan-controls>small{font:700 8px/1.35 Inter,sans-serif;color:#75645f}.conversation-library-dialog{width:min(1180px,96vw);max-width:none;padding:0;border:0;background:transparent}.conversation-library-dialog::backdrop{background:#09070bc9;backdrop-filter:blur(4px)}.conversation-library-shell{position:relative;background:#efe4ca;border:5px solid #c8b58d;box-shadow:0 22px 70px #000b;padding:22px}.conversation-library-head{padding-right:50px}.conversation-library-head>span{font:900 9px Inter,sans-serif;letter-spacing:.14em;color:#7d334d}.conversation-library-head h2{margin:4px 0 5px;font:900 28px Cinzel,serif}.conversation-library-head p{margin:0;max-width:900px;font:700 10px/1.5 Inter,sans-serif;color:#67575a}.conversation-library-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:18px}.conversation-library-grid section{display:grid;grid-template-rows:auto auto 1fr;gap:5px;min-height:440px;padding:12px;background:#fff8e8;border:1px solid #bda77d}.conversation-library-grid h3{margin:0;font:900 13px Cinzel,serif;color:#6f3651}.conversation-library-grid small{font:700 8px/1.35 Inter,sans-serif;color:#796b64}.conversation-library-grid textarea{width:100%;min-height:350px;resize:vertical;border:1px solid #a98f65;background:#fffdf6;padding:9px;font:700 10px/1.45 Inter,sans-serif;color:#2e252b}.conversation-library-foot{display:flex;align-items:center;justify-content:flex-end;gap:8px;margin-top:12px}.conversation-library-foot>span{margin-right:auto;font:800 9px Inter,sans-serif;color:#6e605b}@media(max-width:850px){.conversation-library-grid{grid-template-columns:1fr}.conversation-library-grid section{min-height:280px}.conversation-library-grid textarea{min-height:220px}}

/* v143 — exact marker positions + Sims-like social history */
.relationship-card-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;max-height:430px;overflow:auto;padding:5px 2px 5px 0}.relationship-card{appearance:none;border:1px solid #c7b58c;background:#fffaf0;padding:0 0 8px;color:#2b2329;text-align:center;cursor:pointer;min-width:0;position:relative}.relationship-card:hover,.relationship-card:focus-visible{background:#fff3d8;outline:2px solid #7a4565;outline-offset:1px}.relationship-card>img{display:block;width:100%;aspect-ratio:1/.84;object-fit:cover;object-position:50% 10%;background:#17223a}.relationship-card-name{display:block;margin:6px 5px 1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font:900 9px Cinzel,serif}.relationship-card-label{display:block;color:#75645f;font:800 7px Inter,sans-serif;text-transform:uppercase}.relationship-card-bar{display:block;height:7px;margin:6px 8px 3px;border-radius:99px;background:#bbb8b1;overflow:hidden}.relationship-card-bar i{display:block;height:100%;width:var(--value,50%);background:linear-gradient(90deg,#a84b55 0%,#c9ad67 49%,#69a965 100%)}.relationship-card-score{font:900 9px Inter,sans-serif}.relationship-last{display:block;min-height:27px;margin:5px 6px 0;padding-top:4px;border-top:1px solid #dfd1b4;color:#65595b;font:700 7px/1.3 Inter,sans-serif}.relationship-last.muted{color:#9a8d86}.delta,.mood-modifier-list b,.social-history-deltas i{display:inline-block;font-style:normal;font-weight:900}.up{color:#437d46!important}.down{color:#a6424e!important}.social-panel-title{display:grid;gap:2px}.social-panel-title small{font:700 8px/1.35 Inter,sans-serif;color:#756761}.mood-modifier-list{display:grid;gap:3px;margin-top:8px}.mood-modifier-list>div{display:flex;justify-content:space-between;gap:8px;padding:4px 6px;background:#fff9ec;border:1px solid #ddceb0;font:700 8px/1.25 Inter,sans-serif}.social-history{margin-top:10px;padding-top:8px;border-top:1px solid #cbb88f}.social-history>strong{font:900 8px Cinzel,serif;color:#6f3651}.social-history-row{display:flex;justify-content:space-between;gap:8px;padding:6px 0;border-bottom:1px solid #dfd1b4}.social-history-row>span:first-child{min-width:0}.social-history-row b{display:block;font:800 8px/1.3 Inter,sans-serif}.social-history-row small{display:block;margin-top:2px;color:#8a7b74;font:700 7px Inter,sans-serif}.social-history-deltas{display:flex;flex-direction:column;align-items:flex-end;gap:2px;flex:none}.social-history-deltas i{font:900 7px Inter,sans-serif}.social-history-empty{padding:7px 0;color:#8a7b74;font:700 8px Inter,sans-serif}@media(max-width:520px){.relationship-card-grid{grid-template-columns:1fr 1fr}.relationship-card-name{font-size:8px}}

/* v144 — player-decorated Noble rooms */
.castle-interior-scene{position:relative;overflow:hidden}
.noble-room-colour,.noble-room-decor-layer{display:none}
.castle-interior-shell.room-mode .noble-room-colour,.castle-interior-shell.room-mode .noble-room-decor-layer{display:block}
.castle-interior-shell.room-mode .castle-interior-room{filter:none}
.noble-room-colour{position:absolute;inset:0;z-index:1;background:var(--room-colour,#ead4ad);mix-blend-mode:color;opacity:.38;pointer-events:none}
.noble-room-decor-layer{position:absolute;inset:0;z-index:3;pointer-events:none}
.castle-interior-heading{z-index:8}.castle-interior-actors{z-index:6}.castle-interior-caption{z-index:9}
.noble-room-object{position:absolute;left:var(--x);top:var(--y);width:var(--w,18%);aspect-ratio:1/1;transform:translate(-50%,-50%) rotate(var(--rot,0deg)) scale(var(--scale,1));transform-origin:center;pointer-events:none;user-select:none;touch-action:none;cursor:grab;z-index:var(--z,1)}
.noble-room-object img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;pointer-events:none;filter:grayscale(.65) contrast(1.02)}
.noble-room-object .room-object-tint{position:absolute;inset:0;background:var(--tint,#9b5c32);-webkit-mask-image:var(--asset);mask-image:var(--asset);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;mix-blend-mode:color;opacity:.9;pointer-events:none}
.castle-interior-shell.room-editing .noble-room-decor-layer{pointer-events:auto}
.castle-interior-shell.room-editing .noble-room-object{pointer-events:auto}
.castle-interior-shell.room-editing .noble-room-object:hover,.castle-interior-shell.room-editing .noble-room-object.selected{outline:2px dashed #f4d06f;outline-offset:5px;border-radius:8px}
.castle-interior-shell.room-editing .noble-room-object:active{cursor:grabbing}
.noble-room-editor{position:absolute;top:18px;right:18px;bottom:18px;width:min(330px,38vw);z-index:40;background:#f5ecd8;color:#221b18;border:3px solid #2c2728;box-shadow:0 12px 40px rgba(0,0,0,.55);display:flex;flex-direction:column}
.noble-room-editor[hidden]{display:none}
.room-editor-head{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;background:#1a2233;color:#fff;border-bottom:3px solid #d9b65b}.room-editor-head small{display:block;color:#d9b65b;font-weight:900;letter-spacing:.08em}.room-editor-head strong{font:800 22px/1.1 Cinzel,serif}.room-editor-close{border:0;background:transparent;color:#fff;font-size:30px;cursor:pointer}
.room-editor-scroll{padding:12px;overflow:auto;display:grid;gap:14px}.room-colour-field,.room-selection-controls label{display:grid;grid-template-columns:1fr auto;align-items:center;gap:10px;font-weight:800}.room-colour-field input,.room-selection-controls input[type=color]{width:54px;height:34px;border:1px solid #8b795e;padding:2px;background:#fff}.room-editor-section{border-top:1px solid #cdbd9d;padding-top:12px}.room-editor-section>b{display:block;margin-bottom:8px;font:800 12px/1 Cinzel,serif;letter-spacing:.08em;color:#70465a}.room-object-library{display:grid;grid-template-columns:repeat(4,1fr);gap:7px}.room-library-item{appearance:none;border:1px solid #b59c73;background:#fff8e9;padding:5px;min-height:66px;cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px}.room-library-item:hover{border-color:#6c4a35;background:#fff}.room-library-item img{width:48px;height:42px;object-fit:contain}.room-library-item span{font-size:9px;line-height:1;text-align:center;font-weight:800}
.room-selection-controls{display:grid;gap:10px}.room-selection-controls label{grid-template-columns:74px 1fr auto}.room-selection-controls output{min-width:44px;text-align:right;font-weight:700}.room-editor-actions{padding:10px 12px;border-top:2px solid #d1c09c;display:flex;align-items:center;justify-content:space-between;gap:12px}.room-editor-actions span{font-size:11px;font-weight:800;color:#6d6459}.room-editor-actions span.dirty{color:#a33}
.castle-interior-shell.room-editing .castle-interior-actors.private-room{opacity:.28}.castle-interior-shell.room-editing .castle-interior-caption{opacity:.3}
@media(max-width:760px){.noble-room-editor{left:10px;right:10px;top:auto;bottom:10px;width:auto;max-height:54%}.room-object-library{grid-template-columns:repeat(5,1fr)}}
.castle-interior-dialog{position:relative}

/* v145 room pass */
.castle-interior-shell.room-mode .castle-interior-scene:after{display:none}
.castle-interior-shell.room-mode .castle-interior-room{z-index:2;filter:none}
.noble-room-window-layer{display:none;position:absolute;inset:0;z-index:3;pointer-events:none;--window-view-image:linear-gradient(180deg,#7eb3d8 0%,#9ed1f2 44%,#7dbf7d 45%,#5d9d62 100%)}
.castle-interior-shell.room-mode .noble-room-window-layer{display:block}
.noble-room-window-layer .room-window{position:absolute;overflow:hidden}.noble-room-window-layer .pane{position:absolute;background-image:var(--window-view-image);background-size:cover;background-position:center}
.noble-room-window-layer .room-window-left{left:7.65%;top:20.2%;width:7.2%;height:22.1%}.noble-room-window-layer .room-window-right{right:7.55%;top:20.2%;width:7.2%;height:22.1%}
.noble-room-window-layer .top-left{left:0;top:0;width:46%;height:47%;border-radius:80% 14% 10% 10%/100% 22% 8% 8%}.noble-room-window-layer .top-right{right:0;top:0;width:46%;height:47%;border-radius:14% 80% 10% 10%/22% 100% 8% 8%}.noble-room-window-layer .bottom-left{left:0;bottom:0;width:46%;height:46%}.noble-room-window-layer .bottom-right{right:0;bottom:0;width:46%;height:46%}
.noble-room-colour{z-index:4;opacity:.16;mix-blend-mode:multiply}.noble-room-decor-layer{z-index:5}
.castle-interior-actors.private-room{padding:112px 6% 0;align-items:flex-end}.castle-interior-actors.private-room .castle-interior-actor{width:30%;max-width:320px;height:61%}.castle-interior-actors.private-room .castle-interior-actor img{object-position:center bottom}
.room-away-empty{align-self:flex-end;max-width:280px;padding:12px 14px;background:#fff7e7dc;border:2px solid #c9aa63;color:#2d2526;font:800 12px/1.35 Inter,sans-serif;box-shadow:0 10px 22px #0004}
.room-library-tabs{display:flex;flex-wrap:wrap;gap:6px;margin:10px 0 12px}.room-library-tab{appearance:none;border:1px solid #b89c6d;background:#fff8e8;padding:7px 9px;color:#3a2b29;font:800 10px/1 Inter,sans-serif;cursor:pointer;text-transform:uppercase}.room-library-tab.active,.room-library-tab:hover{background:#17223a;border-color:#17223a;color:#fff5dc}.room-object-library{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.room-library-item{min-height:84px;padding:8px;border-radius:8px;gap:6px}.room-library-item[hidden]{display:none!important}.room-library-item img{width:56px;height:48px}.room-library-item span{font-size:10px;line-height:1.15}.noble-room-editor{width:min(368px,40vw)}

/* v146 — Noble home polish: true windows, occupied-home lighting, creator-style room editor */
.castle-interior-shell.room-mode .noble-room-window-layer{
  z-index:1;
  background-image:var(--window-view-image);
  background-size:cover;
  background-position:center;
  background-repeat:no-repeat;
}
.castle-interior-shell.room-mode .noble-room-window-layer .room-window{display:none!important}
.castle-interior-shell.room-mode .castle-interior-room{z-index:2}
.castle-interior-shell.room-mode .noble-room-colour{
  z-index:3;
  opacity:.82;
  background:var(--room-colour,#ead4ad);
  mix-blend-mode:color;
  -webkit-mask-image:url('assets/rooms/backgrounds/wall_tint_mask_v147.png');
  mask-image:url('assets/rooms/backgrounds/wall_tint_mask_v147.png');
  -webkit-mask-size:100% 100%;
  mask-size:100% 100%;
  -webkit-mask-repeat:no-repeat;
  mask-repeat:no-repeat;
  -webkit-mask-position:center;
  mask-position:center;
}
.castle-interior-shell.room-mode .noble-room-decor-layer{z-index:5}

/* A home that currently contains a Noble should read as lit/occupied at a glance. */
.noble-estate img,.map-object.populated-building .object-visual{transition:filter .18s ease}
.noble-estate.occupied img{
  filter:brightness(1.28) saturate(1.1) drop-shadow(0 0 8px rgba(255,222,143,.72));
}
.map-object.populated-building.occupied-residence .object-visual{
  filter:brightness(1.3) saturate(1.12) drop-shadow(0 0 9px rgba(255,222,143,.78));
}
.noble-estate.occupied:hover img,.noble-estate.occupied.selected img,
.map-object.populated-building.occupied-residence:hover .object-visual,
.map-object.populated-building.occupied-residence.selected-residence .object-visual,
.map-object.populated-building.occupied-residence.interior-active-residence .object-visual{
  filter:brightness(1.4) saturate(1.14) drop-shadow(0 0 12px rgba(255,226,150,.92));
}

/* Strong, reliable recolouring for decoration artwork while retaining original shading. */
.noble-room-object img{filter:grayscale(1) brightness(1.06) contrast(1.02)}
.noble-room-object .room-object-tint{opacity:1;mix-blend-mode:color}

/* Room editor now mirrors the character creator: category rail, large cards and diamond colours. */
.noble-room-editor{
  width:min(560px,52vw);
  background:#172238;
  color:#eef5f8;
  border:4px solid #10192c;
  box-shadow:0 18px 52px rgba(0,0,0,.62);
}
.room-editor-head{background:#10192c;border-bottom:2px solid #159cab;padding:13px 16px}
.room-editor-head small{color:#72d9df;font-size:9px;letter-spacing:.13em}
.room-editor-head strong{font-size:24px}
.room-editor-scroll{padding:14px;gap:16px;background:#172238}
.room-editor-section{border-top:1px solid #3a5069;padding-top:14px}
.room-editor-section>b{color:#72d9df;font:900 11px/1 Inter,sans-serif;letter-spacing:.14em}

.room-colour-editor,.room-object-colour-editor{
  display:grid;
  grid-template-columns:minmax(0,1fr) 70px;
  gap:10px 14px;
  align-items:start;
  padding:13px 14px;
  background:#111b31;
  border:1px solid #31465f;
}
.room-colour-copy{display:flex;align-items:baseline;justify-content:space-between;gap:12px;grid-column:1}
.room-colour-copy span{font:900 9px Inter,sans-serif;letter-spacing:.13em;color:#bcd2e0}
.room-colour-copy output{font:800 9px Inter,sans-serif;color:#9fb6c8}
.room-colour-swatches{grid-column:1;display:grid;grid-template-columns:repeat(6,28px);gap:9px 10px;align-content:start}
.room-colour-swatches.compact{grid-template-columns:repeat(6,25px);gap:8px}
.room-colour-swatch{
  width:27px;height:27px;padding:0;border:3px solid transparent;background:transparent;
  transform:rotate(45deg);cursor:pointer;box-shadow:0 0 0 1px rgba(255,255,255,.1)
}
.room-colour-swatches.compact .room-colour-swatch{width:24px;height:24px}
.room-colour-swatch>span{display:block;width:100%;height:100%;background:var(--room-swatch)}
.room-colour-swatch:hover{border-color:#83e5ec}
.room-colour-swatch.active{border-color:#fff;box-shadow:0 0 0 2px #0e9da7}
.room-custom-colour-picker{
  --room-picker-colour:#ead4ad;
  grid-column:2;grid-row:1/3;position:relative;display:grid;justify-items:center;align-content:start;gap:7px;
  min-width:62px;padding-top:7px;color:#c7d9e6;cursor:pointer
}
.room-custom-colour-picker.compact{--room-picker-colour:#9b5c32}
.room-custom-colour-picker input{position:absolute;left:50%;top:2px;width:50px;height:50px;transform:translateX(-50%);opacity:0;cursor:pointer}
.room-custom-colour-diamond{
  width:34px;height:34px;display:grid;place-items:center;transform:rotate(45deg);
  background:var(--room-picker-colour);border:3px solid #fff;box-shadow:0 0 0 2px #0e9da7;
  color:#fff;font:900 18px/1 Inter,sans-serif;text-shadow:0 1px 3px #000
}
.room-custom-colour-picker b{margin-top:5px;font:900 8px Inter,sans-serif;letter-spacing:.08em;color:#c7d9e6}

.room-library-layout{display:grid;grid-template-columns:88px minmax(0,1fr);gap:10px;min-height:310px}
.room-library-tabs{
  display:flex;flex-direction:column;flex-wrap:nowrap;gap:6px;margin:0;padding:0;overflow:auto;max-height:390px
}
.room-library-tab{
  min-height:55px;border:1px solid #31465f;background:#203653;color:#c7d8e6;padding:5px 4px;
  display:grid;grid-template-columns:24px minmax(0,1fr) auto;align-items:center;gap:4px;
  font:900 8px/1 Inter,sans-serif;text-align:left;text-transform:uppercase;letter-spacing:.02em
}
.room-library-tab b{font-size:16px;text-align:center;line-height:1;color:#d8e7ef}
.room-library-tab span{overflow:hidden;text-overflow:ellipsis}
.room-library-tab small{font-size:8px;color:#8fa8ba;padding-right:2px}
.room-library-tab.active,.room-library-tab:hover{background:#169bb0;border-color:#76e1e7;color:#fff;box-shadow:inset 3px 0 #fff}
.room-library-tab.active small,.room-library-tab:hover small{color:#eaffff}
.room-object-library{
  display:grid;grid-template-columns:repeat(3,minmax(92px,1fr));gap:9px;
  align-content:start;max-height:390px;overflow:auto;padding:2px
}
.room-library-item{
  position:relative;min-width:0;min-height:0;aspect-ratio:.9;border:2px solid #344b67;border-radius:0;
  background:#2a3852;color:#f0f5f8;padding:0;overflow:hidden;display:grid;grid-template-rows:minmax(0,1fr) 38px;gap:0
}
.room-library-item:hover{border-color:#83e5ec;background:#2a3852;box-shadow:0 0 0 2px rgba(14,157,167,.55)}
.room-library-thumb{display:grid;place-items:center;min-height:76px;background:#2a3953;padding:8px}
.room-library-item img{width:100%;height:100%;max-height:92px;object-fit:contain}
.room-library-name{height:38px;display:flex;align-items:center;justify-content:center;padding:4px 6px;background:#1d2b43;border-top:1px solid #405873;color:#eef5f8;font:900 9px/1.15 Inter,sans-serif;text-align:center}
.room-library-item:hover .room-library-name{background:#243956}

.room-selection-controls{background:#172238;gap:11px}
.room-selection-controls[hidden]{display:none!important}
.room-selection-controls>label{grid-template-columns:72px 1fr auto;color:#d8e4eb;font:800 10px Inter,sans-serif}
.room-selection-controls input[type=range]{accent-color:#0fa9b1}
.room-selection-controls output{color:#bcd2e0}
.room-selection-controls .actions{margin-top:2px}
.room-editor-actions{background:#10192c;border-top:1px solid #31465f;padding:11px 14px}
.room-editor-actions span{color:#9fb6c8}.room-editor-actions span.dirty{color:#ff9a9a}

@media(max-width:920px){
  .noble-room-editor{width:min(500px,58vw)}
  .room-object-library{grid-template-columns:repeat(2,minmax(92px,1fr))}
  .room-colour-swatches{grid-template-columns:repeat(4,28px)}
  .room-colour-swatches.compact{grid-template-columns:repeat(4,25px)}
}
@media(max-width:760px){
  .noble-room-editor{left:8px;right:8px;bottom:8px;width:auto;max-height:68%}
  .room-library-layout{display:block;min-height:0}
  .room-library-tabs{flex-direction:row;max-height:none;overflow:auto;margin-bottom:9px;padding-bottom:2px}
  .room-library-tab{min-width:82px;grid-template-columns:22px 1fr;grid-template-rows:auto auto;text-align:center;min-height:52px}
  .room-library-tab b{grid-row:1/3}.room-library-tab small{display:none}
  .room-object-library{grid-template-columns:repeat(3,minmax(82px,1fr));max-height:320px}
  .room-colour-editor,.room-object-colour-editor{grid-template-columns:minmax(0,1fr) 62px;padding:11px}
  .room-colour-swatches{grid-template-columns:repeat(6,25px);gap:8px}
  .room-colour-swatch{width:24px;height:24px}
}
@media(max-width:480px){
  .room-object-library{grid-template-columns:repeat(2,minmax(92px,1fr))}
  .room-colour-swatches,.room-colour-swatches.compact{grid-template-columns:repeat(4,24px)}
}
/* v146 small desktop category-label refinement */
@media(min-width:761px){.room-library-layout{grid-template-columns:96px minmax(0,1fr)}.room-library-tab{font-size:7.5px}}


/* v147 — room presentation + editor hard-fix.
   Critical room rules are intentionally last so older room passes cannot darken or push the editor off-screen. */
.castle-interior-shell.room-mode .castle-interior-scene{
  background:#d7e4e8;
}
.castle-interior-shell.room-mode .castle-interior-scene:after{display:none!important}
.castle-interior-shell.room-mode .noble-room-window-layer{
  display:block!important;
  position:absolute!important;
  inset:0!important;
  z-index:1!important;
  overflow:hidden!important;
  pointer-events:none!important;
  background:#b9d5df!important;
}
.noble-room-window-backdrop{
  display:block!important;
  position:absolute!important;
  inset:0!important;
  width:100%!important;
  height:100%!important;
  object-fit:cover!important;
  object-position:center center!important;
  filter:brightness(1.08) saturate(1.06)!important;
}
.castle-interior-shell.room-mode .castle-interior-room{
  z-index:2!important;
  filter:brightness(1.08) saturate(1.03) contrast(.99)!important;
}
.castle-interior-shell.room-mode.noble-home-occupied .castle-interior-room{
  filter:brightness(1.16) saturate(1.05) contrast(.99)!important;
}
.castle-interior-shell.room-mode .noble-room-colour{
  z-index:3!important;
  opacity:.68!important;
  mix-blend-mode:color!important;
  -webkit-mask-image:url('assets/rooms/backgrounds/wall_tint_mask_v147.png')!important;
  mask-image:url('assets/rooms/backgrounds/wall_tint_mask_v147.png')!important;
  -webkit-mask-size:100% 100%!important;
  mask-size:100% 100%!important;
  -webkit-mask-repeat:no-repeat!important;
  mask-repeat:no-repeat!important;
}
.castle-interior-shell.room-mode .noble-room-decor-layer{z-index:5!important}

/* Private-room portrait: larger, grounded on the floor edge, with the status moved to the footer. */
.castle-interior-shell.room-mode .castle-interior-actors.private-room{
  z-index:6!important;
  padding:102px 3% 0!important;
  align-items:flex-end!important;
  justify-content:center!important;
}
.castle-interior-shell.room-mode .castle-interior-actors.private-room .castle-interior-actor{
  width:39%!important;
  max-width:420px!important;
  height:80%!important;
  align-self:flex-end!important;
}
.castle-interior-shell.room-mode .castle-interior-actors.private-room .castle-interior-actor img{
  width:100%!important;
  height:100%!important;
  object-fit:contain!important;
  object-position:center bottom!important;
}
.castle-interior-shell.room-mode .castle-interior-caption{display:none!important}
.castle-interior-room-status{min-width:0}
.castle-interior-room-status[hidden]{display:none!important}
.castle-interior-shell.room-mode .castle-interior-footer{
  grid-template-columns:minmax(140px,1fr) 82px minmax(180px,1.25fr) auto auto auto;
  gap:12px;
}
.castle-interior-room-status strong{
  white-space:normal!important;
  line-height:1.25!important;
  color:#f4df9a!important;
}

/* The room editor is viewport-fixed so it can never fall below the castle dialog. */
.noble-room-editor{
  position:fixed!important;
  top:12px!important;
  right:12px!important;
  bottom:12px!important;
  left:auto!important;
  width:min(560px,calc(100vw - 24px))!important;
  height:auto!important;
  max-height:calc(100dvh - 24px)!important;
  z-index:2147483000!important;
  display:flex!important;
  flex-direction:column!important;
  overflow:hidden!important;
  background:#172238!important;
  color:#eef5f8!important;
  border:4px solid #0b1425!important;
  box-shadow:0 22px 75px rgba(0,0,0,.78)!important;
}
.noble-room-editor[hidden]{display:none!important}
.room-editor-head{
  flex:0 0 auto!important;
  min-height:68px!important;
  padding:12px 16px!important;
  background:#10192c!important;
  border-bottom:2px solid #159cab!important;
}
.room-editor-scroll{
  flex:1 1 auto!important;
  min-height:0!important;
  overflow:auto!important;
  overscroll-behavior:contain!important;
  padding:14px!important;
  display:grid!important;
  align-content:start!important;
  gap:15px!important;
  background:#172238!important;
}
.room-editor-actions{
  flex:0 0 auto!important;
  min-height:58px!important;
  padding:10px 14px!important;
  background:#10192c!important;
  border-top:1px solid #31465f!important;
}
.room-library-section{min-width:0!important;overflow:hidden!important}
.room-library-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:9px}
.room-library-heading>b{font:900 11px/1 Inter,sans-serif;letter-spacing:.14em;color:#72d9df}
.room-library-heading>span{font:800 8px/1 Inter,sans-serif;letter-spacing:.08em;color:#93acbd;white-space:nowrap}
.room-library-layout{
  display:grid!important;
  grid-template-columns:104px minmax(0,1fr)!important;
  gap:10px!important;
  width:100%!important;
  min-height:340px!important;
  max-height:min(520px,52vh)!important;
  overflow:hidden!important;
}
.room-library-tabs{
  display:flex!important;
  flex-direction:column!important;
  flex-wrap:nowrap!important;
  gap:6px!important;
  min-width:0!important;
  max-height:none!important;
  margin:0!important;
  padding:0 2px 0 0!important;
  overflow:auto!important;
}
.room-library-tab{
  flex:0 0 auto!important;
  width:100%!important;
  min-width:0!important;
  min-height:50px!important;
  padding:5px 6px!important;
  border:1px solid #31465f!important;
  background:#203653!important;
  color:#c7d8e6!important;
  display:grid!important;
  grid-template-columns:24px minmax(0,1fr) 17px!important;
  grid-template-rows:1fr!important;
  align-items:center!important;
  gap:5px!important;
  text-align:left!important;
  font:900 8px/1.05 Inter,sans-serif!important;
  letter-spacing:.02em!important;
  text-transform:uppercase!important;
  cursor:pointer!important;
  overflow:hidden!important;
}
.room-library-tab b{grid-row:auto!important;font-size:16px!important;line-height:1!important;text-align:center!important}
.room-library-tab span{display:block!important;min-width:0!important;overflow:hidden!important;text-overflow:ellipsis!important;white-space:nowrap!important}
.room-library-tab small{display:block!important;font:800 8px/1 Inter,sans-serif!important;text-align:right!important;color:#8fa8ba!important}
.room-library-tab:hover,.room-library-tab.active{
  background:#169bb0!important;
  border-color:#76e1e7!important;
  color:#fff!important;
  box-shadow:inset 4px 0 #fff!important;
}
.room-object-library{
  min-width:0!important;
  width:100%!important;
  max-height:none!important;
  overflow:auto!important;
  padding:2px 4px 4px 2px!important;
  display:grid!important;
  grid-template-columns:repeat(3,minmax(0,1fr))!important;
  grid-auto-rows:max-content!important;
  align-content:start!important;
  gap:9px!important;
  background:transparent!important;
}
.room-library-item{
  appearance:none!important;
  position:relative!important;
  display:grid!important;
  grid-template-rows:96px 36px!important;
  width:100%!important;
  min-width:0!important;
  height:auto!important;
  min-height:132px!important;
  aspect-ratio:auto!important;
  padding:0!important;
  overflow:hidden!important;
  border:2px solid #344b67!important;
  border-radius:0!important;
  background:#2a3852!important;
  color:#f0f5f8!important;
  cursor:pointer!important;
}
.room-library-item[hidden]{display:none!important}
.room-library-thumb{
  display:grid!important;
  place-items:center!important;
  width:100%!important;
  height:96px!important;
  min-height:0!important;
  padding:7px!important;
  overflow:hidden!important;
  background:#2a3953!important;
}
.room-library-item img{
  display:block!important;
  width:100%!important;
  height:100%!important;
  max-width:100%!important;
  max-height:82px!important;
  object-fit:contain!important;
}
.room-library-name{
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  width:100%!important;
  height:36px!important;
  padding:4px 7px!important;
  background:#1d2b43!important;
  border-top:1px solid #405873!important;
  color:#eef5f8!important;
  font:900 9px/1.15 Inter,sans-serif!important;
  text-align:center!important;
}
.room-library-add{
  position:absolute!important;
  right:5px!important;
  top:5px!important;
  padding:3px 5px!important;
  background:#0b7e89e8!important;
  border:1px solid #6ed7dd!important;
  color:#fff!important;
  font:900 7px/1 Inter,sans-serif!important;
  letter-spacing:.06em!important;
  pointer-events:none!important;
}
.room-library-item:hover,.room-library-item:focus-visible{
  border-color:#83e5ec!important;
  background:#2a3852!important;
  box-shadow:0 0 0 2px rgba(14,157,167,.55)!important;
  outline:none!important;
}

/* Colour controls retain the Character Creator diamond interaction and stay clickable above the panel. */
.room-colour-editor,.room-object-colour-editor{
  width:100%!important;
  min-width:0!important;
  grid-template-columns:minmax(0,1fr) 72px!important;
}
.room-custom-colour-picker{position:relative!important;z-index:3!important}
.room-custom-colour-picker input{
  display:block!important;
  position:absolute!important;
  left:50%!important;
  top:0!important;
  width:52px!important;
  height:52px!important;
  transform:translateX(-50%)!important;
  opacity:.001!important;
  cursor:pointer!important;
  z-index:4!important;
}
.room-colour-swatches{max-width:100%!important}
.room-selection-controls{min-width:0!important}

@media(max-width:1080px){
  .castle-interior-shell.room-mode .castle-interior-footer{grid-template-columns:1fr 82px minmax(160px,1fr) auto auto}
  .castle-interior-shell.room-mode .castle-interior-footer #castleInteriorCentre{grid-column:1/-1}
  .castle-interior-shell.room-mode .castle-interior-actors.private-room .castle-interior-actor{width:42%!important;height:79%!important}
}
@media(max-width:760px){
  .castle-interior-shell.room-mode .castle-interior-actors.private-room{padding:92px 2% 0!important}
  .castle-interior-shell.room-mode .castle-interior-actors.private-room .castle-interior-actor{width:54%!important;height:76%!important}
  .castle-interior-shell.room-mode .castle-interior-footer{grid-template-columns:1fr 78px!important}
  .castle-interior-shell.room-mode .castle-interior-room-status{grid-column:1/-1!important}
  .noble-room-editor{top:6px!important;right:6px!important;bottom:6px!important;left:6px!important;width:auto!important;max-height:calc(100dvh - 12px)!important}
  .room-library-layout{grid-template-columns:1fr!important;grid-template-rows:auto minmax(0,1fr)!important;max-height:none!important;min-height:0!important}
  .room-library-tabs{flex-direction:row!important;overflow:auto!important;min-height:58px!important;padding:0 0 4px!important}
  .room-library-tab{width:auto!important;min-width:84px!important;min-height:52px!important;grid-template-columns:22px minmax(0,1fr)!important;grid-template-rows:auto auto!important;text-align:center!important}
  .room-library-tab b{grid-row:1/3!important}.room-library-tab small{display:none!important}
  .room-object-library{grid-template-columns:repeat(3,minmax(88px,1fr))!important;max-height:340px!important}
  .room-library-item{grid-template-rows:82px 34px!important;min-height:116px!important}
  .room-library-thumb{height:82px!important}.room-library-item img{max-height:70px!important}.room-library-name{height:34px!important;font-size:8px!important}
}
@media(max-width:480px){
  .room-object-library{grid-template-columns:repeat(2,minmax(92px,1fr))!important}
  .room-colour-swatches,.room-colour-swatches.compact{grid-template-columns:repeat(4,24px)!important}
}

/* v148 — banner swap + true decor recolouring + direct wall colour preview */
.castle-interior-shell.room-mode .noble-room-colour{
  background:var(--room-colour,#ead4ad)!important;
  opacity:.44!important;
  mix-blend-mode:normal!important;
  filter:saturate(1.14)!important;
}
.noble-room-object img{
  filter:none!important;
  image-rendering:auto;
}
.noble-room-object .room-object-tint{
  display:none!important;
}
.room-library-item[data-room-category="Banners"] .room-library-thumb{
  padding:5px 16px!important;
}
.room-library-item[data-room-category="Banners"] img{
  max-height:88px!important;
}

/* v149 — occupied-room life: wandering Noble + independently moving pets */
.castle-interior-shell.room-mode .castle-interior-actors.private-room .castle-interior-actor.room-wanderer{
  position:absolute!important;
  left:28%;
  bottom:0!important;
  align-self:auto!important;
  transform:translateX(-50%);
  transform-origin:50% 100%;
  animation:nobleRoomWalk var(--room-walk-duration,14s) ease-in-out var(--room-walk-delay,0s) infinite;
  will-change:left,transform;
}
.castle-interior-shell.room-mode .castle-interior-actors.private-room .castle-interior-actor.room-wanderer img{
  animation:nobleRoomFace var(--room-walk-duration,14s) linear var(--room-walk-delay,0s) infinite;
  transform-origin:50% 92%!important;
  will-change:transform;
}
@keyframes nobleRoomWalk{
  0%,4%{left:28%;transform:translateX(-50%) translateY(0)}
  13%{transform:translateX(-50%) translateY(-2px)}
  22%{transform:translateX(-50%) translateY(0)}
  34%{left:72%;transform:translateX(-50%) translateY(-2px)}
  44%,50%{left:72%;transform:translateX(-50%) translateY(0)}
  59%{transform:translateX(-50%) translateY(-2px)}
  69%{transform:translateX(-50%) translateY(0)}
  82%{left:28%;transform:translateX(-50%) translateY(-2px)}
  92%,100%{left:28%;transform:translateX(-50%) translateY(0)}
}
@keyframes nobleRoomFace{
  0%,1.5%{transform:scaleX(1)}
  2.5%{transform:scaleX(.16)}
  4%,44%{transform:scaleX(-1)}
  46%{transform:scaleX(-.16)}
  48%,100%{transform:scaleX(1)}
}

/* Ground pets wander across the floor instead of sitting in a fixed UI card. */
.noble-room-pet{
  right:auto!important;
  padding:0!important;
  background:transparent!important;
  border:0!important;
  box-shadow:none!important;
  pointer-events:none!important;
}
.noble-room-pet span{
  display:block;
  filter:drop-shadow(0 5px 4px rgba(0,0,0,.36));
  transform-origin:50% 80%;
}
.noble-room-pet b{
  margin-top:2px;
  padding:3px 6px;
  border:1px solid #8b744f;
  border-radius:5px;
  background:#f7e7c7e8;
  box-shadow:0 3px 7px #0005;
  white-space:nowrap;
}
.noble-room-pet.ground-pet{
  left:18%;
  bottom:5%!important;
  animation:roomPetGroundWalk var(--pet-wander-duration,12s) ease-in-out var(--pet-wander-delay,0s) infinite;
  will-change:left,transform;
}
.noble-room-pet.ground-pet span{
  font-size:42px!important;
  animation:roomPetGroundFace var(--pet-wander-duration,12s) linear var(--pet-wander-delay,0s) infinite;
}
@keyframes roomPetGroundWalk{
  0%,8%{left:18%;transform:translateX(-50%) translateY(0)}
  18%{transform:translateX(-50%) translateY(-4px)}
  38%{left:76%;transform:translateX(-50%) translateY(0)}
  48%,58%{left:76%;transform:translateX(-50%) translateY(0)}
  68%{transform:translateX(-50%) translateY(-4px)}
  88%{left:22%;transform:translateX(-50%) translateY(0)}
  96%,100%{left:22%;transform:translateX(-50%) translateY(0)}
}
@keyframes roomPetGroundFace{
  0%,6%{transform:scaleX(1)}
  7%{transform:scaleX(.18)}
  9%,48%{transform:scaleX(-1)}
  51%{transform:scaleX(-.18)}
  53%,100%{transform:scaleX(1)}
}

/* Falcons/eagles live in the air: long arcs across the top half of the room. */
.noble-room-pet.flying-pet{
  left:14%;
  top:26%;
  bottom:auto!important;
  animation:roomPetFly var(--pet-wander-duration,11s) cubic-bezier(.45,.05,.55,.95) var(--pet-wander-delay,0s) infinite;
  will-change:left,top,transform;
}
.noble-room-pet.flying-pet span{
  font-size:48px!important;
  animation:roomPetWing .72s ease-in-out infinite alternate;
}
.noble-room-pet.flying-pet b{background:#eef7f7e8;border-color:#6a848e}
@keyframes roomPetFly{
  0%{left:14%;top:31%;transform:translate(-50%,-50%) rotate(-5deg)}
  18%{left:38%;top:17%;transform:translate(-50%,-50%) rotate(4deg)}
  38%{left:76%;top:24%;transform:translate(-50%,-50%) rotate(7deg)}
  52%{left:82%;top:36%;transform:translate(-50%,-50%) rotate(-3deg)}
  70%{left:54%;top:20%;transform:translate(-50%,-50%) rotate(-6deg)}
  86%{left:26%;top:25%;transform:translate(-50%,-50%) rotate(3deg)}
  100%{left:14%;top:31%;transform:translate(-50%,-50%) rotate(-5deg)}
}
@keyframes roomPetWing{
  from{transform:translateY(-2px) rotate(-5deg) scale(1)}
  to{transform:translateY(3px) rotate(5deg) scale(1.07)}
}

/* Editing is easier when the residents stop roaming. */
.castle-interior-shell.room-editing .room-wanderer,
.castle-interior-shell.room-editing .room-wanderer img,
.castle-interior-shell.room-editing .noble-room-pet,
.castle-interior-shell.room-editing .noble-room-pet span{
  animation-play-state:paused!important;
}
@media(prefers-reduced-motion:reduce){
  .room-wanderer,.room-wanderer img,.noble-room-pet,.noble-room-pet span{animation:none!important}
  .castle-interior-shell.room-mode .castle-interior-actors.private-room .castle-interior-actor.room-wanderer{left:50%!important;transform:translateX(-50%)!important}
  .noble-room-pet.ground-pet{left:78%!important;transform:translateX(-50%)!important}
}

/* v150 — source-colour mapping, stable room rendering, random resident movement */
.noble-room-wall-canvas{display:none;position:absolute;inset:0;width:100%;height:100%;z-index:3;pointer-events:none;object-fit:fill}
.castle-interior-shell.room-mode .noble-room-wall-canvas:not([hidden]){display:block!important}
.castle-interior-shell.room-mode .noble-room-colour{display:none!important}
.castle-interior-shell.room-mode .noble-room-decor-layer{z-index:5!important}
.noble-room-object img,.noble-room-object canvas.room-object-canvas{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;pointer-events:none;filter:none!important}
.noble-room-object canvas.room-object-canvas[hidden]{display:none!important}
.noble-room-object img[hidden]{display:none!important}

/* Character Creator-style source -> replacement colour editor. */
.room-colour-mapper{display:grid;gap:11px;padding:13px 14px;background:#111b31;border:1px solid #31465f;min-width:0}
.room-colour-map-title{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.room-colour-map-title>div{min-width:0}.room-colour-map-title span{display:block;font:900 10px/1 Inter,sans-serif;letter-spacing:.13em;color:#e9eef4}.room-colour-map-title small{display:block;margin-top:5px;max-width:320px;color:#93acbd;font:700 8px/1.35 Inter,sans-serif}
.room-colour-reset{flex:none;border:1px solid #4c637d;background:#1b2940;color:#b9ccda;padding:6px 8px;font:900 7px/1 Inter,sans-serif;letter-spacing:.06em;cursor:pointer}.room-colour-reset:hover{border-color:#80dfe5;color:#fff;background:#233c59}
.room-source-list{display:flex;flex-wrap:wrap;gap:9px;padding:4px 2px 8px;border-bottom:1px solid #2e425a}.room-source-list.compact{gap:8px}.room-colour-loading{color:#91aabd;font:800 8px Inter,sans-serif}
.room-source-colour{--room-source:#777;--room-target:var(--room-source);appearance:none;position:relative;width:68px;height:44px;padding:0 4px;border:1px solid transparent;background:transparent;color:#8fa7b8;display:grid;grid-template-columns:24px 10px 24px;align-items:center;justify-content:center;gap:1px;cursor:pointer}
.room-source-colour span{display:block;width:22px;height:22px;transform:rotate(45deg);border:2px solid #e7edf0;box-shadow:0 0 0 1px #091221}.room-source-colour .room-source-original{background:var(--room-source)}.room-source-colour .room-source-target{background:var(--room-target)}.room-source-colour i{font:900 12px/1 Inter,sans-serif;font-style:normal;color:#7392a7}.room-source-colour b{position:absolute;left:50%;bottom:-7px;transform:translateX(-50%);min-width:16px;padding:1px 3px;border-radius:9px;background:#1d3048;color:#90a9ba;font:900 7px/1 Inter,sans-serif}
.room-source-colour:hover,.room-source-colour.active{border-color:#5fd4dc;background:#1b3048}.room-source-colour.active{box-shadow:inset 0 -3px #64e0e6}.room-source-colour.changed .room-source-target{box-shadow:0 0 0 2px #0da3ad,0 0 0 3px #fff}.room-source-colour.changed b{background:#0b808a;color:#fff}
.room-colour-target{display:grid;grid-template-columns:minmax(0,1fr) 72px;gap:10px 14px;align-items:start}.room-colour-target .room-colour-copy{grid-column:1}.room-colour-target .room-colour-swatches{grid-column:1}.room-colour-target .room-custom-colour-picker{grid-column:2;grid-row:1/3}
.room-colour-mapper.compact .room-colour-target{grid-template-columns:minmax(0,1fr) 68px}.room-colour-mapper.compact .room-source-colour{width:64px;height:42px;grid-template-columns:22px 9px 22px}.room-colour-mapper.compact .room-source-colour span{width:20px;height:20px}

/* Slightly smaller room Noble, still grounded on the floor. */
.castle-interior-shell.room-mode .castle-interior-actors.private-room .castle-interior-actor{width:34%!important;max-width:370px!important;height:72%!important}
.castle-interior-shell.room-mode .castle-interior-actors.private-room .castle-interior-actor.room-random-wanderer{position:absolute!important;left:50%;bottom:0!important;align-self:auto!important;transform:translateX(-50%);transform-origin:50% 100%;animation:none!important;will-change:left,transform}
.castle-interior-shell.room-mode .castle-interior-actors.private-room .castle-interior-actor.room-random-wanderer img{animation:none!important;transform-origin:50% 92%!important;will-change:transform}

/* Home meetings: both Nobles appear in the host's room. */
.castle-interior-shell.room-mode .castle-interior-actors.private-room.room-meeting{justify-content:center!important;gap:15%!important;padding-left:7%!important;padding-right:7%!important}
.castle-interior-shell.room-mode .castle-interior-actors.private-room.room-meeting .castle-interior-actor{position:relative!important;width:29%!important;max-width:315px!important;height:67%!important;left:auto!important;bottom:auto!important;transform:none!important}

/* Pets use JS-random paths in v150, so disable the old fixed loops. */
.noble-room-pet.ground-pet,.noble-room-pet.flying-pet{animation:none!important}
.noble-room-pet.ground-pet span{animation:none!important}
.noble-room-pet.flying-pet span{animation:roomPetWing .62s ease-in-out infinite alternate!important}
.castle-interior-shell.room-editing .noble-room-pet.flying-pet span{animation-play-state:paused!important}

@media(max-width:1080px){.castle-interior-shell.room-mode .castle-interior-actors.private-room .castle-interior-actor{width:38%!important;height:70%!important}.castle-interior-shell.room-mode .castle-interior-actors.private-room.room-meeting .castle-interior-actor{width:31%!important;height:63%!important}}
@media(max-width:760px){.castle-interior-shell.room-mode .castle-interior-actors.private-room .castle-interior-actor{width:47%!important;height:67%!important}.castle-interior-shell.room-mode .castle-interior-actors.private-room.room-meeting{gap:5%!important}.castle-interior-shell.room-mode .castle-interior-actors.private-room.room-meeting .castle-interior-actor{width:42%!important;height:59%!important}.room-colour-map-title{align-items:center}.room-colour-map-title small{max-width:240px}.room-source-list{flex-wrap:nowrap;overflow-x:auto;padding-bottom:10px}.room-colour-target{grid-template-columns:minmax(0,1fr) 64px}}
.room-colour-mapper .room-custom-colour-picker{grid-template-columns:1fr!important;justify-items:center!important;min-width:0!important}
.room-colour-mapper .room-custom-colour-picker b{grid-column:1!important;white-space:nowrap!important;text-align:center!important;max-width:66px!important}

/* v151 — grouped source palettes + torch/fire ambience */
.room-source-list.compact{min-height:50px}
.room-colour-map-title small{max-width:360px}

.noble-room-object[data-room-asset="fireplace"],
.noble-room-object[data-room-asset="wall_torch"]{overflow:visible}
.noble-room-object[data-room-asset="fireplace"]::before,
.noble-room-object[data-room-asset="wall_torch"]::before,
.noble-room-object[data-room-asset="fireplace"]::after,
.noble-room-object[data-room-asset="wall_torch"]::after{content:"";position:absolute;pointer-events:none;z-index:6;mix-blend-mode:screen}

.noble-room-object[data-room-asset="fireplace"]::before{
  left:35%; top:46%; width:30%; height:20%;
  background:radial-gradient(circle at 50% 65%, rgba(255,244,184,.95) 0 18%, rgba(255,186,59,.88) 19% 42%, rgba(255,111,20,.65) 43% 72%, rgba(255,111,20,0) 73% 100%);
  clip-path:polygon(48% 0, 64% 24%, 77% 54%, 66% 100%, 50% 82%, 35% 100%, 23% 55%, 31% 24%);
  filter:blur(.4px);
  transform-origin:50% 100%;
  animation:roomFireFlicker .9s ease-in-out infinite alternate;
}
.noble-room-object[data-room-asset="fireplace"]::after{
  left:24%; top:47%; width:52%; height:24%;
  background:radial-gradient(circle, rgba(255,170,52,.42) 0, rgba(255,120,24,.28) 36%, rgba(255,120,24,0) 72%);
  filter:blur(8px);
  animation:roomFireGlow 1.2s ease-in-out infinite alternate;
}
.noble-room-object[data-room-asset="wall_torch"]::before{
  left:46%; top:15%; width:24%; height:19%;
  background:radial-gradient(circle at 50% 68%, rgba(255,247,203,.95) 0 17%, rgba(255,196,69,.9) 18% 45%, rgba(255,117,23,.7) 46% 76%, rgba(255,117,23,0) 77% 100%);
  clip-path:polygon(50% 0, 72% 28%, 78% 53%, 64% 100%, 50% 83%, 34% 100%, 23% 55%, 30% 27%);
  transform-origin:50% 100%;
  animation:roomTorchFlicker .72s ease-in-out infinite alternate;
}
.noble-room-object[data-room-asset="wall_torch"]::after{
  left:30%; top:8%; width:56%; height:34%;
  background:radial-gradient(circle, rgba(255,178,74,.34) 0, rgba(255,138,29,.22) 40%, rgba(255,138,29,0) 74%);
  filter:blur(10px);
  animation:roomFireGlow 1s ease-in-out infinite alternate;
}
.castle-interior-shell.room-editing .noble-room-object[data-room-asset="fireplace"]::before,
.castle-interior-shell.room-editing .noble-room-object[data-room-asset="wall_torch"]::before,
.castle-interior-shell.room-editing .noble-room-object[data-room-asset="fireplace"]::after,
.castle-interior-shell.room-editing .noble-room-object[data-room-asset="wall_torch"]::after{animation-play-state:paused}

@keyframes roomFireFlicker{
  0%{transform:scale(.94,1.02) rotate(-2deg)}
  35%{transform:scale(1.03,.96) rotate(1deg)}
  70%{transform:scale(.97,1.08) rotate(-1deg)}
  100%{transform:scale(1.06,.92) rotate(2deg)}
}
@keyframes roomTorchFlicker{
  0%{transform:translateY(1px) scale(.92,1.03) rotate(-4deg)}
  100%{transform:translateY(-1px) scale(1.05,.94) rotate(4deg)}
}
@keyframes roomFireGlow{
  0%{opacity:.55;transform:scale(.92)}
  100%{opacity:.92;transform:scale(1.08)}
}

/* v153 — native-resolution room recolours. Never render recoloured furniture pixelated. */
.noble-room-object img,
.noble-room-object canvas.room-object-canvas{
  image-rendering:auto!important;
  -ms-interpolation-mode:bicubic;
}
.noble-room-wall-canvas{image-rendering:auto!important}

/* v154 — horizontal room-object flipping */
.noble-room-object img,.noble-room-object canvas.room-object-canvas{transform:scaleX(var(--flip-x,1));transform-origin:center}
.room-selection-controls #nobleRoomObjectFlip.active{background:#0f8793;color:#fff;border-color:#7ce5eb}

/* v154 — care interaction mini-scene */
.noble-care-shell{position:relative;overflow:hidden}
.care-interaction-stage{position:absolute;inset:0;z-index:80;background:radial-gradient(circle at 50% 38%,#57606b 0,#283445 48%,#101827 100%);overflow:hidden;cursor:crosshair}
.care-interaction-stage[hidden]{display:none!important}.care-interaction-close{position:absolute;right:14px;top:12px;z-index:8;width:40px;height:40px;border:2px solid #dbc68d;background:#14243b;color:#fff;font-size:28px;cursor:pointer}.care-interaction-copy{position:absolute;left:50%;top:18px;transform:translateX(-50%);z-index:6;max-width:70%;padding:8px 12px;background:#0f1c30e8;border:1px solid #7895aa;color:#eef8ff;font:800 10px Inter,sans-serif;text-align:center}.care-interaction-floor{position:absolute;left:0;right:0;bottom:0;height:23%;background:repeating-linear-gradient(90deg,#533b2c 0 110px,#654836 111px 114px);border-top:5px solid #37271e}.care-interaction-noble{position:absolute;left:50%;bottom:14%;width:min(330px,42%);height:65%;transform:translateX(-50%);transform-origin:50% 100%;z-index:3}.care-interaction-noble img{width:100%;height:100%;object-fit:contain;object-position:center bottom}.care-thrown-item{position:absolute;z-index:7;width:58px;height:58px;border:0;background:transparent;font-size:42px;line-height:1;filter:drop-shadow(0 4px 5px #0008);cursor:grab}.care-sad-mouth{display:none;position:absolute;left:50%;top:26%;transform:translateX(-50%);z-index:6;color:#461d25;font:bold 34px/1 serif;text-shadow:0 1px #fff}.care-interaction-noble.sad .care-sad-mouth{display:block;animation:careSadMouth .45s ease-in-out 2}.care-interaction-noble.sad img{animation:careSadBob .5s ease-in-out 2}.care-interaction-noble.eating img{animation:careEatBob .13s ease-in-out 5 alternate}.care-crumbs{position:absolute;left:50%;top:34%;width:1px;height:1px;z-index:7}.care-crumbs i{position:absolute;width:7px;height:7px;border-radius:50%;background:#d9ae61;animation:careCrumb .65s ease-out forwards;animation-delay:calc(var(--i)*.025s)}
@keyframes careSadMouth{50%{transform:translateX(-50%) scale(1.2)}}@keyframes careSadBob{50%{transform:translateY(7px) rotate(-1deg)}}@keyframes careEatBob{to{transform:translateY(-5px) scale(1.015)}}@keyframes careCrumb{to{transform:translate(var(--dx),var(--dy)) rotate(180deg);opacity:0}}
.care-pet-list{display:grid;gap:8px;margin-bottom:12px}.care-pet-owned{grid-template-columns:38px minmax(0,1fr) auto auto auto!important}.care-pet-name-input{width:100%;margin-top:5px;border:1px solid #baa274;background:#fffaf0;padding:4px 6px;font:700 9px Inter,sans-serif}.care-pet-adopt-title{margin:12px 0 6px;font:900 9px Cinzel,serif;color:#70465a;letter-spacing:.08em}

/* v154 — world events and conversation staging */
.living-world-event .court-crown{background:#162f3a;border-color:#76d7d7;color:#fff;font-size:38px}.living-world-event .court-name{border-color:#76d7d7}.living-world-event:hover,.living-world-event:focus-visible{filter:drop-shadow(0 10px 13px #000c) drop-shadow(0 0 15px #76d7d7)}
/* Any active speaker moves, not just the two edge portraits. */
.social-scene-actors .castle-interior-actor.talking img{animation:sceneTalkAny .34s ease-in-out infinite alternate!important;transform-origin:50% 95%}
@keyframes sceneTalkAny{from{transform:translateY(0) rotate(-1deg)}to{transform:translateY(-7px) rotate(1.5deg)}}
/* Group bubbles sit above the speaker's head/name rather than over the nameplate. */
.social-scene-actors.count-3 .castle-actor-chat,.social-scene-actors.count-4 .castle-actor-chat,.social-scene-actors.count-5 .castle-actor-chat,.social-scene-actors.count-6 .castle-actor-chat{top:12%!important;transform:translate(-50%,-100%)!important;max-width:min(210px,20vw)!important}
.social-scene-actors.count-3 .castle-actor-name,.social-scene-actors.count-4 .castle-actor-name,.social-scene-actors.count-5 .castle-actor-name,.social-scene-actors.count-6 .castle-actor-name{top:4%!important}
/* Court: monarch stands higher, centered before the throne; delegates occupy the floor. */
.scene-kind-court .social-scene-actors{padding:47% 4% 0!important;justify-content:space-evenly!important;position:absolute!important}
.scene-kind-court .social-scene-actors .scene-monarch{position:absolute!important;left:50%!important;top:17%!important;bottom:auto!important;width:23%!important;max-width:300px!important;height:48%!important;transform:translateX(-50%)!important;z-index:7!important}
.scene-kind-court .social-scene-actors .scene-monarch .castle-actor-name{top:1%!important}.scene-kind-court .social-scene-actors .scene-monarch .castle-actor-chat{top:22%!important;left:80%!important;right:auto!important;transform:none!important}
.scene-kind-world-event.world-crimson-vigil .scene-vigil-costume img{filter:sepia(.2) saturate(.85) hue-rotate(300deg) brightness(.82) contrast(1.12);border-radius:45% 45% 16% 16%}
.scene-kind-world-event.world-crimson-vigil .scene-vigil-costume:after{content:'🎭';position:absolute;left:50%;top:23%;transform:translateX(-50%);font-size:24px;z-index:8;filter:drop-shadow(0 2px 2px #000)}
@media(max-width:760px){.scene-kind-court .social-scene-actors .scene-monarch{width:31%!important;height:42%!important;top:22%!important}.social-scene-actors.count-3 .castle-actor-chat,.social-scene-actors.count-4 .castle-actor-chat,.social-scene-actors.count-5 .castle-actor-chat,.social-scene-actors.count-6 .castle-actor-chat{top:18%!important}}

/* v154 — personal family members moved into an owned property */
.castle-interior-shell.room-mode .castle-interior-actors.private-room .castle-interior-actor.family-roommate{position:absolute!important;width:22%!important;max-width:230px!important;height:50%!important;bottom:0!important;z-index:5!important}.family-roommate-1{left:12%!important}.family-roommate-2{right:10%!important}.family-roommate-3{left:28%!important}.family-roommate-4{right:27%!important}.castle-interior-actors.private-room .family-roommate .castle-actor-name{font-size:8px!important}

/* v155 — care interactions happen inside the Noble's room */
.care-interaction-stage{background:#0d1725!important}
.care-interaction-room{position:absolute;inset:0;z-index:0;overflow:hidden;background:#b8d0da;pointer-events:none}
.care-interaction-window,.care-interaction-room-art,.care-interaction-wall,.care-interaction-decor{position:absolute;inset:0;width:100%;height:100%}
.care-interaction-window{object-fit:cover;object-position:center;z-index:0;filter:brightness(1.08) saturate(1.04)}
.care-interaction-room-art{object-fit:fill;z-index:1;filter:brightness(1.12) saturate(1.03)}
.care-interaction-wall{z-index:2;background:var(--care-room-colour,#ead4ad);opacity:.62;mix-blend-mode:color;-webkit-mask-image:url('assets/rooms/backgrounds/wall_tint_mask_v147.png');mask-image:url('assets/rooms/backgrounds/wall_tint_mask_v147.png');-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}
.care-interaction-decor{z-index:3}.care-interaction-decor .noble-room-object{pointer-events:none!important}.care-interaction-copy,.care-interaction-close,.care-thrown-item,.care-interaction-noble{z-index:8!important}
.care-interaction-noble{bottom:5%!important;height:67%!important}.care-sad-mouth{top:25%!important}

/* v155 — pet card: keep text and controls in their own rows instead of overlapping. */
.care-pet-owned{display:grid!important;grid-template-columns:46px minmax(0,1fr)!important;grid-template-areas:"icon copy" "buttons buttons"!important;gap:8px 10px!important;align-items:center!important;padding:10px!important;overflow:hidden}
.care-pet-icon{grid-area:icon;font-size:34px!important;line-height:1;text-align:center}.care-pet-copy{grid-area:copy;min-width:0}.care-pet-copy b,.care-pet-copy small{white-space:normal;overflow-wrap:anywhere}.care-pet-buttons{grid-area:buttons;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.care-pet-buttons .btn{min-width:0;padding:7px 5px;font-size:8px}.care-pet-name-input{box-sizing:border-box;max-width:100%}
@media(max-width:640px){.care-pet-buttons{grid-template-columns:1fr}.care-interaction-noble{width:48%!important}}

/* v156 — move family into an owned player home */
.room-family-dialog{width:min(980px,94vw);max-width:none;padding:0;border:0;background:transparent;color:#edf4f7}.room-family-dialog::backdrop{background:#07101bd9;backdrop-filter:blur(4px)}.room-family-shell{position:relative;background:#15223a;border:4px solid #0b1425;box-shadow:0 24px 80px #000c;max-height:88vh;display:flex;flex-direction:column}.room-family-close{position:absolute;right:12px;top:10px;z-index:2;border:0;background:transparent;color:#fff;font-size:30px;cursor:pointer}.room-family-head{padding:18px 60px 15px 20px;border-bottom:2px solid #159cab}.room-family-head small{font:900 9px Inter,sans-serif;letter-spacing:.14em;color:#70dbe1}.room-family-head h2{margin:5px 0;font:900 25px Cinzel,serif}.room-family-head p{margin:0;color:#9cb3c4;font:700 9px/1.4 Inter,sans-serif}.room-family-tabs{display:flex;gap:5px;padding:10px 14px;background:#101a2c}.room-family-tabs button{border:1px solid #3c536e;background:#203550;color:#bdd0dd;padding:9px 13px;font:900 9px Inter,sans-serif;cursor:pointer}.room-family-tabs button.active{background:#169bae;border-color:#74e0e6;color:#fff}.room-family-grid{padding:14px;overflow:auto;display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px;min-height:260px}.room-family-card{appearance:none;position:relative;display:grid;grid-template-rows:116px auto auto auto;gap:4px;min-width:0;padding:7px;border:2px solid #334b67;background:#23344f;color:#eef5f8;cursor:pointer;text-align:center}.room-family-card:hover{border-color:#78e2e7}.room-family-card.living{border-color:#d8b35c;box-shadow:inset 0 0 0 2px #80672f}.room-family-portrait{display:grid;place-items:center;background:#0e182a;overflow:hidden}.room-family-portrait img{width:100%;height:100%;object-fit:cover;object-position:50% 12%}.room-family-portrait b{font:900 32px Cinzel,serif}.room-family-card strong{font:900 10px Cinzel,serif;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.room-family-card small{font:800 8px Inter,sans-serif;color:#9fb4c4;text-transform:uppercase}.room-family-card em{font:900 8px Inter,sans-serif;font-style:normal;color:#67dce2}.room-family-card.living em{color:#e9c66e}.room-family-empty{grid-column:1/-1;padding:40px;text-align:center;border:1px dashed #405873;color:#8fa6b7;font:800 10px Inter,sans-serif}.room-family-foot{padding:12px 14px;background:#101a2c;border-top:1px solid #30445d;display:flex;justify-content:flex-end}.room-family-foot a{text-decoration:none}

/* v159 — household family residents have their own rooms and residency slots. */
.settlement-resident.family-resident-card span{border-style:dashed}
.settlement-resident.family-resident-card small{color:#9ce5d8}
.family-sidebar-resident small{color:#3e8078!important}
.castle-interior-actors.family-private-room .family-household-actor,
.castle-interior-actors.private-room .family-room-visitor{width:30%!important;max-width:325px!important;height:66%!important}
.castle-interior-actors.private-room .family-room-visitor{position:relative!important;left:auto!important;bottom:auto!important;transform:none!important}
.castle-actor-chat.family-hello{top:4%!important;bottom:auto!important;left:50%!important;transform:translateX(-50%)!important;max-width:170px!important;z-index:20!important}
@media(max-width:760px){.castle-interior-actors.family-private-room .family-household-actor,.castle-interior-actors.private-room .family-room-visitor{width:40%!important;height:58%!important}}


/* v161 — household room editing + greeting scene polish */
.castle-interior-actors.room-meeting .castle-interior-actor,
.castle-interior-actors.family-private-room .castle-interior-actor{width:34%!important;max-width:360px!important;height:68%!important;bottom:1.5%!important;position:absolute!important;transform:none!important}
.castle-interior-actors .household-greeting-left{left:31%!important;right:auto!important}
.castle-interior-actors .household-greeting-right{left:69%!important;right:auto!important}
.castle-interior-actors .household-greeting-left,
.castle-interior-actors .household-greeting-right{top:auto!important;animation:none!important}
.castle-actor-chat.family-hello{appearance:none;border:1px solid #101722;background:#fff;color:#111;cursor:pointer;font:800 10px/1.2 Inter,sans-serif;padding:8px 11px;box-shadow:0 2px 0 #101722;white-space:normal}
.castle-actor-chat.family-hello:hover{filter:brightness(.96)}
@media(max-width:760px){.castle-interior-actors.room-meeting .castle-interior-actor,.castle-interior-actors.family-private-room .castle-interior-actor{width:42%!important;height:60%!important}.castle-interior-actors .household-greeting-left{left:27%!important}.castle-interior-actors .household-greeting-right{left:73%!important}}

/* v194 auction landmarks */
.noble-estate.auction-estate{z-index:16;}
.noble-estate.auction-estate img{width:70px;height:70px;object-fit:contain;padding:10px;border-radius:18px;background:linear-gradient(180deg,#1a2440,#0d1426);border:2px solid rgba(244,207,98,.72);box-shadow:0 10px 22px rgba(0,0,0,.38);}
.noble-estate.auction-estate .estate-label{max-width:220px;border-color:rgba(244,207,98,.35);background:rgba(7,13,26,.9);}
.noble-estate.auction-estate:hover img,.noble-estate.auction-estate:focus-visible img{transform:translateY(-2px) scale(1.04);border-color:#f4cf62;}
.living-person-head img.auction-owner-portrait{object-fit:cover;background:#0f1730;}

/* v197 auction markers behave like normal map buildings */
.noble-estate.auction-estate{z-index:15;background:transparent!important;border:0!important;box-shadow:none!important;padding:0!important;overflow:visible!important;}
.noble-estate.auction-estate>img{width:86px!important;height:86px!important;object-fit:contain!important;padding:0!important;margin:0!important;border:0!important;border-radius:0!important;background:transparent!important;box-shadow:none!important;filter:drop-shadow(0 5px 3px rgba(0,0,0,.34));transform:none;}
.noble-estate.auction-estate:hover>img,.noble-estate.auction-estate:focus-visible>img{transform:translateY(-2px) scale(1.04)!important;border:0!important;box-shadow:none!important;}
.stage.object-mode .noble-estate.auction-estate{cursor:grab;}
.stage.object-mode .noble-estate.auction-estate.object-moving{cursor:grabbing;outline:3px dashed #f4cf62;outline-offset:8px;border-radius:8px;}
.noble-estate.auction-estate .estate-label{margin-top:2px;max-width:230px;}
.auction-map-edit-note{display:block;flex-basis:100%;padding:8px 10px;border:1px solid #b8a06f;background:#fff8e8;color:#5b4e45;font:700 9px/1.4 Inter,sans-serif;}

/* v198 — public building visits, stable conversation facing, event entry fixes */
.social-scene-actors .actor-left img{transform:scaleX(-1)}
.social-scene-actors .actor-right img{transform:scaleX(1)}
.social-scene-actors .actor-left.talking img{animation:sceneTalkFacingLeft .34s ease-in-out infinite alternate!important;transform-origin:50% 95%!important}
.social-scene-actors .actor-right.talking img{animation:sceneTalkFacingRight .34s ease-in-out infinite alternate!important;transform-origin:50% 95%!important}
@keyframes sceneTalkFacingLeft{from{transform:scaleX(-1) translateY(0) rotate(-1deg)}to{transform:scaleX(-1) translateY(-7px) rotate(1.5deg)}}
@keyframes sceneTalkFacingRight{from{transform:scaleX(1) translateY(0) rotate(-1deg)}to{transform:scaleX(1) translateY(-7px) rotate(1.5deg)}}
.castle-interior-actors .actor-centre{margin-inline:auto}
.castle-interior-actors .actor-centre img{transform:none!important}
.auction-building-empty{align-self:center;margin:auto;max-width:330px;padding:16px 18px;background:#fff8e9dd;border:2px solid #c8b58d;color:#292127;font:800 13px/1.4 Inter,sans-serif;text-align:center;box-shadow:0 10px 24px #0005}
.living-world-event{z-index:26!important}

/* v200 — settlement region review, editor override, controlled-home highlight */
.building-region-editor{margin:12px 0;padding:10px;border:1px solid #c8b58d;background:#f4ead4;display:grid;gap:8px}
.building-region-editor label{display:grid;gap:3px;color:#5c3a4e}.building-region-editor label b{font:900 10px Cinzel,serif;letter-spacing:.08em}.building-region-editor label small{font:700 8px/1.35 Inter,sans-serif;color:#76665e}.building-region-editor>div{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:7px}.building-region-editor select{min-width:0;height:36px;border:1px solid #9d8965;background:#fffaf0;padding:0 8px;color:#2e252b;font:800 10px Inter,sans-serif}
.noble-estate.your-home-marker{filter:drop-shadow(0 0 4px #fff0bc) drop-shadow(0 0 13px #d8a73f) drop-shadow(0 7px 9px #000b)!important}
.noble-estate.your-home-marker:before{content:'YOUR HOME';position:absolute;left:50%;top:-30px;transform:translateX(-50%);z-index:7;padding:4px 7px;background:#d5a945;color:#241d28;border:2px solid #fff0bc;font:900 9px Inter,sans-serif;letter-spacing:.09em;white-space:nowrap;pointer-events:none}
.map-object.your-home-marker .object-visual{filter:drop-shadow(0 0 4px #fff0bc) drop-shadow(0 0 13px #d8a73f) drop-shadow(0 7px 8px #0009)!important}
.map-object.your-home-marker:after{content:'YOUR HOME';position:absolute;left:50%;top:-31px;transform:translateX(-50%) scaleX(calc(1 / var(--flip,1)));z-index:8;padding:4px 7px;background:#d5a945;color:#241d28;border:2px solid #fff0bc;font:900 9px Inter,sans-serif;letter-spacing:.09em;white-space:nowrap;pointer-events:none}
.map-object.your-home-marker .object-home-tag{opacity:1!important;border-color:#d8a73f!important}
@media(max-width:600px){.building-region-editor>div{grid-template-columns:1fr}.building-region-editor .btn{width:100%}}


/* v201 — Twitch role speech bubbles + map-only fullscreen */
.noble-chat-bubble,.living-camp .camp-chat-bubble{--chat-role-colour:#8b9098;border-color:var(--chat-role-colour);box-shadow:0 8px 20px #0008,0 0 0 2px color-mix(in srgb,var(--chat-role-colour) 28%,transparent)}
.noble-chat-bubble:before,.living-camp .camp-chat-bubble:before{border-color:transparent transparent var(--chat-role-colour)}
.noble-chat-bubble.twitch-role-streamer,.camp-chat-bubble.twitch-role-streamer{--chat-role-colour:#d4a72c}
.noble-chat-bubble.twitch-role-mod,.camp-chat-bubble.twitch-role-mod{--chat-role-colour:#3ba55d}
.noble-chat-bubble.twitch-role-vip,.camp-chat-bubble.twitch-role-vip{--chat-role-colour:#3b82f6}
.noble-chat-bubble.twitch-role-sub,.camp-chat-bubble.twitch-role-sub{--chat-role-colour:#e879b9}
.noble-chat-bubble.twitch-role-everyone,.camp-chat-bubble.twitch-role-everyone{--chat-role-colour:#8b9098}
.map-fullscreen-btn{position:absolute;right:16px;top:16px;z-index:80;border:2px solid #d7c08e;background:#111827e8;color:#fff7df;padding:10px 12px;font:900 11px Inter,sans-serif;letter-spacing:.04em;box-shadow:0 5px 16px #0008;border-radius:5px;cursor:pointer}
.map-fullscreen-btn:hover{background:#0e5e68}
.map-viewport:fullscreen,.map-viewport.map-pseudo-fullscreen{width:100vw!important;height:100vh!important;max-height:none!important;min-height:100vh!important;margin:0!important;border:0!important;position:fixed!important;inset:0!important;z-index:99999!important;background:#1e192c}
.map-viewport:fullscreen .map-fullscreen-btn,.map-viewport.map-pseudo-fullscreen .map-fullscreen-btn{position:fixed;right:18px;top:18px}
.map-viewport:fullscreen .map-drag-hint,.map-viewport.map-pseudo-fullscreen .map-drag-hint{bottom:14px;left:14px}
