@import url('https://fonts.googleapis.com/css2?family=Manrope:wght@400;500;600;700&family=Playfair+Display:ital,wght@0,400;0,500;1,400&display=swap');
:root{font-family:Manrope,Arial,sans-serif;color:#f5f1e8;background:#849398}*{box-sizing:border-box}body{margin:0;overflow:hidden}#scene,canvas,.vignette{position:fixed;inset:0;width:100%;height:100%}.vignette{pointer-events:none;background:linear-gradient(90deg,rgba(17,30,35,.68),transparent 74%),linear-gradient(0deg,rgba(17,30,35,.55),transparent 23%,transparent 78%,rgba(17,30,35,.2))}header{position:fixed;top:0;left:0;right:0;padding:32px 42px;display:flex;align-items:center;gap:42px;z-index:3}.brand{font-weight:700;letter-spacing:6px;font-size:23px;color:inherit;text-decoration:none}.brand span{display:block;font-size:9px;letter-spacing:5px;margin-top:2px}.place{font-size:10px;letter-spacing:2px;border-left:1px solid #ffffff40;padding-left:30px}.place small{display:block;font-size:11px;letter-spacing:0;color:#e0e5e2;margin-top:7px}button{font:inherit;cursor:pointer;border:0}#menu{margin-left:auto;background:#ffffff14;border:1px solid #ffffff45;border-radius:50%;height:44px;width:44px;color:white;font-size:20px}main{position:absolute;left:8%;top:27%;z-index:2}.eyebrow{font-size:10px;letter-spacing:3px;color:#d2dcd7}h1{font-family:'Playfair Display',Georgia,serif;font-size:clamp(48px,5.9vw,88px);font-weight:400;line-height:1.1;margin:25px 0}h1 em{font-weight:400;color:#e9deca}main p{font-size:13px;line-height:1.9;color:#e1e5e2}#start{margin-top:25px;padding:19px 23px;border-radius:3px;background:#e9deca;color:#26383a;font-size:12px;font-weight:700;min-width:255px;text-align:left}#start span{float:right;font-size:20px;line-height:16px}.instructions{display:flex;gap:22px;margin-top:23px;font-size:9px;color:#c4ceca}main .note{font-size:9px;color:#aebbb5;margin-top:30px}footer{position:fixed;bottom:30px;left:42px;right:42px;display:flex;align-items:center;justify-content:space-between;z-index:3}.route{display:flex;align-items:center;gap:14px;font-size:8px;letter-spacing:1.5px}.line{height:1px;width:180px;background:#ffffff40;position:relative}.line i{position:absolute;height:1px;background:#e8d6b2;width:0}.line b{position:absolute;left:0;top:-3px;background:#e8d6b2;border-radius:50%;width:7px;height:7px}.companion{font-size:11px}.companion small{font-size:7px;display:block;letter-spacing:1.4px;color:#c5d0ca;margin:6px 0 0 15px}.dot{display:inline-block;width:5px;height:5px;background:#b9d7b7;border-radius:50%;margin-right:9px}#settings{position:absolute;right:30px;top:95px;width:310px;padding:25px;background:#172b30ed;border:1px solid #ffffff20;border-radius:7px;z-index:6;max-height:75vh;overflow:auto}h2{font-family:Georgia,serif;font-weight:400;margin-top:0}label{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:12px;margin:22px 0}input[type=range]{width:120px;accent-color:#dfd3bb}select{max-width:155px;background:#31464a;color:white;padding:7px;border:0;border-radius:3px}aside button{width:100%;padding:12px;margin:5px 0;background:#dfd3bb;color:#26383a;border-radius:3px}aside p,aside a,summary{font-size:11px;line-height:1.8;color:#bdcbc6}#crosshair{position:absolute;left:50%;top:50%;color:white;pointer-events:none}#toast{position:absolute;bottom:110px;left:50%;transform:translateX(-50%);font-size:13px;background:#20353bd9;border-radius:5px;padding:12px 20px;opacity:0;transition:opacity .3s;pointer-events:none;z-index:4}#toast.show{opacity:1}#loading{position:fixed;inset:0;background:#263b42;display:grid;place-items:center;font-size:13px;letter-spacing:2px;z-index:10}#mobile{display:none;position:fixed;left:20px;bottom:100px;text-align:center;z-index:4}#mobile button{width:45px;height:45px;margin:3px;background:#21363c99;color:white;border:1px solid #ffffff40;border-radius:5px;touch-action:none}body.walking main{display:none}body.walking .vignette{background:linear-gradient(0deg,#172c344a,transparent 15%)}@media(max-width:700px){header{padding:20px;gap:18px}.brand{font-size:16px;letter-spacing:4px}.brand span{font-size:7px}.place{padding-left:16px;font-size:8px;letter-spacing:1px}.place small{font-size:9px}main{left:7%;right:7%;top:25%}h1{font-size:46px}.desktop{display:none}footer{left:20px;right:20px;bottom:22px}.line{width:65px}.route{font-size:6px;gap:8px}.companion{font-size:9px}.companion small{font-size:6px}.instructions{gap:12px;font-size:8px}#settings{right:15px;top:80px;width:290px}body.walking #mobile{display:block}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto}}

body{user-select:none;-webkit-user-select:none;}

body:not(.walking) #richard-actions{display:none!important}

#music-player{position:fixed;left:24px;bottom:84px;z-index:22;display:flex;gap:12px;align-items:center;max-width:calc(100vw - 48px);padding:10px 14px;background:#20282cdd;border:1px solid #aaa6;border-radius:10px;color:#eee;font-size:12px;flex-wrap:wrap}#music-player button{padding:8px 12px;color:#eee;background:#394348;border:1px solid #ccc5;border-radius:6px;cursor:pointer}#music-player label{display:flex;align-items:center;gap:8px}#music-player [hidden]{display:none!important}#music-player input{width:90px}body:not(.walking) #music-player{display:none}

#mobile-actions,#rotate-hint{display:none}@media(pointer:coarse){body.walking #mobile-actions{display:flex;position:fixed;right:12px;bottom:16px;z-index:23;gap:5px;flex-wrap:wrap;width:210px;justify-content:flex-end}#mobile-actions button{padding:10px 9px;background:#263239dd;color:white;border:1px solid #ffffff55;border-radius:8px;touch-action:manipulation}#mobile{left:14px!important;right:auto!important;bottom:18px!important;touch-action:none}header{pointer-events:none}#menu{pointer-events:auto}footer{display:none}#music-player{left:12px;bottom:130px;font-size:10px;max-width:210px;padding:7px}#richard-actions{bottom:130px!important;right:12px!important}#scene canvas{touch-action:none}}@media(pointer:coarse) and (orientation:portrait){body.walking #rotate-hint{display:block;position:fixed;top:70px;left:15%;width:70%;padding:12px;background:#243138e8;color:#fff;text-align:center;z-index:30;border-radius:8px}}

#rest-button{position:fixed;right:24px;bottom:140px;z-index:24;padding:12px;color:white;background:#263239e8;border:1px solid #fff6;border-radius:8px}#rest-button[hidden]{display:none}

#pet-button{position:fixed;right:24px;bottom:96px;z-index:24;padding:10px;color:white;background:#263239e8;border:1px solid #fff6;border-radius:8px}#pet-button[hidden]{display:none}@media(pointer:coarse){#pet-button{display:none}}

#interaction-dock{position:fixed;right:18px;bottom:94px;z-index:40;display:flex;flex-direction:column;gap:10px;align-items:stretch;max-width:240px;max-height:calc(100dvh - 170px);overflow-y:auto;pointer-events:none}#interaction-dock>button,#interaction-dock button{pointer-events:auto}#interaction-dock #rest-button,#interaction-dock #pet-button,#interaction-dock #richard-actions{position:static!important;inset:auto!important;max-width:100%;margin:0}#interaction-dock #richard-actions{align-items:stretch!important}#interaction-dock [hidden]{display:none!important}body:not(.walking) #interaction-dock{display:none}#richard-native-mobile{display:none!important}@media(pointer:coarse){#interaction-dock{bottom:14px;right:12px;width:216px;gap:7px;max-height:calc(100dvh - 90px)}#interaction-dock #mobile-actions{position:static!important;inset:auto!important;width:100%!important;gap:6px}#interaction-dock #richard-actions{font-size:10px!important;gap:4px!important}#interaction-dock #pet-button,#interaction-dock #rest-button{display:none!important}#interaction-dock #richard-actions button{padding:7px 9px!important}#bus-board-button{bottom:16px!important;max-width:200px;font-size:12px!important}#bus-transit-hint{bottom:62px!important;max-width:200px!important;font-size:11px!important}}

body.cinema header,body.cinema footer,body.cinema #music-player,body.cinema #interaction-dock,body.cinema #bus-board-button,body.cinema #bus-transit-hint,body.cinema #crosshair,body.cinema #mobile{visibility:hidden!important}

/* Shared real-device / explicit touch preview layout. */
body.touch-controls.walking #mobile-actions{display:flex;position:fixed;right:12px;bottom:16px;z-index:23;gap:5px;flex-wrap:wrap;width:210px;justify-content:flex-end}body.touch-controls #mobile-actions button{padding:10px 9px;background:#263239dd;color:white;border:1px solid #ffffff55;border-radius:8px;touch-action:manipulation}body.touch-controls #mobile{left:14px!important;right:auto!important;bottom:18px!important;touch-action:none}body.touch-controls header{pointer-events:none}body.touch-controls #menu{pointer-events:auto}body.touch-controls footer{display:none}body.touch-controls #music-player{left:12px;bottom:130px;font-size:10px;max-width:210px;padding:7px}body.touch-controls #richard-actions{bottom:130px!important;right:12px!important}body.touch-controls #scene canvas{touch-action:none}
@media(orientation:portrait){body.touch-controls.walking #rotate-hint{display:block;position:fixed;top:70px;left:15%;width:70%;padding:12px;background:#243138e8;color:#fff;text-align:center;z-index:30;border-radius:8px}}
body.touch-controls #pet-button{display:none}
body.touch-controls #interaction-dock{bottom:14px;right:12px;width:216px;gap:7px;max-height:calc(100dvh - 90px)}body.touch-controls #interaction-dock #mobile-actions{position:static!important;inset:auto!important;width:100%!important;gap:6px}body.touch-controls #interaction-dock #richard-actions{font-size:10px!important;gap:4px!important}body.touch-controls #interaction-dock #pet-button,body.touch-controls #interaction-dock #rest-button{display:none!important}body.touch-controls #interaction-dock #richard-actions button{padding:7px 9px!important}body.touch-controls #bus-board-button{bottom:16px!important;max-width:200px;font-size:12px!important}body.touch-controls #bus-transit-hint{bottom:62px!important;max-width:200px!important;font-size:11px!important}
body.touch-controls.walking #mobile{display:block}body.touch-controls #mobile-actions button{min-height:44px}body.touch-controls header{padding:12px 16px;gap:18px}body.touch-controls .brand{font-size:16px}body.touch-controls .place{padding-left:14px}body.touch-controls #mobile-actions{pointer-events:auto}body.touch-controls #toast{bottom:155px;font-size:11px;max-width:45vw}
body.touch-controls.walking #mobile-actions{display:grid;grid-template-columns:1fr 1fr}body.touch-controls #mobile-actions button{font-size:11px;padding:8px 5px;min-width:0}body.touch-controls #mobile-actions button:last-child{grid-column:2}
body.touch-controls #mobile{width:132px;bottom:14px!important;user-select:none;-webkit-user-select:none}#move-stick{position:relative;width:122px;height:122px;border:1px solid #fff5;border-radius:50%;background:radial-gradient(circle,#23323938,#23323990);touch-action:none}#move-stick i{position:absolute;left:39px;top:39px;width:44px;height:44px;border-radius:50%;border:1px solid #ffffff80;background:#e9deca77;box-shadow:0 3px 12px #0004;pointer-events:none}#move-stick .stick-cross{position:absolute;inset:0;display:grid;place-items:center;color:#fff5;font-size:44px;pointer-events:none}#mobile small{font-size:8px;letter-spacing:2px;color:#fff9}body.touch-controls #mobile-actions{width:100%}body.touch-controls #interaction-dock{width:196px}@media(max-height:450px){body.touch-controls #mobile-actions button{min-height:38px;padding:6px 4px}body.touch-controls #music-player{bottom:160px}}
#fullscreen-button{margin-left:auto;width:42px;height:42px;flex-shrink:0;border:1px solid #fff6;border-radius:50%;background:#25323999;color:white;font-size:23px;pointer-events:auto}#fullscreen-button+#menu{margin-left:0}body.touch-controls header{gap:10px;padding-left:max(12px,env(safe-area-inset-left));padding-right:max(12px,env(safe-area-inset-right))}body.touch-controls #mobile{left:max(14px,env(safe-area-inset-left))!important}body.touch-controls #interaction-dock{right:max(12px,env(safe-area-inset-right))}body.cinema #fullscreen-button{visibility:hidden}@media(max-width:450px){body.touch-controls .place{max-width:150px}body.touch-controls .brand{font-size:12px;letter-spacing:2px}body.touch-controls #fullscreen-button{width:36px;height:36px}}
/* Compact mobile HUD: leave the street visible; panels open only on request. */
body.touch-controls header{padding-top:max(8px,env(safe-area-inset-top));padding-bottom:6px;gap:7px;align-items:center}body.touch-controls header .brand{font-family:Manrope,Arial,sans-serif;font-size:12px!important;letter-spacing:.25px!important;font-weight:600;line-height:1.2;white-space:nowrap;margin-right:auto}body.touch-controls header .place{display:none!important}body.touch-controls header #menu,body.touch-controls header #fullscreen-button,body.touch-controls #music-drawer-toggle{width:36px;height:36px;min-width:36px;border-radius:50%;font-size:20px;pointer-events:auto;margin-left:0}#music-drawer-toggle{display:none}body.touch-controls #music-drawer-toggle{display:block;color:#eee;border:1px solid #fff5;background:#25323999}body.touch-controls[data-headphones="on"] #music-drawer-toggle{color:#eed5a5;border-color:#eed5a5}body.touch-controls:not(.music-open) #music-player{display:none!important}body.touch-controls.music-open #music-player{display:flex!important;position:fixed;top:52px;bottom:auto!important;left:max(12px,env(safe-area-inset-left));width:220px;max-width:calc(100vw - 28px);padding:15px 12px 12px;gap:8px;background:#20282cf2;z-index:45}body.touch-controls #music-player label{margin:3px 0;font-size:11px}body.touch-controls #music-player>span{font-size:11px;width:100%}#music-drawer-close{position:absolute;right:2px;top:2px;font-size:19px;padding:0 6px!important;border:0!important;background:transparent!important}#actions-drawer-toggle{display:none}body.touch-controls.walking #actions-drawer-toggle{display:block;position:fixed;right:max(12px,env(safe-area-inset-right));bottom:max(16px,env(safe-area-inset-bottom));width:48px;height:48px;border-radius:50%;background:#233239bb;border:1px solid #fff6;color:#eee;font-size:24px;z-index:44;touch-action:manipulation}body.touch-controls #interaction-dock{bottom:76px;right:max(12px,env(safe-area-inset-right));max-height:calc(100dvh - 132px);width:202px;padding:9px;background:#20282cf2;border:1px solid #fff4;border-radius:12px;transform:translateX(calc(100% + 30px));visibility:hidden;transition:transform .18s ease,visibility .18s;pointer-events:none}body.touch-controls.actions-open #interaction-dock{transform:translateX(0);visibility:visible;pointer-events:auto}body.touch-controls #mobile{width:104px}body.touch-controls #move-stick{width:100px;height:100px}body.touch-controls #move-stick i{left:30px;top:30px;width:40px;height:40px}body.touch-controls #mobile small{font-size:6px;letter-spacing:.7px;white-space:nowrap}body.touch-controls #run-toggle{position:absolute;left:112px;bottom:15px;width:42px;height:42px;padding:0;margin:0;border-radius:50%;font-size:10px;border:1px solid #fff5;background:#25323999;color:white}body.touch-controls #run-toggle[aria-pressed="true"]{background:#ddc9a7;color:#263239}body.touch-controls #toast{bottom:85px;max-width:50vw;font-size:10px;padding:8px 11px}body.cinema #actions-drawer-toggle{visibility:hidden!important}@media(prefers-reduced-motion:reduce){body.touch-controls #interaction-dock{transition:none}}

/* Separate dog / human drawers; one shared dock and mutually exclusive state. */
#human-actions-drawer-toggle{display:none}
body.touch-controls.walking #human-actions-drawer-toggle{display:block;position:fixed;right:max(72px,calc(env(safe-area-inset-right) + 72px));bottom:max(16px,env(safe-area-inset-bottom));width:48px;height:48px;border-radius:50%;background:#233239bb;border:1px solid #fff6;color:#eee;font-size:24px;z-index:44;touch-action:manipulation}
body.touch-controls.human-actions-open #interaction-dock{transform:translateX(0);visibility:visible;pointer-events:auto}
body.touch-controls #interaction-dock #mobile-actions{display:block!important}
body.touch-controls #dog-actions-panel,body.touch-controls #human-actions-panel{display:none;grid-template-columns:1fr;gap:7px}
body.touch-controls.actions-open #dog-actions-panel,body.touch-controls.human-actions-open #human-actions-panel{display:grid}
body.touch-controls #mobile-actions section strong{font-size:12px;color:#eed5a5;padding:2px 4px 5px}
body.touch-controls #mobile-actions section button{grid-column:auto;width:100%;min-height:40px;text-align:left;padding:9px 10px}
body.touch-controls #interaction-dock #richard-actions{display:none!important}
body.touch-controls #actions-drawer-toggle[aria-expanded="true"],body.touch-controls #human-actions-drawer-toggle[aria-expanded="true"]{background:#ddc9a7;color:#263239}
body.cinema #human-actions-drawer-toggle{visibility:hidden!important}

body.touch-controls.human-actions-open #interaction-dock #richard-actions{display:flex!important;order:2}body.touch-controls #interaction-dock #richard-actions>button{display:none!important}

#scooter-button{position:fixed;left:50%;transform:translateX(-50%);bottom:max(65px,env(safe-area-inset-bottom));z-index:25;padding:12px 18px;border:0;border-radius:24px;background:#ffce00;color:#202124;font-weight:700;touch-action:manipulation}#scooter-button[hidden]{display:none}body.cinema #scooter-button{visibility:hidden}

#character-choice{border:0;padding:0;margin:12px 0 0;max-width:320px}#character-choice legend{font-size:12px;margin-bottom:8px;color:#eee1c8}.character-options{display:flex;gap:9px}.character-options button{flex:1;padding:10px 18px;border:1px solid #ffffff66;border-radius:7px;background:#243239;color:#fff}.character-options button[aria-pressed="true"]{background:#e9deca;color:#26383a;border-color:#e9deca}#character-preview{height:190px}#character-preview canvas{position:static!important;inset:auto!important;width:300px!important;height:190px!important;max-width:100%}#start:disabled{opacity:.45;cursor:default}body:not(.walking) #welcome{top:15%;max-height:80dvh;overflow:auto;padding-bottom:20px}#welcome h1{font-size:clamp(36px,4vw,60px);margin:15px 0}#welcome #start{margin-top:8px}@media(max-height:600px){body:not(.walking) #welcome{top:68px;max-height:calc(100dvh - 75px);width:86%}#welcome h1{font-size:30px}#welcome>p,#welcome .eyebrow,#welcome .instructions{display:none}#character-preview{height:145px;overflow:hidden}#character-preview canvas{transform:translateY(-20px)}}

#nickname-label{display:flex;gap:12px;justify-content:flex-start;max-width:320px;margin:8px 0;color:#eee1c8}#player-nickname{min-width:0;width:205px;padding:10px;border:1px solid #ffffff77;border-radius:6px;background:#263239;color:white;font:inherit;user-select:text;-webkit-user-select:text}#join-error{max-width:320px;color:#ffe1b4;font-size:12px;line-height:1.4;margin:5px 0!important;display:block!important}#online-status{position:fixed;right:max(12px,env(safe-area-inset-right));top:70px;z-index:5;color:#d6e8d5;background:#20282cbb;border-radius:8px;padding:7px 10px;font:11px Arial;pointer-events:none}#online-status[data-connected="no"]{color:#ffd59a}body[data-owner="no"] #actions-drawer-toggle,body[data-owner="no"] #dog-actions-panel,body[data-owner="no"] #richard-actions,body[data-owner="no"] #pet,body[data-owner="no"] .companion,body[data-owner="no"] [data-pet-action="pet"],body[data-owner="no"] [data-pet-action="bag"],body[data-owner="no"] [data-pet-action="collect"]{display:none!important}body.cinema #online-status{visibility:hidden}

#owner-entry{max-width:320px;margin:8px 0;font-size:12px;color:#e9deca}#owner-entry summary{cursor:pointer;color:#e9deca}#owner-entry label{display:block;margin:8px 0}#owner-code{width:100%;padding:9px;margin-top:5px;border:1px solid #fff6;border-radius:6px;background:#263239;color:white;user-select:text;-webkit-user-select:text}#owner-entry small{display:block;line-height:1.4}
