/* Immersive handheld RPG shell. The map is the page. */
:root{--ink:#28384a;--paper:#f8f8e8;--line:#607080;--green:#427c68;--gold:#ffda70;--game-font:'VT323',monospace}
body{background:#4f9152;overflow:hidden}main{padding:0;max-width:none}.intro,.journal,.below-map,.footer{display:none}.adventure{display:block}.game-shell{position:fixed;inset:0;border:0;border-radius:0;box-shadow:none;background:#48935a;display:block}.canvas-wrap{position:absolute;inset:0;height:100%;border:0;border-radius:0}canvas{image-rendering:pixelated}.topbar{height:auto;position:fixed;z-index:10;inset:22px 24px auto;padding:0;border:0;pointer-events:none;align-items:flex-start}.brand{pointer-events:auto;gap:13px;background:#fafaeaf5;padding:13px 17px 13px 13px;border:3px solid #31404c;border-radius:3px;box-shadow:inset 0 0 0 3px #94a1a8,0 4px 0 #25354760;color:#263342;font-size:12px;line-height:1.8}.brand-icon{width:39px;height:43px;border:0;box-shadow:none;background:transparent;color:#da594e;font-size:28px;text-shadow:2px 2px #9c3f3c}.brand small{font-family:var(--game-font);font-size:19px;letter-spacing:1.3px;color:#5a6470;margin-top:0}.topbar nav{pointer-events:auto;display:flex;flex-direction:column;align-items:stretch;gap:0;width:176px;background:#fafaeaf5;padding:10px 5px;border:3px solid #31404c;border-radius:3px;box-shadow:inset 0 0 0 3px #94a1a8,0 4px 0 #25354760}.nav,.nav:last-child{font-family:var(--game-font);font-size:25px;text-align:left;border:0;margin:0;padding:4px 13px 4px 26px;background:none;position:relative;line-height:1.15;border-radius:0;font-weight:400}.nav.active{background:none}.nav:hover{background:#dce5dc}.nav:hover:before{content:'▶';position:absolute;left:10px;top:11px;font-size:11px}.mobile-menu{display:none!important}.game-bar{position:absolute;z-index:11;bottom:21px;right:22px;padding:5px 9px;height:38px;background:#fafaeaf5;border:2px solid #31404c;border-radius:3px;box-shadow:inset 0 0 0 2px #94a1a8,0 3px 0 #25354760;color:#263342;font-family:var(--game-font);font-size:15px;gap:10px}.game-bar>span{display:none}.game-bar #clock-label{font-family:var(--game-font);font-size:17px;color:#586868}.game-bar .icon-btn{background:none;color:#243342;border-radius:0;height:23px;min-width:24px;font-size:21px}.game-bar .icon-btn:hover{background:#dbe3d6}.muted-slash{color:#bb5449}.map-corner{top:122px;left:25px;gap:5px;z-index:1}.pixel-label{font-family:var(--game-font);font-size:20px;color:#283848;padding:6px 13px;background:#fafaeaf0;border:2px solid #31404c;box-shadow:inset 0 0 0 2px #a1adb3,0 3px 0 #25354750;letter-spacing:1px}.map-corner>span:last-child{font-family:var(--game-font);font-size:18px;color:white;text-shadow:1px 1px #253547,1px -1px #253547,-1px 1px #253547,-1px -1px #253547;background:none;padding:0 4px}.map-reset{z-index:2;top:213px;right:25px;background:#fafaeaf5;border:2px solid #31404c;box-shadow:inset 0 0 0 2px #94a1a8,0 3px 0 #25354760;width:35px;height:35px;color:#29394c}.zoom-controls{position:absolute;top:257px;right:25px;z-index:2;display:flex;flex-direction:column;background:#fafaeaf5;border:2px solid #31404c;box-shadow:inset 0 0 0 2px #94a1a8,0 3px 0 #25354760}.zoom-controls button{width:31px;height:30px;font-family:var(--game-font);font-size:25px}.zoom-controls button:hover{background:#d7e2d3}.welcome{z-index:3;bottom:76px;left:50%;max-width:650px;width:calc(100% - 280px);padding:20px 25px;gap:18px;background:#fcfceef7;border:4px solid #28384d;border-radius:4px;box-shadow:inset 0 0 0 4px #a4b5c3,inset 0 0 0 7px #eef2f1,0 5px 0 #25354760}.welcome-icon{font-family:var(--game-font);font-size:25px;color:#d44e48;animation:hint 1s steps(2) infinite}.welcome strong{font-family:var(--game-font);font-weight:400;font-size:28px;line-height:1.1;color:#2f3b4c;text-shadow:1px 1px #b5babc}.welcome p{font-family:var(--game-font);font-size:22px;line-height:1.1;color:#53606c;margin-top:7px}.welcome>button{font-size:23px;color:#687682;padding:0 0 0 7px}.interact-prompt{z-index:4;bottom:82px;border:3px solid #2d3c50;background:#fcfceef7;box-shadow:inset 0 0 0 3px #a4b5c3,0 4px 0 #25354760;padding:15px 22px;font-family:var(--game-font);font-size:25px;font-weight:400;color:#31404b;border-radius:3px}.interact-prompt kbd{font-family:var(--game-font);font-size:22px;height:26px;min-width:27px;background:#477b91;color:#fff}.game-footer{position:absolute;z-index:2;bottom:21px;left:24px;min-height:0;padding:8px 12px;background:#fafaeaf5;border:2px solid #31404c;box-shadow:inset 0 0 0 2px #94a1a8,0 3px 0 #25354760;border-radius:3px;color:#28384b;font-family:var(--game-font);font-size:17px;gap:12px}.game-footer kbd{border-color:#7a8891;background:#e3e9e1;font-family:var(--game-font);font-size:17px;height:19px;min-width:17px;font-weight:400;box-shadow:none}.game-footer .saved-indicator{display:none}.game-footer .arrows{font-size:16px}.game-footer .or{opacity:1;font-size:17px}.game-footer i{opacity:.6}.toast{font-family:var(--game-font);font-size:22px;bottom:76px;background:#fcfceef5;border:3px solid #2f3e52;box-shadow:inset 0 0 0 3px #a4b5c3,0 4px 0 #25354760;color:#2f3e52;border-radius:3px;padding:12px 20px}.skip{font-family:var(--game-font);font-size:22px;z-index:1000}.topbar .brand:focus-visible{outline-offset:3px}
/* Menus use the blue-gray frame from the game dialogue boxes. */
dialog{border:4px solid #28384d;border-radius:4px;box-shadow:inset 0 0 0 4px #a4b5c3,8px 8px 0 #1f304b60;background:#fafbea;color:#2c3e4c;width:min(980px,94vw)}dialog::backdrop{background:#12243688;backdrop-filter:none}.panel-shell{margin:5px;max-height:calc(89dvh - 10px)}.panel-header{background:#e0e8e6;border-bottom:3px solid #879aa6;padding:11px 22px;min-height:58px}.panel-header .eyebrow{font-family:var(--game-font);font-size:23px;letter-spacing:1.3px;font-weight:400;color:#354d5c}.panel-header .panel-back{font-family:var(--game-font);font-size:20px;color:#354d5c}.close-button{border:2px solid #7f9198;border-radius:2px;font-family:var(--game-font);font-size:27px;background:#f8f9eb;color:#354658}.panel-body{padding:32px;line-height:1.65}.panel-body h2{font-family:var(--pixel);font-size:25px;letter-spacing:-1px;line-height:1.6;color:#33465a;margin:8px 0 18px}.panel-body .lede,.case-section p{color:#4d5d63}.project-status{color:#5c6c6b;font-family:var(--game-font);font-size:19px;letter-spacing:.8px}.big-icon{background:#dae5d6;border:3px solid #789590;box-shadow:4px 4px 0 #b0c1b1;border-radius:3px;color:#497c66}.tag{border-color:#abbfbb;background:#e5ede1;color:#3c5a58;font-weight:500}.project-role{background:#e9eddd;border-color:#78a0a4;color:#405862}.project-links a,.primary-link{background:#436f88;border:2px solid #2d4f68;border-bottom-width:4px;border-radius:3px;font-size:12px;font-weight:600}.project-links a:hover,.primary-link:hover{background:#598ca5}.secondary-button{border:2px solid #9bb1b0;background:#f0f1e1;border-radius:3px;color:#3d585c}.architecture>div{background:#e7eddd;border:2px solid #bdcdb8;border-radius:3px}.architecture strong,.architecture p,.case-section h3{color:#405960}.architecture>div>span{color:#61808a}.project-highlights li{background:#f2e9c3;border-color:#bfa46a;color:#6c6044}.dex-card{background:#f4f4e5;border:2px solid #afc0b5;border-radius:3px;color:#345260;min-height:240px}.dex-card:hover{border-color:#507c88;box-shadow:4px 4px 0 #9ab9b1;transform:translate(-2px,-2px)}.dex-card h3{font-family:var(--game-font);font-size:31px;letter-spacing:.1px;line-height:1.1}.dex-card p,.dex-card .card-bottom{color:#50665c}.dex-card .number{color:#58726e}.dex-tools input{border:2px solid #a5b9af;background:#fffff2;border-radius:3px}.filter{font-family:var(--game-font);font-size:20px;border:2px solid #aebfb3;border-radius:3px;padding:4px 10px}.filter.selected{background:#4c7789;color:#fffbe9;border-color:#305267}.profile-card{background:#e5eddd;border:2px solid #b6c8b3}.profile-card .avatar{background:#437c75;color:#fff7d6;box-shadow:5px 5px 0 #a8c2a0}.profile-card h3,.case-section h3,.skill-group h3,.architecture-title{font-family:var(--game-font);font-size:26px;letter-spacing:.1px;font-weight:400}.skill-group{background:#eef1e0;border:2px solid #bac9b1}.skill-group p{color:#546951}.profile-card p,.timeline-item p{color:#506750}.timeline-item small{color:#527572}.timeline-item h4{font-family:var(--game-font);font-size:23px}.contact-box{border:2px solid #aec4b0;background:#e6eddb}.contact-box>a{font-family:var(--game-font);font-size:38px;color:#3c656a}.quick-stop{border:2px solid #b2c8b6;background:#edf1df}.quick-stop strong{font-family:var(--game-font);font-size:25px;font-weight:400}.quick-stop p{color:#526a58}.quick-stop .quick-num{color:#719480}.controls-grid .control-row{background:#e4eddd;font-family:var(--game-font);font-size:22px}.completion-banner{background:#f3e8bd;border:2px solid #baa46b}.settings-row{font-size:14px}.game-shell button:focus-visible{outline-color:#f8df65}
@keyframes hint{50%{transform:translateX(4px)}}
@media(min-width:1500px){.canvas-wrap{height:100%}.topbar{inset:30px 35px auto}.brand{padding:15px 19px}.map-corner{left:36px;top:136px}.topbar nav{width:200px}.nav{font-size:28px}.map-reset{top:230px;right:35px}.zoom-controls{top:275px;right:35px}.game-bar{bottom:25px;right:35px}.game-footer{left:35px;bottom:25px}}
@media(max-width:800px){.topbar{inset:15px 15px auto}.brand{font-size:10px;padding:9px 12px;gap:7px}.brand small{font-size:16px;letter-spacing:.9px}.brand-icon{font-size:22px;width:31px;height:34px}.topbar nav{width:143px;padding:8px 4px}.nav,.nav:last-child{font-size:23px;padding:3px 9px 3px 21px;display:block}.nav:hover:before{left:6px;top:10px}.map-corner{top:101px;left:16px}.pixel-label{font-size:18px;padding:5px 10px}.map-corner>span:last-child{font-size:16px}.map-reset{top:177px;right:17px}.zoom-controls{top:220px;right:17px}.welcome{width:calc(100% - 56px);max-width:560px;bottom:150px;padding:16px 20px}.welcome strong{font-size:25px}.welcome p{font-size:20px}.game-footer{display:none}.game-bar{bottom:15px;right:50%;transform:translateX(50%);padding:4px 8px;height:35px}.game-bar #clock-label{display:inline;font-size:16px}.touch-controls{bottom:22px;left:22px;right:22px;z-index:3}.dpad{grid-template:repeat(3,36px)/repeat(3,36px);filter:drop-shadow(2px 3px #23304090)}.dpad button,.pad-center{background:#fafaeae6;border:2px solid #35475b;color:#40566d;border-radius:2px}.pad-center{border:0;background:#4c6071;color:#718595;font-size:22px}.dpad button:active{background:#a2b6bd}#touch-interact{width:57px;height:57px;font-family:var(--pixel);font-size:17px;color:#fff9e2;background:#c25f57;border:3px solid #653c46;box-shadow:3px 4px #23304090}#touch-interact:active{background:#964e51}.interact-prompt{bottom:155px;font-size:22px;padding:12px 18px}.toast{bottom:155px;font-size:21px}}
@media(max-width:560px){.topbar{inset:12px 12px auto}.brand{font-size:8px;padding:8px 9px;gap:6px;border-width:2px}.brand-icon{font-size:20px;height:30px;width:27px}.brand small{font-size:13px;letter-spacing:.5px}.topbar nav{width:119px;display:flex;border-width:2px;padding:7px 3px}.nav,.nav:last-child{font-size:20px;padding:3px 6px 3px 18px}.nav:hover:before{font-size:9px;top:9px;left:5px}.mobile-menu{display:none!important}.map-corner{top:88px;left:13px}.pixel-label{font-size:16px;padding:4px 9px}.map-corner>span:last-child{font-size:15px}.canvas-wrap{height:100%}.map-reset{right:14px;top:150px;width:31px;height:31px;font-size:21px}.zoom-controls{top:190px;right:14px}.zoom-controls button{width:27px;height:27px}.welcome{width:calc(100% - 30px);bottom:153px;padding:14px 15px;gap:10px;border-width:3px}.welcome strong{font-size:23px}.welcome p{font-size:19px;line-height:1.15}.welcome-icon{font-size:19px}.welcome>button{font-size:21px}.interact-prompt{bottom:151px;font-size:19px;gap:9px;max-width:94%;padding:11px 14px}.interact-prompt kbd{font-size:20px;min-width:23px;height:23px}.game-bar{bottom:15px}.game-bar .icon-btn{font-size:20px;min-width:22px}.touch-controls{bottom:23px;left:16px;right:18px}.dpad{grid-template:repeat(3,32px)/repeat(3,32px)}#touch-interact{width:50px;height:50px;font-size:15px}.toast{font-size:20px;max-width:92%;bottom:150px}.panel-shell{max-height:calc(93dvh - 10px)}.panel-header{padding:9px 13px;min-height:52px}.panel-header .eyebrow{font-size:19px}.panel-header .panel-back{font-size:17px}.panel-body{padding:20px 16px}.panel-body h2{font-size:19px;line-height:1.5;letter-spacing:-.8px}.panel-body .lede{font-size:13px}.project-status{font-size:17px}.project-heading{gap:8px}.big-icon{width:45px;height:45px;font-size:23px}.filter{font-size:19px;padding:4px 9px}.dex-card{min-height:220px}.dex-card h3{font-size:29px}.contact-box>a{font-size:30px}.profile-card h3,.case-section h3,.skill-group h3,.architecture-title{font-size:25px}.quick-stop strong{font-size:23px}.game-bar #clock-label{font-size:15px}}
@media(prefers-reduced-motion:reduce){.welcome-icon{animation:none}}
.npc-dialog{position:fixed;inset:auto 0 68px;margin:0 auto;width:min(740px,calc(100% - 70px));max-height:40vh;border:4px solid #28384d;background:#fcfceefc;box-shadow:inset 0 0 0 4px #a4b5c3,0 6px 0 #25354760;padding:20px 27px 17px;border-radius:4px;z-index:100}.npc-dialog::backdrop{background:transparent;backdrop-filter:none}.npc-name{font-family:var(--pixel);font-size:12px;color:#426e81;margin-bottom:13px;line-height:1.5}.npc-dialog>p{font-family:var(--game-font);font-size:29px;line-height:1.15;color:#344454;margin:0 0 17px;text-shadow:1px 1px #c5cbcd}.npc-actions{display:flex;gap:20px;justify-content:flex-end}.npc-actions>button{font-family:var(--game-font);font-size:23px;padding:4px 8px;color:#3a6376}.npc-actions>button:hover{background:#d8e6dc}.npc-actions>button:focus-visible{outline:2px solid #3a6376;outline-offset:1px}@media(max-width:560px){.npc-dialog{width:calc(100% - 24px);bottom:145px;padding:16px 20px}.npc-name{font-size:10px}.npc-dialog>p{font-size:25px}.npc-actions>button{font-size:20px}.npc-actions{gap:10px}}
.map-reset{top:285px}.zoom-controls{top:330px}
.campus-regions{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:24px 0 30px}.campus-region{display:flex;flex-direction:column;border:2px solid #8ba4a1;background:#edf0df;text-align:left;overflow:hidden}.campus-region:hover{border-color:#375c73;background:#e0e9d5}.campus-region>img{width:100%;height:144px;object-fit:cover;image-rendering:pixelated;border-bottom:2px solid #8ba4a1}.campus-region>span{padding:12px}.campus-region strong{display:block;font:27px/1 var(--game-font);color:#2c4e62}.campus-region small{display:block;line-height:1.5;margin:9px 0;color:#50655f}.campus-region em{font:21px var(--game-font);font-style:normal;color:#3c6b7e}.campus-results{display:grid;grid-template-columns:1fr 1fr;gap:8px}.campus-place{display:flex;align-items:center;gap:12px;width:100%;text-align:left;padding:14px 12px;background:#f0f2e3;border:2px solid #b4c2b4;color:#3d5966}.campus-place:hover{border-color:#4b7887;background:#e4eddd}.campus-place>span:nth-child(2){flex:1}.campus-place strong{display:block;font:24px/1.05 var(--game-font)}.campus-place small{display:block;font-size:11px;line-height:1.5;margin-top:6px;color:#5b6c65}.place-marker{color:#658e91}.campus-place:disabled{opacity:.5;cursor:default}.map-note{margin-top:24px;font-size:11px;color:#65736d;line-height:1.6}.campus-exhibit{padding:23px;background:#e6eddc;border:2px solid #a9bfaf;margin:24px 0}.campus-exhibit h3{font:32px var(--game-font);margin:6px 0 12px;color:#365b66}.campus-exhibit p{font-size:14px;line-height:1.7;margin-bottom:20px}.bus-stop{display:flex;align-items:center;gap:30px;margin:20px 0 30px}.bus-stop img{width:192px;image-rendering:pixelated}.bus-options{display:grid;gap:10px}.progress-projects{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin:26px 0 40px}.progress-project{padding:25px;text-align:left;border:2px solid #9bb5ab;background:#e9efdf;color:#375562}.progress-project:hover{border-color:#315c75;box-shadow:4px 4px #b6c9b4}.progress-chip{font:19px var(--game-font);background:#e8d494;color:#6b5935;padding:4px 8px}.progress-project h3{font:35px/1.05 var(--game-font);margin:18px 0 12px}.progress-project p{font-size:14px;line-height:1.6;margin-bottom:17px}.progress-project>strong{font:21px var(--game-font);display:block;margin-top:20px}.next-interests>h3{font:34px var(--game-font);margin:8px 0 15px}.next-interests>p{font-size:14px;color:#52665e}.interest-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin:25px 0}.interest-grid article{border-left:4px solid #7d9c92;padding:3px 15px}.interest-grid h4,.work-steps h4{font:26px var(--game-font);margin:0 0 8px;color:#3d6270}.interest-grid p,.work-steps p{font-size:13px;line-height:1.7;margin:0;color:#52665e}.work-steps{display:grid;gap:20px}.work-steps article{padding:17px;background:#edf0e0;border:1px solid #b6c6b4}
@media(min-width:1500px){.map-reset{top:310px}.zoom-controls{top:353px}}
@media(max-width:800px){.map-reset{top:248px}.zoom-controls{top:290px}.campus-regions{gap:8px}.campus-region>img{height:110px}.campus-region strong{font-size:24px}}
@media(max-width:560px){.map-reset{top:214px}.zoom-controls{top:254px}.campus-regions{grid-template-columns:1fr}.campus-region{flex-direction:row}.campus-region>img{width:100px;height:120px;border-right:2px solid #8ba4a1;border-bottom:0}.campus-region small{font-size:11px;margin:5px 0}.campus-results,.progress-projects,.interest-grid{grid-template-columns:1fr}.campus-place strong{font-size:23px}.progress-project{padding:20px}.bus-stop{gap:15px}.bus-stop img{width:96px}.bus-stop p{font-size:13px}.interest-grid{gap:23px}.progress-project h3{font-size:31px}}

/* The fullscreen stage needs its own block size. The base grid's align-self:start
   otherwise lets this fixed box collapse around its absolutely positioned children. */
.game-shell {
  height: 100vh;
  height: 100dvh;
  align-self: stretch;
}

/* Compact navigation, first-visit guide, and destination controls. */
.brand{cursor:pointer;text-align:left}.has-started .brand{padding:8px 13px;gap:8px}.has-started .brand small{display:none}.has-started .brand-icon{height:30px;width:27px;font-size:22px}.nav[data-action="dex"]{display:flex;align-items:center;gap:8px}.nav-count{font:16px/1 var(--game-font);background:#355b70;color:#fff8d5;padding:2px 5px;border:1px solid #263e50}.map-corner>span:last-child{background:#243a4be8;border:1px solid #a2b7b0;color:#fffbe8;text-shadow:none;padding:3px 7px;font-size:17px}.map-legend{position:absolute;z-index:5;top:193px;left:25px;width:236px;color:#263e50;background:#fafaeaf5;border:2px solid #31404c;box-shadow:inset 0 0 0 2px #a1adb3,0 3px 0 #25354750;font-family:var(--game-font)}.map-legend summary{cursor:pointer;font-size:20px;padding:8px 11px;min-height:38px}.map-legend summary>span{font-size:17px;float:right;color:#516b66}.map-legend summary:focus-visible,.map-legend button:focus-visible{outline:3px solid #805b19;outline-offset:1px}.map-legend[open] summary{border-bottom:2px solid #9eafa7}.map-legend #map-destinations{padding:7px;max-height:min(43dvh,370px);overflow-y:auto;overscroll-behavior:contain}.legend-key{font-size:15px;padding:5px;color:#45616c}.legend-campuses{display:grid;grid-template-columns:1fr 1fr;gap:5px;margin:6px 0}.legend-campuses button{font:18px/1.1 var(--game-font);padding:8px 4px;background:#dce7d9;border:1px solid #819e93;min-height:40px}.legend-destination,.legend-all{display:block;width:100%;padding:7px 6px;text-align:left;font:20px/1.1 var(--game-font);border-bottom:1px solid #c5d0bd;min-height:35px}.legend-destination:hover,.legend-all:hover{background:#e1e8cf}.legend-all{font-size:18px;color:#305c70}.welcome-screen{max-width:760px;margin:auto}.welcome-screen h2{font-size:28px;line-height:1.45}.welcome-campuses{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:20px 0}.welcome-campuses p{margin:0;background:#e5edda;border:2px solid #adbfad;padding:14px;color:#4d6263;font-size:13px;line-height:1.6}.welcome-campuses strong{font:26px var(--game-font);color:#2d5365}.start-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px}.start-actions button{min-height:44px;padding:11px;text-align:center}.start-controls{font:20px/1.6 var(--game-font);background:#f1e7bf;border:1px solid #b7a36a;padding:12px;margin:20px 0;color:#4c4e38}.start-controls kbd{font:19px var(--game-font);font-weight:400;border:1px solid #9e9e82;background:#fffdf0;padding:1px 5px}.welcome-screen .map-note{margin-top:15px}.resume-summary{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin:23px 0}.resume-summary article{border-left:4px solid #659291;padding:4px 15px;background:#e9eddf}.resume-summary h3{font:26px var(--game-font);margin:6px 0}.resume-summary p{font-size:13px;line-height:1.6}.tutorial-steps{padding-left:24px;line-height:1.7;margin:24px 0}.tutorial-steps li{padding-left:5px;margin:12px 0}.campus-regions{grid-template-columns:repeat(2,minmax(0,1fr))}.course-directory{margin:24px 0}.course-directory>h3{font:27px var(--game-font);margin-bottom:14px}.npc-dialog{max-height:min(62dvh,600px);overflow-y:auto;overscroll-behavior:contain}.npc-dialog>p{font-size:24px;line-height:1.25;white-space:pre-line}.npc-questions{display:grid;gap:7px;margin:14px 0}.npc-questions button{font:22px/1.15 var(--game-font);text-align:left;padding:9px 12px;background:#e5eddd;border:2px solid #a2b6ac;color:#32556a}.npc-questions button::before{content:'▶ ';font-size:14px}.npc-questions button[aria-pressed="true"]{border-color:#436f88;background:#d6e5d6}.npc-actions{flex-wrap:wrap;gap:8px}.npc-actions>button{min-height:40px;border:1px solid #a3b6aa;background:#f2f3e3}.npc-dialog button:focus-visible{outline:3px solid #805b19;outline-offset:2px}
/* This visual starts only after the world confirms a successful campus change. */
.travel-transition{position:absolute;inset:0;z-index:20;pointer-events:none;overflow:hidden;display:grid;place-items:center;background:#163e65e8;animation:travel-fade 1.05s steps(8,end) both}.travel-stripes{position:absolute;inset:24% -20%;background:repeating-linear-gradient(0deg,#194a74 0 12px,#ffcf4d 12px 16px,#173d62 16px 44px);border-block:8px solid #ffdb66;transform:rotate(-5deg);opacity:.9}.travel-bus{position:absolute;left:0;top:40%;display:flex;align-items:center;gap:20px;animation:bus-cross .95s steps(20,end) both}.travel-bus img{width:288px;max-width:55vw;image-rendering:pixelated;filter:drop-shadow(8px 8px 0 #102f4f)}.travel-bus span{font:32px var(--game-font);color:#ffdc5b;white-space:nowrap;text-shadow:3px 3px #152f4e}.travel-destination{position:relative;align-self:end;margin-bottom:18dvh;padding:10px 24px;background:#fafaeaf5;border:3px solid #233c50;color:#24475a;box-shadow:inset 0 0 0 3px #92b0ae;font:30px var(--game-font)}@keyframes bus-cross{from{transform:translateX(-120%)}to{transform:translateX(115vw)}}@keyframes travel-fade{0%,100%{opacity:0}12%,84%{opacity:1}}
@media(min-width:1500px){.map-legend{top:207px;left:36px}}
@media(max-width:800px){.map-legend{top:164px;left:16px;width:208px}.topbar nav{width:150px}.nav-count{font-size:15px}.map-legend summary{font-size:19px}.map-corner>span:last-child{font-size:16px}.welcome-screen h2{font-size:23px}.travel-bus span{font-size:25px}.travel-destination{font-size:25px}}
@media(max-width:560px){.topbar nav{width:142px}.nav,.nav:last-child{font-size:20px}.nav[data-action="dex"]{font-size:19px;gap:4px}.nav-count{font-size:14px;padding:2px 4px}.has-started .brand{padding:6px 8px}.has-started .brand-icon{height:24px;width:21px;font-size:19px}.map-corner{top:77px}.map-corner>span:last-child{font-size:14px}.map-legend{left:13px;top:139px;width:188px}.map-legend summary{font-size:18px;padding:7px 8px}.map-legend summary>span{font-size:15px}.map-legend #map-destinations{max-height:38dvh}.legend-destination{font-size:19px}.welcome-screen h2{font-size:20px}.welcome-campuses,.resume-summary{grid-template-columns:1fr;gap:9px}.welcome-campuses p{padding:10px 12px;font-size:12px}.welcome-campuses strong{font-size:23px}.start-actions{gap:8px}.start-actions button{font-size:11px;padding:10px 8px}.start-controls{font-size:18px;line-height:1.5}.start-controls kbd{font-size:17px}.welcome-screen .project-status{font-size:15px}.npc-dialog{bottom:142px;max-height:calc(100dvh - 170px)}.npc-dialog>p{font-size:22px}.npc-questions button{font-size:20px;min-height:42px}.campus-regions{grid-template-columns:1fr}.travel-bus span{font-size:21px}.travel-destination{font-size:23px;margin-bottom:24dvh}}
@media(prefers-reduced-motion:reduce){.travel-transition{display:none}.travel-bus{animation:none}.dex-card:hover{transform:none}}
@media(max-width:560px){.welcome-campuses{grid-template-columns:1fr 1fr}.welcome-campuses strong{font-size:21px}.welcome-campuses p{padding:10px;font-size:11px}}
/* Start and course exhibits stay visible without implying real classroom locations. */
.brand-start{display:block;font:20px/1.2 var(--game-font);color:#2d6373;letter-spacing:.7px;margin-top:3px}.brand:hover .brand-start{text-decoration:underline;text-underline-offset:3px}.has-started .brand-start{font-size:17px}.welcome-steps{list-style:none;padding:0;display:grid;gap:11px;margin:20px 0}.welcome-steps li{display:flex;gap:13px;padding:12px 14px;background:#e5eddc;border:2px solid #a6bcad}.welcome-steps li>span{display:grid;place-items:center;align-self:flex-start;background:#426f81;color:#fff7d8;font:26px var(--game-font);min-width:30px;height:33px;border:2px solid #2d4e63}.welcome-steps strong{font:24px var(--game-font);color:#2c5364}.welcome-steps p{font-size:13px;line-height:1.5;margin:3px 0 0;color:#4c6263}.map-corner{top:148px}.map-legend{top:216px;width:250px}.map-legend summary{font-size:19px}.legend-destination{display:flex;flex-direction:column;gap:3px;padding:9px 7px}.legend-destination small{font:14px/1.2 var(--game-font);color:#536b65}.legend-return{display:block;width:100%;min-height:44px;font:21px/1.2 var(--game-font);color:#fff9dc;background:#39677c;border:2px solid #25475d;padding:9px;margin-bottom:7px}.exhibit-note{padding:12px 15px;border-left:4px solid #648e91;background:#e5ecdf;color:#3f5d62;font-size:13px;line-height:1.6}.course-cards{grid-template-columns:repeat(3,minmax(0,1fr));margin:14px 0 26px}.course-cards .campus-place{align-items:flex-start;min-height:112px}.campus-directory{margin-top:25px;border-top:2px solid #a6bbad;padding-top:16px}.campus-directory>summary{cursor:pointer;font:24px var(--game-font);padding:9px 0;color:#3e6071}.campus-directory .dex-tools{margin-top:20px}.map-corner>span:last-child{font-size:16px}
@media(min-width:1500px){.map-corner{top:157px}.map-legend{top:228px}}
@media(max-width:800px){.brand-start{font-size:17px}.map-corner{top:123px}.map-legend{top:187px;width:222px}.course-cards{grid-template-columns:1fr}.course-cards .campus-place{min-height:75px}.welcome-steps p{font-size:12px}}
@media(max-width:560px){.brand-start,.has-started .brand-start{font-size:15px;letter-spacing:.3px}.map-corner{top:104px}.map-corner>span:last-child{font-size:12px;padding:3px 5px}.map-legend{top:163px;width:201px}.map-legend summary{font-size:16px;padding:8px}.map-legend summary>span{font-size:14px}.welcome-steps{gap:8px;margin:16px 0}.welcome-steps li{gap:9px;padding:10px}.welcome-steps strong{font-size:22px}.welcome-steps p{font-size:12px}.welcome-steps li>span{font-size:23px;min-width:26px;height:29px}.exhibit-note{font-size:12px}.legend-destination small{font-size:13px}}
@media(max-width:360px){.topbar nav{width:122px}.nav,.nav:last-child{font-size:18px;padding-left:16px}.nav[data-action="dex"]{font-size:17px}.nav-count{font-size:12px;padding:2px 3px}.map-legend{width:164px}.map-legend summary>span{display:block;float:none;margin-top:3px}.map-corner>span:last-child{font-size:11px;max-width:164px}.brand{max-width:157px}.brand-start,.has-started .brand-start{font-size:14px}}

/* One control dock; the map keeps the rest of the screen. */
:root{--dock-height:184px}
.game-shell{height:100dvh;min-height:0;align-self:stretch}
.game-shell .canvas-wrap{position:absolute;inset:0 0 var(--dock-height);height:auto;min-height:0}
.topbar{inset:16px 18px auto;display:flex;justify-content:space-between;align-items:flex-start;gap:12px}
.topbar .brand,.has-started .topbar .brand{padding:8px 12px;gap:10px;max-width:none;border-width:2px;box-shadow:0 3px 0 #20384940;font:700 12px/1.3 var(--sans,system-ui,sans-serif);min-height:54px}
.topbar .brand-icon,.has-started .topbar .brand-icon{display:grid;place-items:center;width:32px;height:32px;font:24px var(--game-font);color:#fff8d6;background:#285a6a;border-radius:2px;text-shadow:none}
.topbar .brand small,.has-started .topbar .brand small{display:block;font:12px/1.4 var(--sans,system-ui,sans-serif);letter-spacing:0;color:#4b656b;margin-top:3px}
.brand-arrow{font:22px var(--game-font);margin-left:8px;color:#386b78}
.world-status{display:grid;gap:4px;text-align:right;padding:9px 12px;background:#fbfbeef0;border:2px solid #344e5a;color:#264552;box-shadow:0 3px 0 #20384930;font:19px/1.1 var(--game-font);max-width:45vw}
.world-status>span:last-child{font-size:16px;color:#506d6a}
.game-dock{position:fixed;z-index:12;left:50%;bottom:max(10px,env(safe-area-inset-bottom));transform:translateX(-50%);width:min(1050px,calc(100% - 28px));padding:8px 14px 11px;background:#fcfceef7;border:3px solid #304954;border-radius:7px;box-shadow:inset 0 0 0 2px #a9b9b1,0 5px 0 #172e3b55;color:#274856}
.dock-nav{display:grid;grid-template-columns:1.25fr 1fr 1fr 1fr;gap:7px;border-bottom:1px solid #b6c7b8;padding-bottom:8px}
.dock-nav .nav,.dock-nav .nav:last-child{display:flex;justify-content:center;align-items:center;gap:8px;min-height:38px;padding:6px 10px;background:#e5ecdc;border:1px solid #9eb5a9;border-radius:3px;font:24px/1 var(--game-font);color:#294c5a;text-align:center;cursor:pointer}
.dock-nav .nav:hover,.dock-nav .nav.active{background:#2f6274;color:#fff9df;border-color:#244b5e}
.dock-nav .nav:hover:before{content:none}
.dock-nav .nav-count{font-size:17px;background:#fcf9df;color:#315460;border-color:#9baa90}
.dock-controls{display:flex;align-items:center;justify-content:space-between;gap:20px;padding-top:9px}
.dock-movement{display:flex;align-items:center;gap:13px;flex-shrink:0}
.dock-movement,.dock-movement *,#run-button,#run-button *{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
.game-dock .dpad{display:grid;position:static;grid-template:repeat(3,25px)/repeat(3,32px);gap:3px;filter:none;width:auto;height:auto;touch-action:none}
.game-dock .dpad button,.game-dock .pad-center{display:grid;place-items:center;border:1px solid #8aa69d;border-bottom-width:3px;border-radius:3px;background:#e4eddf;color:#315b68;font:24px/1 var(--game-font);padding:0;min-width:0;min-height:0;user-select:none;touch-action:none}
.game-dock .dpad .up{grid-area:1/2}.game-dock .dpad .left{grid-area:2/1}.game-dock .dpad .right{grid-area:2/3}.game-dock .dpad .down{grid-area:3/2}.game-dock .pad-center{grid-area:2/2;border:0;background:#d0dfd1;color:#5c807d;font-size:18px}
.game-dock .dpad button:active{background:#487888;color:#fff9df;border-bottom-width:1px;transform:translateY(1px)}
.movement-hint{display:grid;gap:5px;font:13px/1.3 var(--sans,system-ui,sans-serif);color:#5b706d}.movement-hint strong{font:24px var(--game-font);color:#315668}
.dock-actions{display:flex;align-items:stretch;gap:9px;flex:1;max-width:340px}
.game-dock .dock-action{position:static;inset:auto;transform:none;display:flex;align-items:center;justify-content:center;gap:9px;min-height:49px;padding:10px 13px;background:#f4e7b7;border:2px solid #a88e47;border-bottom-width:4px;border-radius:4px;box-shadow:none;font:23px/1 var(--game-font);color:#4b4e35;cursor:pointer}
.game-dock .run-button{flex-direction:column;gap:6px;min-width:86px}
.game-dock .dock-action kbd{font:16px/1 var(--game-font);padding:3px 5px;background:#ffffee;color:#506161;border:1px solid #a2b0a1;border-radius:2px;min-width:23px;height:auto;box-shadow:none}
.game-dock .run-button[aria-pressed="true"],.game-dock .run-button.is-running{background:#315f72;border-color:#234656;color:#fff4c6}
.game-dock .interact-prompt{flex:1;max-width:none;min-width:110px;background:#e4eddf;border-color:#8da99a;color:#315966;text-align:left;justify-content:flex-start;font-size:21px}
.game-dock .interact-prompt:disabled{opacity:.58;cursor:default}.game-dock .interact-prompt #interact-label{line-height:1.1}
.dock-options{display:grid;gap:7px;flex-shrink:0;min-width:192px}
.season-control{display:flex;align-items:center;gap:9px;font:18px var(--game-font);color:#3c5e67}
.season-control select{width:145px;min-height:33px;border:1px solid #93aa9f;border-radius:3px;background:#fffff2;padding:4px 7px;color:#314f58;font:17px var(--game-font);cursor:pointer}
.dock-tools{display:flex;align-items:center;gap:7px}.dock-tool,.world-options>summary{display:flex;align-items:center;justify-content:center;gap:6px;min-height:34px;padding:5px 9px;border:1px solid #9bb2a5;border-radius:3px;background:#e6edde;color:#315665;font:19px var(--game-font);cursor:pointer;list-style:none}
.world-options{position:relative;flex:1}.world-options>summary::-webkit-details-marker{display:none}.world-options>summary span{font-size:18px}
.world-options-menu{position:absolute;bottom:calc(100% + 12px);right:0;display:grid;gap:7px;width:205px;background:#fcfceefc;border:2px solid #355361;border-radius:5px;box-shadow:0 5px 18px #17323e30;padding:10px}
.world-options-menu>button,.dock-zoom button{min-height:39px;border:1px solid #9bb1a5;background:#e7edde;border-radius:3px;font:20px var(--game-font);color:#315665;padding:6px 10px;text-align:left;cursor:pointer}
.world-options-menu>button:hover,.dock-tool:hover,.world-options>summary:hover,.dock-zoom button:hover{background:#d6e6d7}.dock-zoom{display:flex;align-items:center;justify-content:space-between;gap:7px;font:20px var(--game-font);color:#3c5c64}.dock-zoom button{width:43px;text-align:center;font-size:25px}
.game-dock button:focus-visible,.game-dock summary:focus-visible,.game-dock select:focus-visible{outline:3px solid #236d95;outline-offset:3px}
.toast{bottom:calc(var(--dock-height) + 14px);max-width:min(600px,90vw);z-index:30}
.npc-dialog{bottom:calc(var(--dock-height) + 12px);max-height:calc(100dvh - var(--dock-height) - 40px)}
.close-button{width:auto;min-width:76px;min-height:36px;display:flex;align-items:center;justify-content:center;gap:7px;padding:4px 10px;font:20px var(--game-font)}.close-button>span:first-child{font-size:26px}

/* Karan's profile is the single welcome and contact entry. */
dialog[data-view="welcome"]{width:min(940px,94vw)}
.profile-welcome{font-family:var(--sans,system-ui,sans-serif);max-width:820px;margin:auto}
.profile-intro{display:grid;grid-template-columns:78px minmax(0,1fr);gap:23px;align-items:start}
.profile-monogram{width:78px;height:82px;display:grid;place-items:center;background:#285a69;color:#ffdf70;border:3px solid #203f52;box-shadow:5px 5px 0 #bed0b6;font:42px var(--game-font)}
.profile-eyebrow{display:block;font-size:10px;font-weight:750;letter-spacing:1.7px;color:#658377;margin-bottom:7px}
.panel-body .profile-welcome h2{font-family:var(--sans,system-ui,sans-serif);font-size:40px;font-weight:850;letter-spacing:-1.4px;line-height:1.12;margin:0 0 6px;color:#203e4c}
.profile-title{font-size:23px;line-height:1.3;font-weight:650;color:#3d7477;margin:0 0 13px}.profile-bio{font-size:14px;line-height:1.65;color:#4e6266;margin:0;max-width:650px}
.profile-primary-actions{display:grid;grid-template-columns:1.3fr 1fr 1fr;gap:10px;margin:24px 0 13px}.profile-primary-actions button{min-height:45px;padding:11px 14px;font-size:13px;text-align:center;cursor:pointer}.profile-primary-actions .primary-link{display:flex;align-items:center;justify-content:center;gap:18px;background:#285c72}
.profile-controls{display:flex;justify-content:center;gap:24px;flex-wrap:wrap;padding:11px 14px;border:1px solid #d0d6bc;background:#f2efd8;border-radius:3px;color:#65716b;font-size:11px;line-height:1.5}.profile-controls>span{display:flex;align-items:center;gap:7px}.profile-controls strong{font-weight:600;color:#476165}.profile-controls kbd{font-family:inherit;font-size:10px;padding:3px 5px;border:1px solid #b9c1a9;background:#fffff0;border-radius:3px;box-shadow:0 1px 0 #a9b49d}
.profile-section{margin-top:25px}.profile-section h3,.profile-contact h3{font:26px/1.2 var(--game-font);color:#315865;margin:0 0 13px}.profile-section-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}.profile-section-heading>button{font:18px var(--game-font);color:#3c6e7c;padding:5px 0;cursor:pointer}
.profile-work-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.profile-work{display:flex;align-items:flex-start;gap:10px;text-align:left;padding:15px 12px;min-height:118px;border:2px solid #b6c9b5;background:#e8efdf;border-radius:4px;color:#345b67;cursor:pointer}.profile-work:hover{border-color:#477b84;background:#dcebd9}.profile-work>span:nth-child(2){flex:1;min-width:0;display:grid;gap:6px}.profile-work small{font-size:9px;font-weight:700;color:#70836c;text-transform:uppercase;letter-spacing:.5px}.profile-work strong{font:27px/1 var(--game-font);color:#2e5260}.profile-work>span:nth-child(2)>span{font-size:10px;line-height:1.5;color:#55716a}.profile-work-icon{font-size:24px;line-height:1.1;color:#628e7c}
.profile-details{display:grid;grid-template-columns:1fr 1fr;gap:30px}.profile-experience{display:grid;gap:3px;margin-bottom:15px;padding-left:13px;border-left:3px solid #9fbbab}.profile-experience>small{font-size:10px;color:#668178}.profile-experience>strong,.profile-skill>strong{font-size:12px;color:#385e68}.profile-experience p,.profile-skill p{font-size:11px;line-height:1.65;color:#5d706e;margin:2px 0 0}.profile-skill{margin-bottom:12px}.profile-education{font-size:11px;color:#607e75;border-top:1px solid #c5d1ba;padding-top:12px}
.profile-contact{display:flex;align-items:center;justify-content:space-between;gap:18px;border-top:2px solid #bccdb5;margin-top:18px;padding-top:19px}.profile-contact h3{margin-bottom:3px}.profile-contact p{font-size:11px;color:#62766d;margin:0}.profile-contact>div:last-child{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}.profile-contact a,.profile-contact button{font:18px var(--game-font);padding:8px 10px;min-height:35px;background:#e7ecdd;border:1px solid #a7baaa;color:#3c6876;border-radius:3px;cursor:pointer}
@media(max-width:760px){:root{--dock-height:194px}.topbar{inset:10px 10px auto}.topbar .brand,.has-started .topbar .brand{font-size:10px;padding:7px 9px;gap:7px;min-height:48px}.topbar .brand small,.has-started .topbar .brand small{font-size:10px}.topbar .brand-icon,.has-started .topbar .brand-icon{width:28px;height:28px;font-size:22px}.world-status{font-size:16px;padding:8px;max-width:43vw}.world-status>span:last-child{font-size:14px}.game-dock{width:calc(100% - 16px);padding:7px 9px 10px;border-width:2px;bottom:max(7px,env(safe-area-inset-bottom))}.dock-controls{gap:12px}.movement-hint{display:none}.dock-options{min-width:150px}.season-control{display:grid;gap:2px;font-size:15px}.season-control select{width:100%;min-height:31px;font-size:17px}.dock-actions{gap:7px}.game-dock .dock-action{padding:8px;min-height:50px}.game-dock .run-button{min-width:67px}.game-dock .interact-prompt{font-size:19px;min-width:90px}.dock-tool,.world-options>summary{font-size:17px;padding:5px 7px}.dock-nav .nav,.dock-nav .nav:last-child{font-size:22px;min-height:37px;padding:5px}.profile-details{gap:20px}.profile-intro{gap:18px}.profile-contact{align-items:flex-start}}
@media(max-width:520px){:root{--dock-height:228px}.topbar .brand,.has-started .topbar .brand{font-size:9px;max-width:195px}.brand-arrow{margin-left:2px;font-size:18px}.world-status{font-size:14px;max-width:42vw}.world-status>span:last-child{font-size:12px}.dock-controls{gap:9px;align-items:center}.game-dock .dpad{grid-template:repeat(3,32px)/repeat(3,30px);gap:3px}.game-dock .dpad button{font-size:24px}.dock-actions{display:grid;gap:6px;min-width:94px;max-width:130px}.game-dock .dock-action{padding:6px;min-height:40px;border-bottom-width:3px;font-size:20px}.game-dock .run-button{flex-direction:row;justify-content:space-between;gap:4px}.game-dock .dock-action kbd{font-size:14px;padding:3px;min-width:19px}.game-dock .interact-prompt{font-size:16px;min-height:51px;gap:5px;min-width:0}.dock-options{min-width:0;flex:1;max-width:135px;gap:7px}.dock-tools{gap:5px;flex-wrap:wrap}.dock-tool{min-height:29px;padding:4px 7px}.world-options{width:100%;flex:auto}.world-options>summary{font-size:16px;min-height:29px;padding:4px 6px}.season-control select{font-size:17px;padding:3px 5px;min-height:31px}.dock-nav{gap:5px;padding-bottom:7px}.dock-nav .nav,.dock-nav .nav:last-child{font-size:21px;gap:4px;min-height:35px}.dock-nav .nav-count{font-size:14px;padding:2px 3px}.world-options-menu{width:190px}.panel-body{padding:20px 17px}.panel-header{padding:8px 12px}.panel-header .eyebrow{font-size:19px;letter-spacing:.5px}.profile-intro{grid-template-columns:49px minmax(0,1fr);gap:13px}.profile-monogram{width:49px;height:54px;font-size:29px;box-shadow:3px 3px 0 #bed0b6}.profile-eyebrow{font-size:8px;letter-spacing:1px}.panel-body .profile-welcome h2{font-size:29px;letter-spacing:-1px}.profile-title{font-size:18px;margin-bottom:9px}.profile-bio{font-size:12px;line-height:1.65}.profile-primary-actions{gap:6px;margin-top:19px;grid-template-columns:1.25fr 1fr 1fr}.profile-primary-actions button{font-size:10px;padding:8px 5px;min-height:42px}.profile-primary-actions .primary-link{gap:4px}.profile-controls{gap:10px;padding:10px 5px;font-size:10px}.profile-controls>span{gap:5px}.profile-controls kbd{font-size:9px;padding:2px 4px}.profile-work-grid{grid-template-columns:1fr;gap:8px}.profile-work{min-height:0;padding:11px 12px;align-items:center;gap:14px}.profile-work>span:nth-child(2){gap:4px}.profile-work small{font-size:8px}.profile-work strong{font-size:26px}.profile-work>span:nth-child(2)>span{font-size:10px}.profile-work-icon{width:24px}.profile-details{grid-template-columns:1fr;gap:0}.profile-section{margin-top:21px}.profile-section h3,.profile-contact h3{font-size:25px}.profile-contact{display:grid;gap:12px}.profile-contact>div:last-child{justify-content:flex-start}.profile-experience p,.profile-skill p,.profile-experience>strong,.profile-skill>strong{font-size:12px}.npc-dialog{width:calc(100% - 20px);padding:15px 17px}.npc-dialog>p{font-size:22px}.npc-name{font-size:10px}.npc-actions>button{font-size:19px}.close-button{min-width:68px;min-height:34px;font-size:18px}}
@media(max-width:365px){.dock-controls{gap:6px}.game-dock{padding-inline:6px}.game-dock .dpad{grid-template-columns:repeat(3,27px)}.dock-actions{min-width:85px}.dock-nav .nav,.dock-nav .nav:last-child{font-size:19px}.dock-nav .nav-count{display:none}.world-status{font-size:12px}.topbar .brand,.has-started .topbar .brand{max-width:175px;padding-inline:7px}.profile-controls{gap:7px}.season-control select{font-size:16px}.dock-tool,.world-options>summary{font-size:15px}}
/* Place panels use semantic subheadings beneath Projects at this stop. */
.progress-project h4{font:32px/1.1 var(--game-font);margin:17px 0 11px;color:#315765}
@media(max-width:560px){.progress-project h4{font-size:29px}}

/* Clear profile entry, nearby conversations, and contained world options. */
html,body{max-width:100%;overflow-x:clip}
.topbar{min-width:0}.topbar .brand,.has-started .topbar .brand{min-width:0;max-width:calc(100% - 100px);gap:8px}
.brand>span:nth-child(2){min-width:0}.brand-cue{display:flex;align-items:center;gap:5px;margin-left:4px;padding-left:9px;border-left:1px solid #afc2b4;color:#2b6272;font:17px/1 var(--game-font);white-space:nowrap}
.brand-cue svg{width:20px;height:22px;flex-shrink:0;fill:#f2dfac;stroke:#315d6b;stroke-width:1.6;stroke-linejoin:round}.brand:hover .brand-cue{text-decoration:underline;text-underline-offset:3px}
.world-status{min-width:0;overflow-wrap:anywhere}
.game-dock{box-sizing:border-box;max-width:calc(100vw - 16px)}
.dock-nav{grid-template-columns:1.25fr .85fr 1fr 1.05fr;min-width:0}.dock-nav .nav{min-width:0;overflow-wrap:anywhere}
.dock-options{min-width:0;flex-shrink:1}.dock-tools{min-width:0}.world-options{min-width:0}.world-options>summary{white-space:nowrap}
.world-options-menu{box-sizing:border-box;width:220px;max-width:calc(100vw - 32px);max-height:calc(100dvh - var(--dock-height) - 28px);overflow-y:auto;overscroll-behavior:contain}
.world-options-menu .season-control{display:grid;grid-template-columns:1fr;gap:5px;font-size:18px;padding-bottom:7px;border-bottom:1px solid #b9cbbb}.world-options-menu .season-control select{width:100%;min-width:0;min-height:38px}
.game-dock .interact-prompt[hidden]{display:flex;visibility:hidden;pointer-events:none}
.npc-talk-button{position:absolute;z-index:9;display:flex;align-items:center;justify-content:center;min-height:39px;box-sizing:border-box;padding:8px 11px;border:2px solid #264e5f;border-bottom-width:4px;border-radius:5px;background:#fff7d5;color:#274f60;box-shadow:0 3px 0 #213f4935;font:21px/1.05 var(--game-font);cursor:pointer;text-align:center;overflow-wrap:anywhere;touch-action:manipulation}
.npc-talk-button[hidden]{display:none}.npc-talk-button:hover{background:#ffe5a0}.npc-talk-button:focus-visible{outline:3px solid #225f91;outline-offset:3px}
.pet-wolvy-button{position:absolute;z-index:8;display:block;box-sizing:border-box;min-width:0;min-height:0;margin:0;padding:0;border:0;border-radius:3px;background:transparent;box-shadow:none;touch-action:manipulation}
.pet-wolvy-button[hidden]{display:none}.pet-wolvy-button:hover,.pet-wolvy-button:active,.pet-wolvy-button.is-happy{background:transparent;transform:none;filter:none}.pet-wolvy-button:focus-visible{outline:2px solid #ffdb65;outline-offset:3px;box-shadow:0 0 0 5px #243b50}.pet-wolvy-button:disabled{opacity:1}
.pet-wolvy-label{position:absolute;display:flex;align-items:center;justify-content:center;gap:5px;width:96px;height:30px;box-sizing:border-box;border:2px solid #8c695b;border-radius:4px;background:#fff6dc;color:#664b43;box-shadow:0 2px 0 #243c4129;font:600 11px/1.2 var(--sans,system-ui,sans-serif);white-space:nowrap;pointer-events:none;opacity:0;visibility:hidden}
.pet-wolvy-label>span{color:#bd4866;font:17px/1 Georgia,serif}.pet-wolvy-button:is(:hover,:focus-visible):not(.label-obscured) .pet-wolvy-label{opacity:1;visibility:visible}.pet-wolvy-button.is-happy .pet-wolvy-label{background:#ffe2dc}
/* Site-only pixel cursors. Text editing and disabled controls retain native affordances. */
:root{--world-cursor:url('assets/cursors/world-arrow.svg') 2 1,default;--world-pointer:url('assets/cursors/world-pointer.svg') 11 1,pointer}
html,body,#world{cursor:var(--world-cursor)}
body :is(a[href],button:not(:disabled),[role="button"],summary,select,input[type="checkbox"],input[type="radio"]){cursor:var(--world-pointer)!important}
body :is(button:disabled,[aria-disabled="true"]){cursor:not-allowed!important}
body :is(textarea,[contenteditable="true"],input:not([type]),input[type="text"],input[type="search"],input[type="email"],input[type="password"],input[type="url"],input[type="tel"],input[type="number"]){cursor:text!important}
.panel-shell,.panel-body,.panel-header,.profile-welcome{min-width:0;max-width:100%;box-sizing:border-box}.panel-body{overflow-wrap:anywhere;overflow-x:hidden}.panel-header{gap:10px;align-items:center;flex-wrap:wrap}.panel-header>div{display:flex;align-items:center;justify-content:flex-end;gap:8px;min-width:0;flex:1}.panel-header .eyebrow{min-width:0;overflow-wrap:anywhere}.panel-header .panel-back{min-width:0;max-width:100%;min-height:36px;padding:5px 9px;border:1px solid #96aca5;border-radius:3px;background:#eff2e2;text-align:left;overflow-wrap:anywhere;line-height:1.05;cursor:pointer}.panel-header .close-button{flex-shrink:0}.contact-box>a{overflow-wrap:anywhere}.profile-primary-actions,.profile-details,.profile-work-grid,.skills-grid,.architecture,.dex-grid{min-width:0}.profile-primary-actions>*{min-width:0}.npc-dialog{box-sizing:border-box;max-width:calc(100vw - 20px);overflow-x:hidden;overflow-wrap:anywhere}
.travel-east .travel-bus{animation-name:bus-east}.travel-east .travel-bus img{transform:scaleX(-1)}.travel-west .travel-bus{animation-name:bus-west}.travel-west .travel-bus img{transform:none}
@keyframes bus-east{from{transform:translateX(-120%)}to{transform:translateX(115vw)}}
@keyframes bus-west{from{transform:translateX(115vw)}to{transform:translateX(-120%)}}
@media(max-width:760px){.dock-controls{gap:10px}.dock-options{max-width:195px}.dock-tools{gap:5px}.topbar .brand,.has-started .topbar .brand{gap:6px}.brand-cue{font-size:15px;padding-left:6px;margin-left:1px;gap:3px}.brand-cue svg{width:17px;height:20px}}
@media(max-width:520px){.topbar{inset:8px;gap:6px}.topbar .brand,.has-started .topbar .brand{max-width:calc(100% - 90px);padding:7px 8px;gap:6px}.topbar .brand-icon,.has-started .topbar .brand-icon{display:none}.topbar .brand small,.has-started .topbar .brand small{font-size:9px}.brand-cue{flex-direction:column;font-size:14px;gap:1px;padding-left:6px}.brand-cue svg{width:15px;height:17px}.world-status{max-width:38%;font-size:13px;padding:7px 6px}.world-status>span:last-child{font-size:11px}.dock-controls{gap:7px}.dock-options{max-width:112px}.dock-tools{display:grid;grid-template-columns:1fr;gap:7px}.dock-tool,.world-options>summary{min-height:34px;font-size:17px;padding:5px}.dock-nav .nav,.dock-nav .nav:last-child{font-size:20px;gap:3px;white-space:nowrap}.dock-actions{min-width:0;flex:1}.game-dock .interact-prompt{min-width:0;word-break:normal}.panel-header{padding:8px 10px;gap:7px}.panel-header>.eyebrow{flex-basis:100%;font-size:17px}.panel-header>div{justify-content:space-between}.panel-header .panel-back{font-size:19px}.npc-talk-button{font-size:19px;min-height:38px}.profile-section-heading{flex-wrap:wrap;gap:2px}.profile-contact a,.profile-contact button{min-width:0}}
@media(max-width:365px){.dock-controls{gap:5px}.dock-options{max-width:94px}.game-dock .dpad{grid-template-columns:repeat(3,25px);grid-template-rows:repeat(3,29px);gap:2px}.dock-nav{gap:3px}.dock-nav .nav,.dock-nav .nav:last-child{font-size:17px;padding-inline:2px}.dock-tool,.world-options>summary{font-size:15px}.game-dock .dock-action{font-size:18px;padding:5px}.game-dock .run-button{min-width:0}.game-dock .interact-prompt{font-size:15px;gap:3px}.topbar .brand,.has-started .topbar .brand{font-size:8px;padding-inline:6px}.brand-cue{font-size:13px}.topbar .brand small,.has-started .topbar .brand small{font-size:8px}.world-status{font-size:11px}.world-status>span:last-child{font-size:10px}.profile-intro{grid-template-columns:1fr}.profile-monogram{display:none}.profile-primary-actions{grid-template-columns:1fr}.profile-primary-actions button{font-size:12px}.panel-body .profile-welcome h2{font-size:28px}}

/* A short profile overview, with mobile sections instead of smaller copy. */
.profile-compact .profile-intro{grid-template-columns:62px minmax(0,1fr);gap:19px}.profile-compact .profile-monogram{width:62px;height:66px;font-size:35px}.panel-body .profile-compact h2{font-size:37px}.profile-compact .profile-title{font-size:21px;margin-bottom:9px}.profile-compact .profile-bio{font-size:13px;line-height:1.6}.profile-compact .profile-primary-actions{margin:19px 0 11px}.profile-compact .profile-controls{padding:8px 12px}.profile-compact .profile-section{margin-top:18px}.profile-compact .profile-section h3{margin-bottom:9px}.profile-compact .profile-work{min-height:93px;padding:11px 10px}.profile-compact .profile-work strong{font-size:25px}.profile-compact .profile-work-icon{font-size:21px}.profile-experience-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:15px 0 12px}.profile-experience-row>div{display:grid;gap:4px;padding:9px 11px;border-left:3px solid #90afa0;background:#e9efdf}.profile-experience-row span{font-size:12px;font-weight:650;line-height:1.4;color:#355966}.profile-experience-row small{font-size:10px;color:#637c70}.profile-skill-row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.profile-skill-row>span{font-size:10px;line-height:1.6;color:#5a7369}.profile-skill-row strong{display:block;font-size:11px;color:#3d615f}.profile-compact .profile-contact{margin-top:15px;padding-top:13px}.profile-tabs{display:none}
.game-dock .run-button{background:#edf0df;border-color:#95aa9b;color:#385a60}.game-dock .run-button[aria-pressed="true"],.game-dock .run-button.is-running,.game-dock .run-button:active{background:#ffdc67;border-color:#a18434;color:#4e481f;box-shadow:inset 0 0 0 1px #fff0a4}
.game-dock .dpad button.is-pressed,.game-dock .dpad button:active{background:#ffdc67;border-color:#a18434;color:#4e481f;border-bottom-width:1px;transform:translateY(1px)}
button:active,.world-options>summary:active{filter:brightness(1.08)}.dock-nav .nav:active,.dock-tool:active,.world-options>summary:active,.npc-talk-button:active{background:#ffe08a;color:#405035}.profile-work:active,.campus-place:active,.dex-card:active,.secondary-button:active{background:#f4e4a5;border-color:#a78d47}
@media(max-width:520px){dialog[data-view="welcome"]{max-height:94dvh}.profile-tabs{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin:0 0 18px}.profile-tabs button{font:19px var(--game-font);min-height:36px;border:1px solid #a9bba8;background:#e7eddb;color:#3c626c;border-radius:3px;cursor:pointer}.profile-tabs button[aria-pressed="true"]{background:#315f71;color:#fff6d8;border-color:#284d5d}.profile-compact[data-profile-tab="intro"] .profile-more{display:none}.profile-compact[data-profile-tab="work"] .profile-intro,.profile-compact[data-profile-tab="work"] .profile-controls{display:none}.profile-compact .profile-intro{grid-template-columns:1fr;gap:0}.profile-compact .profile-monogram{display:none}.panel-body .profile-compact h2{font-size:31px}.profile-compact .profile-title{font-size:21px}.profile-compact .profile-bio{font-size:13px;line-height:1.6}.profile-compact .profile-primary-actions{grid-template-columns:1fr 1fr;gap:7px;margin-top:17px}.profile-compact .profile-primary-actions .primary-link{grid-column:1/-1}.profile-compact .profile-primary-actions button{font-size:12px;min-height:40px}.profile-compact .profile-controls{font-size:10px;gap:12px;padding:10px}.profile-compact .profile-work{min-height:0;padding:9px 11px}.profile-compact .profile-work-grid{gap:6px}.profile-compact .profile-work>span:nth-child(2){display:grid;grid-template-columns:1fr auto;align-items:center;gap:3px 8px}.profile-compact .profile-work small{grid-column:2;grid-row:1;font-size:8px}.profile-compact .profile-work strong{grid-column:1;grid-row:1;font-size:24px}.profile-compact .profile-work>span:nth-child(2)>span{grid-column:1/-1}.profile-experience-row{gap:7px;margin:12px 0}.profile-experience-row>div{padding:7px 8px}.profile-experience-row span{font-size:11px}.profile-skill-row{grid-template-columns:1fr;gap:7px}.profile-skill-row>span{font-size:11px}.profile-skill-row strong{display:inline;margin-right:6px;font-size:11px}.profile-compact .profile-contact{gap:10px;padding-top:12px}.profile-compact .profile-contact h3{font-size:23px}.profile-compact .profile-contact a,.profile-compact .profile-contact button{min-height:35px;padding:7px 10px;font-size:17px}.profile-compact .profile-section{margin-top:12px}.profile-compact .profile-section-heading>button{font-size:17px}}

/* Compact Help keeps labels intact and body copy in a readable text face. */
.help-content{max-width:720px;margin:auto;font-family:var(--sans,system-ui,sans-serif)}
.help-content .lede{font-size:15px;line-height:1.6}.help-grid{display:grid;gap:0;border:1px solid #b8c8b8;border-radius:4px;overflow:hidden;margin:22px 0 16px;background:#edf1e2}
.help-row{display:grid;grid-template-columns:92px minmax(0,1fr);align-items:start;gap:18px;padding:13px 16px;border-bottom:1px solid #c9d4c0}.help-row:last-child{border-bottom:0}
.help-row dt{font:650 14px/1.5 var(--sans,system-ui,sans-serif);color:#355865;white-space:nowrap;word-break:normal;overflow-wrap:normal}.help-row dd{font:400 14px/1.5 var(--sans,system-ui,sans-serif);margin:0;color:#52676b;word-break:normal;overflow-wrap:normal}.help-note{font:13px/1.6 var(--sans,system-ui,sans-serif);color:#5d736b}.help-content .settings-row{margin-top:18px}
.npc-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.npc-header .npc-name{margin:0;min-width:0;line-height:1.5}.npc-header .npc-close{display:grid;place-items:center;flex:0 0 35px;width:35px;height:35px;min-height:35px;padding:0;border:1px solid #97aca4;border-radius:3px;background:#f3f3df;color:#3b606b;font:30px/1 var(--game-font);cursor:pointer}.npc-header .npc-close:hover{background:#e2ead6}
.project-mention{font-weight:700;color:#285c70;background:#e7efdd;padding:0 .08em;border-radius:2px;box-decoration-break:clone;-webkit-box-decoration-break:clone}.npc-actions .project-mention,.npc-questions .project-mention{background:transparent;color:inherit;font-weight:700}
.works-in-progress{margin-top:34px;padding-top:25px;border-top:2px solid #aabeae;scroll-margin-top:18px}.works-in-progress>h3{font:30px/1.2 var(--game-font);color:#355d69;margin:0 0 12px}.works-in-progress>p{font-size:14px;line-height:1.65;color:#526a65}.current-work-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px;margin:20px 0}.current-work-item{padding:19px;border:1px solid #b4c7b3;background:#eaf0df;border-radius:4px}.current-work-item h4{font:27px/1.2 var(--game-font);margin:0 0 10px;color:#315967}.current-work-item p{font-size:13px;line-height:1.65;color:#536c64;margin:0 0 15px}.current-work-item .secondary-button{min-height:38px;padding:8px 12px}.next-directions{margin-top:22px;border-top:1px solid #bacdb7;padding-top:12px}.next-directions>summary{font:24px/1.3 var(--game-font);padding:8px 0;cursor:pointer;color:#3e6470}.next-directions .interest-grid{margin-top:15px}.next-directions>h4{font:23px/1.3 var(--game-font);color:#456a69;margin:22px 0 13px}
@media(max-width:520px){.help-content .lede{font-size:14px}.help-grid{margin-top:18px}.help-row{grid-template-columns:70px minmax(0,1fr);gap:12px;padding:12px}.help-row dt,.help-row dd{font-size:13px;line-height:1.6}.current-work-grid{grid-template-columns:1fr;gap:11px}.current-work-item{padding:16px}.npc-header{align-items:flex-start;gap:9px}.npc-header .npc-name{padding-top:8px}.npc-header .npc-close{flex-basis:34px;width:34px;height:34px}}

/* Nearby-place actions stay inside their allotted space. */
.dock-controls,.dock-actions,.dock-options{min-width:0}.dock-actions{overflow:visible}.game-dock .interact-prompt{min-width:0;overflow:visible;gap:7px}.game-dock .interact-prompt kbd{flex-shrink:0}.game-dock #interact-label{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:1.2}.game-dock .interact-prompt.is-ready{background:#ffdf78;border-color:#b29a4d;color:#4d4b2b;opacity:1}.game-dock .interact-prompt:disabled{background:#e6ecdf;border-color:#a9b7a6;color:#62776d}
.dock-nav a.nav{text-decoration:none}.profile-primary-actions>a{display:flex;align-items:center;justify-content:center;min-height:45px;padding:11px 14px;font-size:13px;text-align:center;cursor:pointer;text-decoration:none;box-sizing:border-box}
@media(max-width:520px){.game-dock .interact-prompt{gap:4px}.profile-primary-actions>a{font-size:12px;min-height:40px;padding:8px 5px}}

/* A flat, smooth bus pass keeps its lettering upright in both directions. */
.travel-transition{--bus-width:clamp(180px,32vw,288px);background:#193e5bee;animation:travel-fade 1.7s ease-in-out both}
.travel-stripes{inset:62% 0 auto;height:5px;border:0;background:repeating-linear-gradient(90deg,#ffdb66 0 25px,transparent 25px 49px);transform:none;opacity:.7}
.travel-bus{display:block;top:47%;left:0;width:var(--bus-width);gap:0;transform:translateY(-50%);animation:bus-east 1.6s cubic-bezier(.35,0,.65,1) both}
.travel-bus .travel-bus-art{display:block;position:relative;width:100%;aspect-ratio:2/1}
.travel-bus .travel-bus-art img{display:block;width:100%;height:100%;max-width:none;image-rendering:pixelated;filter:drop-shadow(0 4px 0 #102e42)}
.travel-bus .travel-bus-lettering{position:absolute;top:58.3333%;left:31.25%;width:52.0833%;height:16.6667%;display:flex;align-items:center;justify-content:center;background:#253b60;color:#f7cf52;font:clamp(15px,2.6vw,24px)/1 var(--game-font);letter-spacing:1px;text-shadow:none;white-space:nowrap;box-sizing:border-box}
.travel-east .travel-bus-lettering{left:16.6667%}.travel-east .travel-bus{animation-name:bus-east}.travel-west .travel-bus{animation-name:bus-west}.travel-east .travel-bus-art img{transform:scaleX(-1)}.travel-west .travel-bus-art img{transform:none}
.travel-destination{max-width:calc(100% - 32px);box-sizing:border-box;margin:0 16px 12%;padding:9px 18px;font-size:26px;text-align:center}
@keyframes bus-east{from{left:calc(0px - var(--bus-width) - 20px)}to{left:calc(100% + 20px)}}
@keyframes bus-west{from{left:calc(100% + 20px)}to{left:calc(0px - var(--bus-width) - 20px)}}
@keyframes travel-fade{0%,100%{opacity:0}10%,88%{opacity:1}}
@media(prefers-reduced-motion:reduce){.travel-transition{display:none}.travel-bus{animation:none}}
/* Project-first conversations keep questions and answers readable. */
.npc-dialog #npc-text{font:14px/1.65 var(--sans,system-ui,sans-serif);color:#48616a;margin:14px 0;white-space:pre-line}
.npc-topic-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin:17px 0}.npc-topic-list [data-npc-topic]{min-width:0;min-height:66px;padding:13px;text-align:left;background:#e7edde;border:2px solid #a7bcad;border-radius:4px;color:#345d6b;font:21px/1.2 var(--game-font);cursor:pointer}.npc-topic-list [data-npc-topic]:hover{border-color:#6b8f8a;background:#fff0b9}.npc-topic-list [data-npc-topic] strong{display:block;font-weight:500}.npc-topic-list [data-npc-topic] small{display:block;font:11px/1.5 var(--sans,system-ui,sans-serif);color:#64786d;margin-top:6px}
.npc-topic-title{font:27px/1.25 var(--game-font);color:#315b69;margin:17px 0 11px}.npc-topics-back{font:18px/1.2 var(--game-font);min-height:35px;padding:6px 10px;text-align:left;border:1px solid #a8bdac;background:#eef1e0;border-radius:3px;color:#3d6570;cursor:pointer}
.npc-questions button{font:13px/1.6 var(--sans,system-ui,sans-serif);padding:11px 13px;border-width:1px}.npc-questions button::before{font-size:11px}.npc-questions button[aria-pressed="true"]{background:#fff0b9;border-color:#b7a45e}
.project-mention{color:#315d6c;background:#fff0bb}.npc-actions .project-mention,.npc-questions .project-mention{background:transparent}
@media(max-width:520px){.travel-destination{font-size:23px;padding:9px 14px}.npc-topic-list{grid-template-columns:1fr;gap:7px}.npc-topic-list [data-npc-topic]{min-height:52px;padding:11px;font-size:21px}.npc-dialog #npc-text{font-size:13px;line-height:1.65}.npc-questions button{font-size:13px;line-height:1.6}.npc-topic-title{font-size:25px}.bus-stop{justify-content:center}}

/* The generated portrait replaces the monogram and remains visible on mobile. */
.profile-portrait{display:block;object-fit:contain;image-rendering:pixelated;flex-shrink:0;background:#e4ecdb;border:2px solid #76978e;border-radius:4px;box-sizing:border-box}
.topbar .brand-portrait{width:36px;height:38px;padding:1px;border-width:1px}.profile-compact .profile-intro{grid-template-columns:76px minmax(0,1fr)}.profile-compact .profile-intro>.profile-portrait{width:76px;height:80px;padding:3px;background:#e6edda;box-shadow:3px 3px 0 #b5c9ae}
@media(max-width:760px){.topbar .brand-portrait{width:30px;height:33px}}
@media(max-width:520px){.topbar .brand-portrait{display:block;width:27px;height:31px}.topbar .brand,.has-started .topbar .brand{gap:5px}.brand-cue{padding-left:5px}.profile-compact .profile-intro{grid-template-columns:56px minmax(0,1fr);gap:13px}.profile-compact .profile-intro>.profile-portrait{display:block;width:56px;height:62px;padding:2px}.panel-body .profile-compact h2{font-size:29px}.profile-compact .profile-title{font-size:19px}}
@media(max-width:365px){.topbar .brand-portrait{width:24px;height:29px}.topbar .brand,.has-started .topbar .brand{padding-inline:5px;gap:4px}.brand-cue{font-size:12px;padding-left:4px}.profile-compact .profile-intro{grid-template-columns:49px minmax(0,1fr);gap:11px}.profile-compact .profile-intro>.profile-portrait{width:49px;height:56px}.panel-body .profile-compact h2{font-size:27px}}

/* Course history stays easy to scan across terms. */
.course-group{margin:24px 0}.course-group>h3{font:28px/1.2 var(--game-font);color:#315765;margin:0 0 10px}.course-meta{font:12px/1.5 var(--body-font,Arial,sans-serif);color:#65776d}.campus-place .course-meta{font-size:11px;margin-top:5px}#course-search{width:100%;min-width:0;padding:12px;border:2px solid #a9bba8;border-radius:4px;background:#fffef1;font:15px/1.4 var(--body-font,Arial,sans-serif)}#course-count{font-size:13px;color:#5b7166}

/* Narrow menu and panels: labels stay inside their controls, taps are at least 44px, and focus stays visible on the cream panels. */
.panel-shell :is(button,a,input,summary,select):focus-visible{outline:3px solid #1d4e6e;outline-offset:2px}
@media(max-width:560px){
  .panel-shell{max-height:calc(93dvh - 16px)}
}
@media(max-width:520px){
  .dock-nav .nav,.dock-nav .nav:last-child{min-height:44px;padding:6px 3px;font-size:18px;line-height:1.05;white-space:normal;overflow-wrap:anywhere}
  .dock-tool,.world-options>summary{min-height:44px;white-space:normal;line-height:1.05}
  .world-options>summary{min-width:0;justify-content:center;text-align:center}
  .close-button,.panel-header .panel-back,.profile-tabs button,.filter,.profile-primary-actions button,.profile-primary-actions>a,.profile-section-heading>button,.profile-contact a,.profile-contact button,.current-work-item .secondary-button,.npc-topics-back,.npc-actions>button,.npc-questions button{min-height:44px}
  .profile-compact .profile-primary-actions button,.profile-compact .profile-contact a,.profile-compact .profile-contact button{min-height:44px}
  .npc-header .npc-close{width:44px;height:44px;min-width:44px;min-height:44px;flex-basis:44px}
  .help-content .settings-row{min-height:44px}
  .help-content .settings-row input{width:24px;height:24px;min-width:24px;min-height:24px}
}
@media(max-width:365px){
  .dock-nav .nav,.dock-nav .nav:last-child{font-size:17px;padding-inline:2px}
}

/* Thumb controls. Direction targets are 48px on touch, narrow, and short landscape.
   measureDock reserves the dock's full footprint, including its bottom safe area. */
#game-dock .dock-controls{display:grid;grid-template-columns:max-content minmax(0,1fr) auto;grid-template-areas:"nav nav nav" "move actions tools";align-items:center;column-gap:16px;row-gap:8px;padding-top:0}
#game-dock .dock-nav{grid-area:nav;width:100%;min-width:0}
#game-dock .dock-movement{grid-area:move;justify-self:start;min-width:max-content;flex-shrink:0}
#game-dock .dock-actions{grid-area:actions;justify-self:stretch;width:min(340px,100%);max-width:340px;min-width:0;overflow:visible}
#game-dock .dock-options{grid-area:tools;justify-self:end;min-width:0;max-width:240px}
#game-dock{overflow:visible}
#game-dock .interact-prompt{overflow:visible;min-width:0}
#game-dock #interact-label{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#run-button{touch-action:none;user-select:none}
#run-button span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#game-dock :is(button,summary,select,a):focus-visible{outline:3px solid #236d95;outline-offset:2px;z-index:1}

@media (max-width:520px), (pointer:coarse), ((orientation:landscape) and (max-height:430px)){
  :root{--dock-safe-top:env(safe-area-inset-top,0px);--dock-safe-right:env(safe-area-inset-right,0px);--dock-safe-bottom:env(safe-area-inset-bottom,0px);--dock-safe-left:env(safe-area-inset-left,0px)}
  #game-dock{
    left:max(8px,var(--dock-safe-left));
    right:max(8px,var(--dock-safe-right));
    bottom:0;
    transform:none;
    width:auto;
    max-width:none;
    margin:0;
    padding-bottom:calc(8px + var(--dock-safe-bottom));
    box-sizing:border-box;
    overflow:visible;
  }
  #game-dock .dpad{
    grid-template-columns:repeat(3,48px);
    grid-template-rows:repeat(3,48px);
    grid-template:repeat(3,minmax(48px,48px))/repeat(3,minmax(48px,48px));
    gap:4px;
    width:152px;
    height:152px;
    min-width:152px;
    min-height:152px;
    flex-shrink:0;
  }
  #game-dock .dpad button,
  #game-dock .dpad .pad-center{
    box-sizing:border-box;
    width:48px;
    height:48px;
    min-width:48px;
    min-height:48px;
  }
  #game-dock .dock-action,
  #npc-talk{min-width:48px;min-height:48px}
  #game-dock .dock-tool,
  #game-dock .world-options>summary,
  #game-dock .world-options-menu>button,
  #game-dock .dock-zoom button,
  #game-dock .season-control select,
  #game-dock .dock-nav .nav,
  #game-dock .dock-nav .nav:last-child{min-height:44px;min-width:0}
  #game-dock .dock-zoom button{width:44px;min-width:44px}
  #game-dock .world-options-menu{max-width:min(220px,calc(100vw - var(--dock-safe-left) - var(--dock-safe-right) - 24px))}
  .topbar{
    inset:max(8px,var(--dock-safe-top)) max(8px,var(--dock-safe-right)) auto max(8px,var(--dock-safe-left));
    display:flex;
    align-items:flex-start;
    justify-content:space-between;
    gap:8px;
    min-width:0;
    width:auto;
  }
  .topbar .brand,
  .has-started .topbar .brand{flex:1 1 auto;min-width:0;max-width:calc(100% - 108px)}
  .topbar .brand>span:not(.brand-cue){min-width:0;overflow:hidden;text-overflow:ellipsis}
  .world-status{flex:0 1 auto;min-width:0;max-width:46%;overflow:hidden}
  .world-status>span,
  #location{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}
  .dex-tools input,
  #course-search,
  #campus-search,
  #project-search{font-size:16px}
  .game-shell .canvas-wrap{min-height:96px}
}

@media (max-width:520px), (pointer:coarse) and (max-width:760px){
  :root{--dock-height:280px}
  #game-dock .dock-controls{
    grid-template-columns:max-content minmax(0,1fr);
    grid-template-areas:"nav nav" "move actions" "move tools";
    align-items:stretch;
    column-gap:8px;
    row-gap:8px;
  }
  #game-dock .dock-actions{
    display:grid;
    grid-template-columns:1fr;
    grid-template-rows:repeat(2,minmax(48px,1fr));
    width:100%;
    max-width:none;
    min-width:0;
    gap:6px;
  }
  #game-dock .dock-options,
  #game-dock .dock-tools{max-width:none;min-width:0;width:100%}
  #game-dock .dock-tools{display:grid;grid-template-columns:auto minmax(0,1fr);gap:6px}
  #game-dock .run-button{min-width:0;width:100%;flex-direction:row;justify-content:center}
  #game-dock .interact-prompt{min-width:0;width:100%}
  #game-dock .world-options>summary{white-space:normal;overflow-wrap:anywhere;text-align:center}
  #game-dock .dock-nav .nav,
  #game-dock .dock-nav .nav:last-child{white-space:normal;overflow-wrap:anywhere;line-height:1.05}
}

@media (pointer:coarse) and (min-width:761px) and (min-height:431px){
  :root{--dock-height:280px}
  #game-dock .dock-controls{
    grid-template-columns:max-content minmax(180px,1fr) minmax(150px,240px);
    grid-template-areas:"nav nav nav" "move actions tools";
    align-items:center;
  }
  #game-dock .dock-actions{
    display:grid;
    grid-template-columns:repeat(2,minmax(48px,1fr));
    width:100%;
    max-width:none;
    gap:8px;
  }
  #game-dock .dock-action{min-height:48px}
  #game-dock .movement-hint{display:none}
}

@media (pointer:coarse){
  #game-dock .movement-hint,
  #game-dock .dock-action kbd,
  #npc-talk kbd{
    position:absolute;
    width:1px;
    height:1px;
    margin:-1px;
    padding:0;
    overflow:hidden;
    clip:rect(0,0,0,0);
    clip-path:inset(50%);
    white-space:nowrap;
    border:0;
    pointer-events:none;
  }
  #game-dock .dock-action{position:relative}
}

@media (orientation:landscape) and (max-height:430px){
  :root{--dock-height:210px}
  #game-dock{
    padding-top:4px;
    padding-bottom:calc(4px + env(safe-area-inset-bottom,0px));
  }
  #game-dock .dock-controls{
    grid-template-columns:max-content minmax(0,1fr) auto;
    grid-template-rows:auto auto;
    grid-template-areas:"move nav tools" "move actions tools";
    align-items:stretch;
    column-gap:8px;
    row-gap:4px;
  }
  #game-dock .dock-movement{grid-area:move;align-self:center}
  #game-dock .dock-nav{
    grid-area:nav;
    align-self:end;
    border-bottom:0;
    padding-bottom:0;
    gap:4px;
  }
  #game-dock .dock-actions{
    grid-area:actions;
    display:grid;
    grid-template-columns:repeat(2,minmax(48px,1fr));
    grid-template-rows:minmax(48px,1fr);
    align-self:stretch;
    width:100%;
    max-width:none;
    min-width:0;
    gap:6px;
  }
  #game-dock .dock-options{
    grid-area:tools;
    align-self:stretch;
    justify-self:end;
    width:auto;
    max-width:132px;
    min-width:0;
  }
  #game-dock .dock-tools{display:grid;grid-template-columns:1fr;gap:4px;height:100%}
  #game-dock .dock-tool,
  #game-dock .world-options>summary{min-height:44px;white-space:normal;overflow-wrap:anywhere;line-height:1.05}
  #game-dock .dock-nav .nav,
  #game-dock .dock-nav .nav:last-child{min-height:44px;padding:4px;font-size:16px;line-height:1.05;white-space:normal;overflow-wrap:anywhere}
  #game-dock .run-button,
  #game-dock .interact-prompt{min-width:0;width:100%;min-height:48px}
  .topbar .brand,
  .has-started .topbar .brand{min-height:0;padding:4px 6px}
  .topbar .brand-portrait{width:24px;height:24px}
  .world-status{padding:4px 6px;font-size:14px}
  .game-shell .canvas-wrap{min-height:96px}
}

@media (max-width:520px), (max-height:500px), (pointer:coarse){
  #panel[open]{
    display:flex;
    flex-direction:column;
    inset:calc(env(safe-area-inset-top,0px) + 6px) calc(env(safe-area-inset-right,0px) + 8px) calc(env(safe-area-inset-bottom,0px) + 6px) calc(env(safe-area-inset-left,0px) + 8px);
    box-sizing:border-box;
    overflow:hidden;
    max-height:calc(100dvh - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px) - 12px);
    width:min(980px,calc(100% - env(safe-area-inset-left,0px) - env(safe-area-inset-right,0px) - 16px));
    margin:auto;
  }
  #panel[open] .panel-shell{
    display:flex;
    flex-direction:column;
    flex:1 1 auto;
    min-height:0;
    max-height:none;
    margin:0;
    overflow:hidden;
  }
  #panel[open] .panel-header{flex-shrink:0;min-height:44px}
  #panel[open] .panel-body{
    flex:1 1 auto;
    min-height:0;
    overflow:auto;
  }
}
@media (max-width:520px), (max-height:500px){
  #panel[open] .panel-body{padding:12px}
  .npc-dialog{
    left:calc(env(safe-area-inset-left,0px) + 8px);
    right:calc(env(safe-area-inset-right,0px) + 8px);
    overflow:auto;
    overscroll-behavior:contain;
    max-height:calc(100dvh - var(--dock-height) - env(safe-area-inset-top,0px) - 12px);
    width:min(740px,calc(100% - env(safe-area-inset-left,0px) - env(safe-area-inset-right,0px) - 16px));
  }
  .help-grid{margin:12px 0}
  .help-row{padding:8px 10px}
  .help-row dt{white-space:normal}
  .profile-welcome,
  .profile-more,
  .help-content,
  .trainer-card,
  .trainer-stats{height:auto;max-height:none;overflow:visible;min-width:0}
}

.trainer-card{
  display:grid;
  grid-template-columns:auto minmax(0,1fr);
  gap:12px;
  align-items:center;
  box-sizing:border-box;
  min-width:0;
  max-width:100%;
  height:auto;
  max-height:none;
  overflow:visible;
  margin:0 0 12px;
  padding:10px;
  background:#fbf6df;
  border:3px solid #31404c;
  border-radius:4px;
  box-shadow:inset 0 0 0 3px #e1c86a,3px 3px 0 #25354733;
}
.trainer-card .profile-portrait{width:76px;height:80px}
.panel-body .trainer-card h2{
  font-family:var(--sans,system-ui,sans-serif);
  font-size:clamp(26px,5vw,36px);
  font-weight:750;
  letter-spacing:-.4px;
  line-height:1.12;
  margin:0 0 4px;
  overflow-wrap:anywhere;
}
.trainer-types{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0 0;min-width:0}
.trainer-type{
  display:inline-flex;
  align-items:center;
  gap:6px;
  min-height:26px;
  padding:2px 8px;
  border:2px solid #2d4a58;
  background:#e5f0c4;
  color:#234056;
  font:700 12px/1.2 var(--sans,system-ui,sans-serif);
  box-shadow:2px 2px 0 #25354733;
}
.trainer-type:nth-child(2n){background:#d5e6f3}
.trainer-stats{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:8px;
  margin:8px 0 0;
  min-width:0;
  height:auto;
  max-height:none;
  overflow:visible;
}
.trainer-stats>div,
.trainer-stats>li{
  display:grid;
  gap:2px;
  min-width:0;
  padding:6px 8px;
  background:#e7edde;
  border:2px solid #31404c;
  box-shadow:inset 0 0 0 1px #d7c56a;
}
.trainer-stats dt,
.trainer-stats span,
.trainer-stats dd,
.trainer-stats strong{
  min-width:0;
  margin:0;
  overflow-wrap:anywhere;
  font-family:var(--sans,system-ui,sans-serif);
}
.trainer-stats dt,
.trainer-stats span{font-size:11px;font-weight:650;line-height:1.3;color:#5a7369}
.trainer-stats dd,
.trainer-stats strong{font-size:14px;font-weight:750;line-height:1.3;color:#203e4c}
@media (max-width:520px), (max-height:430px){
  .trainer-card{grid-template-columns:56px minmax(0,1fr);gap:8px;padding:8px}
  .trainer-card .profile-portrait{width:56px;height:60px}
  .panel-body .trainer-card h2{font-size:26px}
}
@media (max-width:340px){
  .trainer-stats{grid-template-columns:1fr}
}

/* All work has section headings; category filters keep the same card grid. */
.dex-section{grid-column:1/-1;min-width:0}
.dex-section>h3{margin:8px 0 12px;padding-bottom:8px;border-bottom:2px solid #a9bba8;color:#315765;font:28px/1.2 var(--game-font)}
.dex-section-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px;min-width:0}
@media(max-width:620px){.dex-section-grid{grid-template-columns:1fr}}

/* Keep the complete desktop Trainerdex within the available page height. */
@media(min-width:761px){
  #panel[data-view="welcome"]{
    max-height:calc(100dvh - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px) - 12px);
  }
  #panel[data-view="welcome"] .panel-shell{
    min-height:0;
    max-height:calc(100dvh - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px) - 30px);
  }
  #panel[data-view="welcome"] .panel-header{padding:6px 14px;min-height:0}
  #panel[data-view="welcome"] .panel-body{min-height:0;padding:12px 16px;overflow:auto}
  #panel[data-view="welcome"] .trainer-card{
    grid-template-columns:64px minmax(0,1fr);
    align-items:center;
    gap:12px;
    margin:0;
    padding:8px;
  }
  #panel[data-view="welcome"] .trainer-card>.profile-portrait{width:64px;height:68px;padding:2px}
  #panel[data-view="welcome"] .trainer-card>div{
    display:grid;
    grid-template-columns:minmax(0,1fr) minmax(220px,.72fr);
    gap:3px 14px;
    min-width:0;
  }
  #panel[data-view="welcome"] .profile-eyebrow{grid-column:1;grid-row:1;margin:0;font-size:10px;line-height:1.3}
  #panel[data-view="welcome"] .trainer-card h2{grid-column:1;grid-row:2;margin:0;font-size:30px;line-height:1.12;letter-spacing:-.4px}
  #panel[data-view="welcome"] .profile-title{grid-column:1;grid-row:3;margin:0;font-size:18px;line-height:1.2}
  #panel[data-view="welcome"] .profile-study{grid-column:1;grid-row:4;margin:0;font-size:12px;line-height:1.4}
  #panel[data-view="welcome"] .trainer-types{grid-column:2;grid-row:1/3;align-self:center;gap:5px;margin:0}
  #panel[data-view="welcome"] .trainer-type{gap:4px;margin:0;padding:2px 6px;font-size:11px;min-height:26px}
  #panel[data-view="welcome"] .trainer-stats{grid-column:2;grid-row:3/5;align-self:center;gap:5px;margin:0}
  #panel[data-view="welcome"] .trainer-stats>div{gap:1px;padding:4px 6px}
  #panel[data-view="welcome"] .profile-bio{grid-column:1/-1;grid-row:5;max-width:none;margin:3px 0 0;font-size:13px;line-height:1.4}
  #panel[data-view="welcome"] .profile-primary-actions{gap:8px;margin:8px 0 6px}
  #panel[data-view="welcome"] .profile-primary-actions>*{min-height:44px;padding:7px 10px;font-size:12px}
  #panel[data-view="welcome"] .profile-controls{gap:18px;padding:4px 10px;font-size:10px}
  #panel[data-view="welcome"] .profile-more{
    display:grid;
    grid-template-columns:minmax(0,1fr) minmax(0,1.4fr);
    gap:8px 14px;
    margin-top:8px;
  }
  #panel[data-view="welcome"] .profile-section{grid-column:1/-1;margin:0}
  #panel[data-view="welcome"] .profile-section h3{margin:0;font-size:24px}
  #panel[data-view="welcome"] .profile-work-grid{gap:8px}
  #panel[data-view="welcome"] .profile-work{min-height:66px;padding:6px 8px;gap:8px}
  #panel[data-view="welcome"] .profile-work>span:nth-child(2){gap:2px}
  #panel[data-view="welcome"] .profile-work strong{font-size:24px}
  #panel[data-view="welcome"] .profile-work-icon{font-size:20px}
  #panel[data-view="welcome"] .profile-experience-row{align-self:center;gap:8px;margin:0}
  #panel[data-view="welcome"] .profile-experience-row>div{gap:3px;padding:6px 8px}
  #panel[data-view="welcome"] .profile-experience-row span{font-size:11px;line-height:1.3}
  #panel[data-view="welcome"] .profile-skill-row{align-self:center;gap:8px;margin:0}
  #panel[data-view="welcome"] .profile-skill-row>span{font-size:10px;line-height:1.4}
  #panel[data-view="welcome"] .profile-contact{align-items:center;gap:12px;margin-top:8px;padding-top:8px}
  #panel[data-view="welcome"] .profile-contact h3{font-size:24px;margin:0}
  #panel[data-view="welcome"] .profile-contact p{line-height:1.3}
  #panel[data-view="welcome"] .profile-contact a,
  #panel[data-view="welcome"] .profile-contact button,
  #panel[data-view="welcome"] .profile-section-heading>button,
  #panel[data-view="welcome"] .close-button{min-height:44px}
}

/* Give the Trainerdex more room when the screen has the height for it. */
@media(min-width:761px) and (min-height:800px){
  #panel[data-view="welcome"] .panel-body{padding:20px 22px}
  #panel[data-view="welcome"] .profile-welcome{display:flex;flex-direction:column;justify-content:space-between;gap:12px;min-height:min(760px,calc(100dvh - 140px))}
  #panel[data-view="welcome"] .trainer-card{grid-template-columns:76px minmax(0,1fr);padding:12px;gap:16px}
  #panel[data-view="welcome"] .trainer-card>.profile-portrait{width:76px;height:80px}
  #panel[data-view="welcome"] .trainer-card h2{font-size:36px}
  #panel[data-view="welcome"] .profile-bio{margin-top:6px;font-size:14px;line-height:1.5}
  #panel[data-view="welcome"] .profile-primary-actions{margin:0}
  #panel[data-view="welcome"] .profile-more{gap:16px;margin-top:0}
  #panel[data-view="welcome"] .profile-work{min-height:84px;padding:10px}
  #panel[data-view="welcome"] .profile-experience-row span{font-size:12px}
  #panel[data-view="welcome"] .profile-skill-row>span{font-size:11px}
  #panel[data-view="welcome"] .profile-contact{margin-top:0;padding-top:12px}
}

/* Upright MBus label over the unchanged local bus image. */
.bus-stop-art{position:relative;display:block;width:192px;aspect-ratio:2/1}
.bus-stop .bus-stop-art img{display:block;width:100%;height:100%}
.bus-stop-lettering{position:absolute;top:58.3333%;left:31.25%;width:52.0833%;height:16.6667%;display:flex;align-items:center;justify-content:center;background:#253b60;color:#f7cf52;font:16px/1 var(--game-font);letter-spacing:1px;white-space:nowrap}
@media(max-width:560px){.bus-stop-art{width:96px}.bus-stop-lettering{font-size:8px;letter-spacing:0}}
