:root{color-scheme:dark;--dark:#071b23;--ocean:#082b34;--ink:#dae9e6;--muted:#9fc4c7;--cyan:#67dedf;--gold:#e6bf88;--panel:#0b2530f2;--line:#3a7880;--shadow:0 16px 60px #001015d9}
*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden}body{font:15px/1.5 system-ui,-apple-system,"Segoe UI",sans-serif;color:var(--ink);background:var(--dark)}button,input{font:inherit}button{cursor:pointer}a{color:var(--cyan)}[hidden]{display:none!important}.app-shell{display:flex;flex-direction:column;min-height:100vh;height:100dvh;overflow:hidden}
.topbar{position:relative;z-index:25;display:flex;gap:1.5rem;align-items:center;justify-content:space-between;padding:10px 24px;background:linear-gradient(90deg,#071b23,#102d32);border-bottom:1px solid #25454b;min-height:76px}.identity{display:flex;align-items:center;min-width:0;gap:12px}.crest{font-family:Georgia,serif;font-size:45px;font-style:italic;line-height:1;background:linear-gradient(125deg,#e8c78f,#85683b);color:transparent;background-clip:text;text-shadow:0 3px 16px #d9ac5940}.eyebrow{font-size:10px;color:var(--gold);text-transform:uppercase;font-weight:700;letter-spacing:.16em}.identity h1{font-size:clamp(17px,2.4vw,25px);font-weight:500;line-height:1.12;letter-spacing:.015em;color:var(--cyan);margin:3px 0 0}.topactions{display:flex;align-items:center;gap:6px;flex-shrink:0}.tab{background:#0d2e35;color:#c5e5e3;border:1px solid #275963;border-radius:7px;padding:9px 11px;white-space:nowrap;font-size:12px}.tab:hover,.tab:focus-visible{background:#19505a}.tab.active{background:#286775;color:#edfaf7;border-color:#6db8c3}#index-count{opacity:.65}
#viewport{position:relative;flex:1;min-height:0;overflow:hidden;isolation:isolate;background:radial-gradient(circle at 50% 45%,#0e5565,#071821 90%)}#map-layer,#three-layer{position:absolute;inset:0;overflow:hidden}#map-layer{touch-action:none;cursor:grab}#map-layer.grabbing{cursor:grabbing}#map-canvas{position:absolute;width:1448px;height:1086px;left:50%;top:50%;margin-left:-724px;margin-top:-543px;transform-origin:50% 50%;will-change:transform}#map-canvas>img{display:block;width:100%;height:100%;user-select:none;-webkit-user-drag:none;pointer-events:none}#map-hotspots{position:absolute;inset:0}#three-layer{display:none}#three-layer.is-visible{display:block}#three-layer canvas{width:100%;height:100%;display:block;outline:0}#three-world-labels{position:absolute;inset:0;pointer-events:none}
.marker,.world-marker{--accent:var(--gold);position:absolute;display:flex;align-items:center;gap:6px;transform:translate(-50%,-110%);z-index:1;background:#05171fe8;border:1px solid #a6c6beaa;border-radius:8px;padding:8px 11px;color:#eef8ec;box-shadow:0 4px 20px #001014ac;white-space:nowrap;transition:background .2s,border-color .2s;touch-action:manipulation;font:700 13px/1 system-ui;letter-spacing:.015em}.marker::after,.world-marker::after{content:"";position:absolute;width:8px;height:8px;bottom:-11px;left:calc(50% - 4px);background:var(--accent);border:1px solid #071921;border-radius:50%;box-shadow:0 0 12px var(--accent)}.marker:hover,.world-marker:hover,.marker.active,.world-marker.active{background:#17424df2;border-color:var(--gold);z-index:9}.marker .spot,.world-marker .spot{width:16px;height:16px;border-radius:5px;color:var(--accent);display:grid;place-items:center;background:#15343b}.world-marker{pointer-events:auto;transform:translate(-50%,-100%);padding:6px 9px;font-size:11px}.world-marker .spot{font-size:12px;width:14px;height:14px}
.hud{position:absolute;z-index:8}.upper-left{left:20px;top:16px;pointer-events:none;max-width:min(410px,calc(100% - 100px));background:linear-gradient(90deg,#051923bd,#05192300);padding:10px 20px 12px 12px;border-left:2px solid var(--gold)}.status{font-size:11px;color:var(--gold);font-weight:700;letter-spacing:.13em}.upper-left p{font-size:12px;margin:5px 0 0;color:#cee0dc;line-height:1.45}.right-controls{right:18px;top:24%;display:flex;flex-direction:column;gap:5px}.right-controls button{background:#071c25cf;border:1px solid #3c6b76;color:#ecf5f1;border-radius:6px;font-size:27px;width:43px;height:43px;display:grid;place-items:center;line-height:1}.right-controls button:hover{border-color:var(--gold);background:#1b4a52}.compass{position:absolute;right:27px;top:14px;z-index:7;color:var(--gold);text-align:center;font-size:11px;letter-spacing:.1em;text-shadow:0 3px 10px #000}.compass span{font-size:22px;display:block;line-height:1}.bottom-hint{bottom:18px;left:20px;background:#051b25cd;border:1px solid #36616c;padding:9px 12px;border-radius:6px;color:#c9dad8;font-size:10px;font-weight:600;letter-spacing:.08em;max-width:calc(100% - 50px)}
.drawer{position:absolute;left:16px;top:16px;bottom:16px;z-index:20;width:min(365px,calc(100% - 32px));background:var(--panel);border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow);display:flex;flex-direction:column;padding:17px}.drawer-head{display:flex;align-items:center;justify-content:space-between}.drawer-head h2{color:var(--cyan);font:600 20px Georgia,serif;margin:0 0 10px}.drawer-head button,.panel-close{border:1px solid #426e73;border-radius:6px;background:#112f37;color:var(--ink);font-size:20px;line-height:1;width:29px;height:29px}.search-label{font-size:11px;color:var(--gold);text-transform:uppercase;letter-spacing:.07em}#place-search{margin:5px 0 9px;width:100%;padding:9px 10px;background:#061922;color:var(--ink);border:1px solid #416d76;border-radius:6px;outline:none}#place-search:focus{border-color:var(--cyan)}.place-list{overflow:auto;overscroll-behavior:contain;padding-right:3px}.place-entry{display:block;width:100%;text-align:left;padding:11px 12px;margin:5px 0;border-radius:7px;background:#0d2b33;border:1px solid #254a50;color:#e2ece8}.place-entry:hover{background:#1e4e55;border-color:#689da0}.place-entry small{display:block;color:#a8c4c5;margin-top:3px}
.place-panel{position:absolute;right:80px;bottom:28px;z-index:17;width:min(400px,calc(100% - 32px));max-height:calc(100% - 44px);overflow:auto;overscroll-behavior:contain;background:var(--panel);box-shadow:var(--shadow);border:1px solid #56818a;border-radius:12px;padding:20px}.place-panel h2{font:500 clamp(23px,2.2vw,31px)/1.2 Georgia,serif;color:var(--cyan);margin:9px 35px 10px 0}.place-panel>p:not(.eyebrow){color:#c8dcd9;font-size:13px;margin:9px 0 15px}.panel-close{position:absolute;right:15px;top:13px}.panel-buttons{display:flex;gap:7px;flex-wrap:wrap;margin:12px 0}.primary,.secondary{border-radius:6px;border:1px solid #508d90;padding:9px 11px;font-size:12px;font-weight:700}.primary{color:#072630;background:#71d0cf}.primary:hover{background:#a0ece8}.secondary{color:#c7eeeb;background:#153a44}.secondary:hover{background:#245660}.rooms{display:grid;gap:7px}.room-link,.room-missing{display:flex;justify-content:space-between;align-items:flex-start;gap:8px;width:100%;text-align:left;padding:10px 11px;border:1px solid #325967;border-radius:7px;background:#092630;color:var(--cyan);font-size:13px;text-decoration:none}.room-link:hover{border-color:var(--cyan);background:#174650}.room-missing{color:#c6bfae;opacity:.78;border-style:dashed}.room-name{display:block;font-weight:700;line-height:1.3}.room-caption{display:block;color:#abc4c3;font-size:11px;margin-top:4px}.room-extra{font-size:11px;font-weight:bold;flex:none}.place-panel[data-mode="room"]{border-color:var(--gold)}.place-panel[data-mode="room"] .panel-buttons{margin-top:5px}
.loading,.fallback{position:absolute;z-index:24;bottom:24px;left:50%;transform:translateX(-50%);padding:11px 15px;border-radius:7px;background:#102e37;border:1px solid #78bdbf;box-shadow:var(--shadow);font-size:13px;text-align:center;max-width:calc(100% - 24px)}.fallback{border-color:#b99c61;bottom:66px}
.footbar{z-index:25;display:flex;align-items:center;justify-content:space-between;gap:14px;background:#071921;color:#94babb;border-top:1px solid #21464e;padding:7px 20px;min-height:32px;font-size:11px}.footbar a{text-decoration:none}.footbar a:hover{text-decoration:underline}
@media(max-width:760px){.topbar{padding:10px 12px;gap:9px;min-height:71px}.crest{font-size:33px}.identity h1{font-size:17px}.eyebrow{font-size:9px}.topactions{gap:4px}.tab{font-size:10px;padding:7px 6px}.upper-left{left:8px;top:7px;max-width:calc(100% - 82px);padding:6px 12px}.upper-left p{font-size:11px}.right-controls{right:8px;top:27%}.right-controls button{width:34px;height:34px;font-size:22px}.compass{right:15px;top:8px}.bottom-hint{left:8px;bottom:10px;font-size:9px}.place-panel{left:8px;right:8px;bottom:10px;width:auto;max-height:55%;padding:14px}.place-panel h2{font-size:24px}.drawer{left:8px;top:7px;bottom:7px;max-width:85%;width:330px}.marker{font-size:11px;padding:7px}.marker .spot{display:none}.footbar{font-size:9px;padding:6px 10px}.footbar span:nth-child(2){display:none}}
@media(max-width:440px){.identity .eyebrow{display:none}.identity h1{font-size:15px}.tab{font-size:9px}.crest{font-size:29px}.topbar{flex-wrap:wrap}.topactions{margin-left:auto}.marker{font-size:10px}.world-marker{font-size:10px}}
@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}

/* v1.1 — stato del motore 3D e recupero guidato */
.health{border-color:#806c48;color:#e4c98e}.health.ready{border-color:#458d82;color:#9fe2ce}.health.warning{border-color:#b99b5d;color:#f3d5a7}.health.failed{border-color:#ac7474;color:#f1c2b8}
.diagnostic-panel{position:absolute;top:15px;right:75px;z-index:27;width:min(430px,calc(100% - 32px));max-height:calc(100% - 30px);overflow:auto;background:#0b2530f7;border:1px solid #6fa9aa;border-radius:12px;padding:15px 18px;box-shadow:var(--shadow);color:var(--ink)}
.diagnostic-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.diagnostic-head h2{font:500 22px Georgia,serif;margin:0;color:var(--cyan)}.diagnostic-head button{font-size:21px;background:#112f37;color:var(--ink);border:1px solid #426e73;border-radius:5px;width:30px;height:30px}
.diagnostic-status{font-weight:700;color:var(--gold);margin:13px 0 5px}.diagnostic-panel>p:not(.diagnostic-status){font-size:13px;margin:4px 0 8px}.diagnostic-panel ol{font-size:12px;line-height:1.55;padding-left:22px;margin:8px 0 14px}.diagnostic-panel li{margin:3px 0}.diagnostic-actions{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:12px}.diagnostic-note{font-size:11px;color:var(--muted);padding-top:9px;border-top:1px solid #244e58}.fallback{padding:12px 16px;max-width:min(570px,calc(100% - 32px));line-height:1.5}.fallback button{margin-left:8px;border:1px solid #78bdbf;background:#153a44;color:#d4f3f0;border-radius:5px;padding:3px 8px}
@media(max-width:760px){.health{font-size:10px}.diagnostic-panel{right:8px;top:8px;width:min(410px,calc(100% - 16px));max-height:75%}}
@media(max-width:440px){.topactions{width:100%;justify-content:flex-end}.health{max-width:125px}}
