/* 1.7: portrait-first map, floating HUD, qualified dispatch sheets. */
.in-shift #play{height:100dvh;max-width:1100px;display:block;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);margin:auto}
.in-shift .shift-header{display:none}.in-shift .game-layout{height:100%;overflow:hidden}
.in-shift .map-panel{display:block;position:relative;height:100%;border-radius:0;isolation:isolate;background:#121b20}
.in-shift .map-wrap{display:block;position:absolute;inset:0;height:100%;width:100%;padding:105px 0 150px;overflow:auto;touch-action:pan-x pan-y;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
.in-shift #map-scene{position:relative;max-width:none;max-height:none;aspect-ratio:auto;flex:none;margin:0 auto}
.in-shift #camp{display:block;width:100%;height:100%;object-fit:fill}
.field-hud{position:absolute;top:8px;left:8px;right:8px;z-index:10;display:flex;gap:5px;align-items:stretch;pointer-events:none}
.field-hud>*{pointer-events:auto}.hud-logo{width:32px;height:46px;object-fit:contain;align-self:center}
.in-shift .field-hud .stats{display:grid;flex:1;min-width:0;grid-template-columns:repeat(4,minmax(0,1fr));border:1px solid #a9364c;background:#14171dee;border-radius:10px;padding:0;margin:0}
.in-shift .stats>div{padding:7px 3px;text-align:center}.in-shift .stats>div>span{font-size:10px;letter-spacing:0}.in-shift .stats strong{font-size:17px;line-height:21px;white-space:nowrap}.in-shift .stats .meter{margin-top:3px}.in-shift .field-hud #pause{width:44px;font-size:20px;border:1px solid #f1586d;border-radius:10px;background:#9c2035;color:white}
.in-shift .camp-alerts{position:absolute;top:74px;left:8px;right:8px;height:40px;z-index:10;padding:0;border:0;background:none;grid-template-columns:1.2fr 1fr 1fr;gap:5px}
.in-shift .camp-alerts button{font-size:10px;min-height:40px;background:#20181fee;border:1px solid #a0394b;border-radius:7px}
.map-camera{position:absolute;top:121px;right:8px;display:flex;gap:4px;z-index:9}.map-camera button{min-width:44px;min-height:44px;padding:5px;background:#1c1820eb;border:1px solid #98384a;border-radius:7px;color:#ffe1d8;font-size:16px}.map-camera #build-menu{font-size:11px;min-width:64px}
.in-shift .map-controls{display:flex;flex-direction:column;position:absolute;bottom:8px;left:8px;right:8px;height:auto;min-height:0;max-height:160px;z-index:10;padding:5px;border:1px solid #c7455c;border-radius:12px;background:#101217f5;gap:4px;box-shadow:0 -4px 20px #0006}
.in-shift .dock-hint{display:none}.in-shift .crew-list-note{font-size:10px;line-height:13px;padding:0 4px;color:#d7b4bd}.in-shift .dock-tabs{display:grid;grid-template-columns:1fr 1.3fr 1fr 32px;gap:4px;min-height:44px}.in-shift .dock-tabs button{min-height:44px;font-size:11px;padding:4px;letter-spacing:0}.in-shift .dock-tabs #ability-help{min-width:32px}.in-shift .dock-tabs .low{border-color:#ffd074;color:#ffe1a3;background:#57321e}
#quick-crew{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px}#quick-crew button{display:grid;grid-template-columns:24px 1fr;align-items:center;min-height:51px;min-width:0;padding:4px;background:#241b23;border:1px solid #683541;border-radius:7px;color:#fbe8e8;text-align:left}#quick-crew b{font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#quick-crew small{grid-column:2;font-size:10px;color:#cdbcc2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mini-person{grid-row:1/3;font-size:20px}#quick-crew>span{grid-column:1/-1;font-size:12px;padding:8px}
#weather-chip{display:none}#planning-bar{position:absolute;left:12px;right:12px;bottom:168px;z-index:11;padding:12px;background:#11151cf5;display:block}#planning-title{font-size:16px;white-space:normal}#planning-detail{font-size:12px;line-height:17px;margin:8px 0}#begin-shift{width:100%;font-size:13px;min-height:46px}
#camp-event{position:absolute;top:170px;z-index:12;pointer-events:none}#camp-event strong{font-size:12px}#camp-event span{font-size:11px;line-height:15px}
.in-shift #pause-cover{position:absolute;inset:0;z-index:20;background:#0c0f16f2;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:14px;padding:24px;overflow:auto;transform:none;border:0}.in-shift #pause-cover #shift-place{font-size:15px;white-space:normal;color:#ff9fac;letter-spacing:1px}.in-shift #pause-cover #shift-title{font-size:24px;text-align:center;margin:0 0 10px}.in-shift #pause-cover button{width:min(100%,320px);min-height:48px;font-size:13px;padding:12px}.in-shift #pause-cover #exit{order:0}
#field-sheet{width:calc(100% - 18px);max-width:640px;max-height:calc(100dvh - 32px - env(safe-area-inset-top) - env(safe-area-inset-bottom));padding:14px;border:1px solid #cc4058;border-radius:16px;background:#14161d;color:#eee4e7}#field-sheet h2{font-size:20px}#field-sheet .sheet-heading{top:-14px;gap:6px;background:#14161d;padding:9px 0}#field-sheet .sheet-heading button{min-height:44px;font-size:11px}#field-pause-note{font-size:11px;margin:8px 0}#field-guide,#field-settings{font-size:11px;min-height:44px;margin:10px 4px 0 0;padding:8px;display:inline-block;width:auto}
#crew-filter-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px;font-size:12px}#crew-filter-row select{background:#211a24;color:#fff;border:1px solid #9a3c50;border-radius:6px;min-height:44px;font-size:16px;max-width:100%;flex:1}#crew-filter-row label:last-child{width:100%;min-height:32px}.crew-available-filter{display:flex;align-items:center;gap:6px;min-height:40px;font-size:12px}#field-sheet input[type=checkbox]{width:19px;height:19px;accent-color:#d7334d}
.in-shift #field-sheet #map-crew{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-auto-rows:auto;overflow:visible;height:auto;gap:6px;padding:0}.picker-worker{position:relative;min-width:0}.in-shift #field-sheet .map-worker{width:100%;min-height:107px;padding:6px 5px 32px;background:#241b24;border:1px solid #854052;border-radius:8px;text-align:left}.in-shift #field-sheet .map-worker b{font-size:12px}.in-shift #field-sheet .map-worker .crew-trade{font-size:10px;line-height:14px}.in-shift #field-sheet .map-worker span{font-size:10px;line-height:14px;white-space:normal}.favourite-worker{position:absolute;bottom:1px;right:1px;width:44px;min-height:32px;padding:0;background:#3b2231;border:1px solid #9e4055;border-radius:6px;color:#ffd889;font-size:18px}.favourite-worker[aria-pressed=true]{background:#773047}.empty-crew{grid-column:1/-1;font-size:13px}.dispatch-cost{font-size:13px;line-height:20px;border:1px solid #9e454d;background:#32202a;border-radius:8px;padding:10px;color:#ffe0a1}
.in-shift #field-sheet .map-modes{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-top:10px}.in-shift #field-sheet .map-modes button{min-height:44px;font-size:11px}
#sheet-supplies p{font-size:13px;line-height:20px}#supply-advice{border:1px solid #754454;border-radius:8px;padding:12px;font-size:13px;line-height:20px;color:#f0d8bf}#supply-advice.low{border-color:#f3c365;background:#452c1d}#sheet-supplies .operations{margin:12px 0;padding:0;background:none;border:0}#sheet-supplies #reserves{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}#sheet-supplies .reserve{padding:8px 4px;border:1px solid #693444}#sheet-supplies .reserve>span{font-size:11px}#sheet-supplies .reserve strong{font-size:20px}#sheet-supplies .reserve button{min-height:44px;font-size:10px;padding:3px}#sheet-supplies #cargo{font-size:16px;min-height:44px;width:100%;margin:8px 0}#sheet-supplies .cargo-label{display:block;font-size:12px}#sheet-supplies #truck{width:100%;min-height:52px;font-size:13px}#sheet-supplies #field-gear{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-top:12px}#sheet-supplies #field-gear button{min-height:44px;font-size:12px}
#sheet-build>button{display:block;width:100%;min-height:48px;text-align:left;padding:12px;margin:7px 0;font-size:13px}#sheet-build small{display:block;margin-top:7px;line-height:18px;color:#d6c5cb}#sheet-build p{font-size:13px;line-height:20px}
.in-shift #sheet-abilities #signatures{height:auto;grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:none;grid-auto-rows:minmax(90px,auto);overflow:visible}.in-shift #sheet-abilities .ability-card strong{font-size:13px}.in-shift #sheet-abilities .ability-card span{font-size:12px;line-height:16px}.in-shift #sheet-abilities .ability-card small{font-size:11px}.in-shift #sheet-abilities #ability-guide{display:none}
#worker-bubble{position:absolute;transform:none;pointer-events:auto;z-index:13;min-height:44px;max-width:calc(100% - 20px);font-size:12px;line-height:17px;text-align:left;padding:9px 24px 9px 10px;background:#171b22;border:1px solid #e7677c;box-shadow:0 4px 15px #0007}#worker-bubble strong{font-size:11px}#worker-bubble:after{content:'×';position:absolute;right:7px;left:auto;top:5px;bottom:auto;border:0;font-size:18px;color:#ff9eac}#worker-bubble span{display:block}
#practice{max-width:500px}#practice .practice-scene{height:230px;max-height:230px;overflow:hidden}#practice .practice-scene canvas{height:100%;width:100%;object-fit:fill;max-height:none}#practice-instruction{padding:12px;border-left:3px solid #f5ca6b;background:#281e25;font-size:14px;line-height:20px;min-height:90px}.practice-supply-row{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:10px 0}.practice-supply-row button{min-height:50px;padding:8px;background:#2c2029;border:1px solid #a74059;border-radius:7px;color:#fff;font-size:13px}.practice-supply-row strong{display:block;font-size:16px}#practice small{font-size:11px}.practice-next{position:relative;animation:practice-spotlight .9s ease-in-out infinite alternate;outline:2px solid #ffdd83;outline-offset:2px}#practice-cost{font-size:12px;color:#f8d696}#practice #practice-crew-panel button,#practice #practice-ability-panel button{font-size:12px;min-height:48px}#practice-reserve-copy{font-size:13px;line-height:20px}#practice-done,#practice-skip{width:100%}#studio-intro .studio-mark img{width:min(92vw,680px);height:auto;max-height:88dvh;margin:0;object-fit:contain}
@keyframes practice-spotlight{from{box-shadow:0 0 0 3px #ffd36a33}to{box-shadow:0 0 0 8px #ffd36a22}}
@media(min-width:760px){.in-shift .map-wrap{padding-top:105px}.in-shift .map-controls{max-width:570px;margin:0 auto}.in-shift .map-panel{max-width:780px;margin:auto}.field-hud{max-width:650px;margin:auto}.in-shift .camp-alerts{max-width:650px;margin:auto}}
@media(max-width:350px){.hud-logo{display:none}.in-shift .stats strong{font-size:15px}.in-shift .stats>div>span{font-size:9px}.in-shift #quick-crew b{font-size:11px}.in-shift .dock-tabs button{font-size:10px}#field-sheet{padding:10px}.in-shift #field-sheet .map-worker{min-height:115px}.in-shift #field-sheet .map-worker b{font-size:11px}}
@media(prefers-reduced-motion:reduce){.practice-next{animation:none}.studio-mark{animation:none}}
/* Direct map dispatch: names stay visible; no modal or confirmation step. */
.in-shift .map-controls{max-height:254px;gap:5px}
.in-shift .map-wrap{padding-bottom:265px}
#quick-crew{max-height:157px;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px}
#quick-crew button{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;min-height:48px;padding:5px 6px;gap:3px;touch-action:manipulation}
#quick-crew b{width:100%;font-size:12px;letter-spacing:0}#quick-crew small{font-size:10px;width:100%;letter-spacing:0}
#quick-crew button[aria-pressed=true]{background:#722637;border-color:#ffb5bf;box-shadow:inset 0 0 0 1px #ff788d}
#quick-crew button:disabled{opacity:.48}.inline-dispatch{display:flex;align-items:center;gap:5px;min-height:30px}.inline-dispatch p{margin:0;flex:1;color:#ffdfa2;font-size:12px;line-height:16px}
.in-shift .map-target{min-height:44px;touch-action:manipulation}
#clear-target{min-width:44px;min-height:44px;padding:0;font-size:21px;border:1px solid #8b3a4b;background:#321e28;color:#ffd9dd;border-radius:6px}
.in-shift .crew-list-note{display:none}#planning-bar{bottom:258px}
.favourite-worker{min-height:44px}.in-shift #field-sheet .map-worker{padding-bottom:46px;min-height:122px}
.practice-next:before{content:'▼';position:absolute;top:-20px;left:calc(50% - 7px);color:#ffdd83;animation:practice-point .7s ease-in-out infinite alternate;pointer-events:none}
@keyframes practice-point{to{transform:translateY(5px)}}
@media(prefers-reduced-motion:reduce){.practice-next:before{animation:none}}
@media(max-width:350px){.hud-logo{display:block;width:24px}}
/* Local player identity; large phone-friendly controls and no account flow. */
.player-entry{display:flex;align-items:center;flex-wrap:wrap;gap:8px;width:100%;max-width:460px;margin:18px 0 0;border:1px solid #bc344d;text-align:left;min-height:48px}
.player-entry strong{flex:1;min-width:0;overflow-wrap:anywhere;color:#fff;text-transform:none;letter-spacing:0}.player-entry small,.player-entry>span{font-size:10px;color:#ffa4b3}
.player-settings{padding:14px;border:1px solid #993248;border-radius:10px;margin:16px 0}.player-settings>strong{display:block;margin:8px 0;font-size:21px;overflow-wrap:anywhere}.player-settings p{font-size:12px;line-height:18px}.player-settings button{min-height:44px}
#player-profile{width:calc(100% - 24px);max-width:450px;max-height:calc(100dvh - 32px - env(safe-area-inset-top) - env(safe-area-inset-bottom));padding:22px;border:2px solid #ce354d;border-radius:18px;background:#101217;color:#f7edf0;overflow-y:auto;overscroll-behavior:contain}
#player-profile .polish-heading{gap:12px}#player-profile .polish-heading img{width:72px;height:72px;object-fit:contain}#player-profile h2{font-size:25px;line-height:1.12;margin:5px 0}#player-profile p{font-size:13px;line-height:19px}#player-profile label{display:block;margin:18px 0 8px;font-size:12px;font-weight:800;letter-spacing:1px;color:#ffb0be}
#player-username{display:block;box-sizing:border-box;width:100%;min-height:52px;border:1px solid #cb4058;border-radius:8px;padding:12px;color:#fff;background:#211820;font:600 18px Arial;scroll-margin:20px}#player-username:focus{outline:2px solid #ff8a9f;outline-offset:2px}#player-username[aria-invalid=true]{border-color:#ffca70}
#username-help,#player-profile .player-privacy{font-size:11px;line-height:16px;color:#bcb0b7}.player-share-preview{padding:13px;margin:16px 0 8px;text-align:center;border:1px solid #733042;border-radius:10px;background:#1c151b}.player-share-preview span,.player-share-preview small{display:block;font-size:10px;letter-spacing:.6px;color:#caabb4}.player-share-preview strong{display:block;font-size:23px;color:#ff8797;overflow-wrap:anywhere;margin:6px 0}
#username-error{color:#ffcf84;min-height:0;margin:8px 0}#username-error:empty{display:none}#player-profile button{width:100%;min-height:48px;margin-top:8px;font-size:13px}#player-profile .player-privacy{text-align:center;margin-bottom:0}
@media(max-width:350px),(max-height:650px){#player-profile{padding:16px}#player-profile .polish-heading img{width:50px;height:50px}#player-profile h2{font-size:21px}#player-copy{margin:10px 0}.player-share-preview{padding:9px;margin:10px 0}#player-profile label{margin-top:12px}}
/* Keep rank visible without increasing the nine-worker dock's height. */
#quick-crew button{position:relative;padding-bottom:8px}#quick-crew b{display:flex;align-items:center;gap:3px;overflow:visible}#quick-crew b>span{min-width:0;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#quick-crew .worker-level{flex:none;font-style:normal;font-size:9px;line-height:13px;padding:0 3px;border:1px solid #a25061;border-radius:4px;color:#ffe5ad;background:#371e2a;letter-spacing:0}
.quick-xp{position:absolute;left:6px;right:6px;bottom:3px;height:2px;background:#493039;border-radius:3px;overflow:hidden}.quick-xp i,.crew-xp-bar i{display:block;height:100%;background:#ed9f54;border-radius:inherit}
.crew-xp-bar{display:block;height:4px;background:#493039;border-radius:4px;overflow:hidden;margin:5px 0}.in-shift #field-sheet .map-worker .crew-xp-label{font-size:9px;color:#f3cb94}.in-shift #field-sheet .map-worker .crew-xp-bar{height:3px;line-height:0;white-space:normal}
.worker-xp{width:100%;margin:5px 0 0;font-size:12px;line-height:18px}.worker-xp p{font-size:11px;line-height:17px;margin:8px 0 0}.worker-xp .crew-xp-bar{max-width:300px;height:6px}
#worker-progress-report{padding:13px;margin:12px 0;border:1px solid #9f3b50;border-radius:10px;background:#251921}#worker-progress-report h3{font-size:13px;color:#f9ce88;margin:0 0 8px}#worker-progress-report p{margin:8px 0;font-size:13px;line-height:19px}#worker-progress-report p span{display:block;color:#d7b7c1;font-size:11px}#worker-progress-report>small{font-size:11px;line-height:17px;color:#cbbcc1}
/* The original approved raster art is printed on the shirt, not substituted for a person. */
#worker-outfit-preview{flex-wrap:wrap}#worker-outfit-preview .outfit-person{width:84px;height:126px}#worker-outfit-preview .outfit-person:before{top:25px;left:27px;width:30px;height:30px}#worker-outfit-preview .outfit-person i{top:14px;left:24px;width:36px;height:20px}#worker-outfit-preview .outfit-person b{top:57px;left:14px;width:56px;height:45px;display:flex;align-items:center;justify-content:center;border-radius:12px 12px 3px 3px}#worker-outfit-preview .outfit-person b img{width:33px;height:33px;object-fit:contain;background:#08090b;border-radius:2px}#worker-outfit-preview .outfit-person:after{top:102px;left:24px;width:12px;height:24px;box-shadow:23px 0 #7b8596}.equipped-shirt-logo{color:#ff9caf!important}
#shirt-branding{padding:14px;border:1px solid #993348;border-radius:10px;margin:12px 0 20px;background:#12131a}#shirt-branding h4{font-size:12px;letter-spacing:1px;margin:0 0 8px;color:#ffa8b7}#shirt-logo-note{font-size:12px;line-height:18px;margin:6px 0 14px}#shirt-logo-choices{display:grid;grid-template-columns:1fr 1fr;gap:9px}#shirt-logo-choices button{min-width:0;min-height:175px;padding:10px 4px;border:1px solid #864052;background:#211820;border-radius:9px;color:#f8e8ec;touch-action:manipulation}#shirt-logo-choices button[aria-pressed=true]{border-color:#ff7d92;background:#42212f;box-shadow:inset 0 0 0 1px #b6344b}#shirt-logo-choices button:disabled{opacity:.55}#shirt-logo-choices strong,#shirt-logo-choices small{display:block;font-size:12px;margin:7px 0 0}#shirt-logo-choices small{font-size:9px;color:#ebbdc7;letter-spacing:0}
.logo-shirt{display:flex;position:relative;align-items:center;justify-content:center;width:100px;max-width:100%;height:108px;margin:auto;background:var(--shirt);clip-path:polygon(26% 0,37% 0,42% 6%,58% 6%,63% 0,74% 0,100% 22%,85% 43%,78% 36%,78% 100%,22% 100%,22% 36%,15% 43%,0 22%)}.logo-shirt img{width:49px;height:58px;object-fit:contain;background:#08090b;margin-top:8px}
.pending-worker-xp{width:100%;padding:10px;border:1px solid #90513d;border-radius:7px;background:#2b2020;color:#f9d6a2;font-size:12px;line-height:18px;margin:0}
