/* Neo Campus · scene-first exploration and swift sliding RPG panels.
   This sheet intentionally overrides the original three-column dashboard layout. */
.layout{display:grid;grid-template-columns:minmax(0,1fr);width:100%;max-width:1900px;gap:0;margin:0 auto;padding:10px clamp(8px,1.5vw,24px)}
.stage-panel{min-width:0;max-width:100%;position:relative}
.stage-panel .scene{height:clamp(600px,calc(100dvh - 210px),930px);min-height:600px;max-height:none;border:1px solid #915b83;border-radius:16px}
.stage-panel .scene-head{left:clamp(16px,2.8vw,42px);top:clamp(18px,2vw,34px)}
.stage-panel .scene-head strong{font-size:clamp(36px,4vw,62px)}
.stage-panel .scene-foot{margin-inline:6px}
.utilitybar .utility-actions{display:flex;flex:1;justify-content:flex-end;align-items:center;overflow-x:auto;scrollbar-width:thin;gap:7px}
.utilitybar .utility-actions>button{flex:none;white-space:nowrap}
.utilitybar .rpg-nav-toggle{position:relative;overflow:hidden;min-width:76px;border-color:#ae6e9e;color:#ffe5f3;font-weight:900;letter-spacing:.065em;transition:transform .14s ease,background .14s ease,border-color .14s ease}
.utilitybar .rpg-nav-toggle::after{content:"";position:absolute;bottom:0;left:-110%;width:100%;height:3px;background:#ffd1e8;transform:skewX(-24deg);transition:left .2s ease}
.utilitybar .rpg-nav-toggle:hover::after,.utilitybar .rpg-nav-toggle.active::after{left:0}
.utilitybar .rpg-nav-toggle:hover,.utilitybar .rpg-nav-toggle.active{background:#873b6c;border-color:#f4a3cb;transform:translateY(-1px)}
.rpg-drawer-backdrop:not([hidden]){position:fixed;inset:0;z-index:98;border:0;border-radius:0;display:block;background:#080917b5;backdrop-filter:blur(3px);animation:neo-rpg-shade .18s ease-out}
.layout>.locations-panel,.layout>.sidebar{
 display:block;position:fixed;top:clamp(12px,3vh,32px);bottom:clamp(12px,3vh,32px);
 width:min(400px,calc(100vw - 24px));height:auto;min-width:0;max-width:none;max-height:none;
 z-index:102;overflow-y:auto;overscroll-behavior:contain;
 background:linear-gradient(160deg,#172139,#111322 70%);box-shadow:0 25px 90px #000c,0 0 0 1px #c779a945;
 border:1px solid #b97b9b;border-radius:12px;
 pointer-events:none;visibility:hidden;
 transition:transform .24s cubic-bezier(.23,.82,.28,1),visibility .24s;
 will-change:transform;
}
.layout>.locations-panel{left:clamp(8px,1vw,20px);right:auto;transform:translateX(calc(-100% - 36px));padding:clamp(16px,2vw,24px)}
.layout>.sidebar{right:clamp(8px,1vw,20px);left:auto;transform:translateX(calc(100% + 36px));padding:12px 16px}
body[data-rpg-drawer="map"] .layout>.locations-panel,body[data-rpg-drawer="info"] .layout>.sidebar{
 visibility:visible;pointer-events:auto;transform:translateX(0);
}
.layout>.locations-panel h2{font-size:32px;margin-bottom:8px}
.layout>.locations-panel>p{display:block!important}
.layout>.locations-panel .legend{display:block!important}
.layout>.locations-panel #places{display:grid!important;overflow:visible!important;grid-template-columns:1fr;gap:8px}
.layout>.locations-panel .place{min-width:0;width:100%;font-size:18px;min-height:49px;clip-path:polygon(0 0,97% 0,100% 18%,100% 100%,0 100%);transition:background .12s ease,transform .12s ease}
.layout>.locations-panel .place:hover:not(:disabled),.layout>.locations-panel .place:focus-visible{transform:translateX(5px)}
.layout>.sidebar .rpg-panel-tabs{position:sticky;top:-12px;padding:12px 0 10px;z-index:5;background:#172139}
.layout>.sidebar .rpg-panel-tabs button{font-size:15px;font-weight:900;min-height:43px;clip-path:polygon(0 0,96% 0,100% 12%,100% 100%,0 100%)}
.layout>.sidebar .rpg-panel-tabs button:hover{border-color:#e6a8cf;transform:translateY(-1px)}
.layout>.sidebar .rpg-panel-tabs button.active{background:#ad477d}
.layout>.sidebar .side-section{animation:neo-rpg-info-section .2s ease-out both}
.layout>.sidebar .side-section[hidden]{display:none!important}
.rpg-action-dock{left:50%;right:auto;transform:translateX(-50%);width:min(96%,1050px);bottom:16px;max-height:44%;
 border-color:#ba7ba4;box-shadow:0 22px 50px #060715cb;background:linear-gradient(115deg,#10182ce8,#27213ae9);border-radius:16px;
 animation:neo-rpg-dock-arrive .2s cubic-bezier(.18,.85,.4,1) both}
.rpg-dock-header strong{font-size:clamp(21px,2.5vw,32px);letter-spacing:.025em}
.rpg-dock-tabs button{font-size:14px;min-height:39px;clip-path:polygon(0 0,93% 0,100% 27%,100% 100%,0 100%);transition:transform .13s ease,background .13s ease}
.rpg-dock-tabs button:hover{transform:translateY(-2px)}
.rpg-dock-action{min-height:52px;font-size:16px;letter-spacing:.03em;border-left:3px solid #b884a9;transition:transform .13s ease,background .13s ease,border-color .13s ease}
.rpg-dock-action:hover,.rpg-dock-action:focus-visible{transform:translateX(4px);background:#60405e;border-left-color:#ffc5dc}
.rpg-dock-items{grid-template-columns:repeat(auto-fit,minmax(160px,1fr))}
@keyframes neo-rpg-shade{from{opacity:0}to{opacity:1}}
@keyframes neo-rpg-info-section{from{opacity:.65;transform:translateX(9px)}to{opacity:1;transform:translateX(0)}}
@keyframes neo-rpg-dock-arrive{from{opacity:.7;transform:translate(-50%,12px)}to{opacity:1;transform:translate(-50%,0)}}
@media(max-width:1000px){
 .layout{display:grid;grid-template-columns:minmax(0,1fr)}
 .layout>.sidebar{display:block}
 .layout>.locations-panel{display:block}
 .stage-panel .scene{height:clamp(590px,calc(100dvh - 220px),850px)}
 .utilitybar{flex-wrap:wrap}
}
@media(max-width:700px){
 .utilitybar .utility-actions{width:100%;flex:initial;display:flex;justify-content:flex-start}
 .utilitybar .utility-left{width:100%;min-width:0}
 .stage-panel .scene{height:clamp(560px,calc(100dvh - 285px),730px);min-height:560px}
 .layout>.locations-panel,.layout>.sidebar{top:8px;bottom:8px;width:min(390px,calc(100vw - 16px))}
 .layout>.locations-panel{left:8px}
 .layout>.sidebar{right:8px}
 .rpg-action-dock{left:8px;right:8px;bottom:8px;width:auto;max-height:50%;transform:none;padding:12px;
   animation:neo-rpg-dock-arrive-mobile .18s ease-out both}
 .rpg-dock-header{gap:7px}.rpg-dock-tabs{max-width:100%;overflow-x:auto;flex-wrap:nowrap}
 .rpg-dock-tabs button{flex:none;padding:7px 9px}
 .rpg-dock-items{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}
}
@keyframes neo-rpg-dock-arrive-mobile{from{opacity:.7;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}
@media(max-width:420px){.rpg-dock-items{grid-template-columns:1fr 1fr}.rpg-dock-action{font-size:13px;min-height:48px}}
@media(prefers-reduced-motion:reduce){
 .layout>.locations-panel,.layout>.sidebar,.utilitybar .rpg-nav-toggle,.rpg-dock-action,.rpg-dock-tabs button,
 .rpg-drawer-backdrop:not([hidden]),.layout>.sidebar .side-section,.rpg-action-dock{animation:none!important;transition:none!important}
}

/* Touch-friendly sheets keep their own scroll and an always reachable exit. */
body.rpg-drawer-open{overflow:hidden}
.layout>.locations-panel,.layout>.sidebar{min-height:0;overflow-x:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch;touch-action:pan-y}
.rpg-drawer-header{position:sticky;top:-12px;z-index:12;display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:54px;margin:-8px -5px 14px;padding:7px 8px;background:linear-gradient(100deg,#172139,#201930);border-bottom:1px solid #6e5077}
.rpg-drawer-header strong{font:900 18px 'Barlow Condensed',sans-serif;letter-spacing:1.1px;color:#ffd1e8}
.rpg-drawer-close{flex:none;display:grid;place-items:center;width:44px;height:44px;padding:0;border:1px solid #c485ab;background:#51304d;color:white;font-size:20px;line-height:1}
.rpg-drawer-close:hover,.rpg-drawer-close:focus-visible{background:#a14369}
.layout>.sidebar .rpg-panel-tabs{top:42px;grid-template-columns:repeat(4,minmax(0,1fr));gap:4px}
@media(max-width:700px){
 .layout>.locations-panel,.layout>.sidebar{top:max(8px,env(safe-area-inset-top));bottom:max(8px,env(safe-area-inset-bottom));max-height:calc(100dvh - max(8px,env(safe-area-inset-top)) - max(8px,env(safe-area-inset-bottom)))}
 .layout>.sidebar .rpg-panel-tabs button{padding:10px 2px;font-size:13px}
 .utilitybar .utility-actions{overscroll-behavior-x:contain;scroll-padding-inline:8px}
}

/* Short mobile viewports: avoid forcing a 560px scene that pushes every control below the fold. */
@media(max-width:700px){
 .stage-panel .scene{height:max(460px,calc(100dvh - 245px));min-height:460px;max-height:720px}
 .rpg-action-dock{max-height:52%;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
 .rpg-dock-tabs button{min-height:44px}
 .rpg-dock-action{min-height:48px}
 .player-choice-prompt{inset:11% 3% 28%}
 .player-choice-panel{max-height:100%;overscroll-behavior:contain}
}
@media(max-width:700px) and (max-height:550px){
 .stage-panel .scene{height:460px}
 .rpg-scene-cast{inset:26% 1% 126px}
}
