@font-face {
  font-family: 'DM Sans';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(./assets/fonts/field-font-0.ttf) format('truetype');
}
@font-face {
  font-family: 'DM Sans';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(./assets/fonts/field-font-1.ttf) format('truetype');
}
@font-face {
  font-family: 'DM Sans';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(./assets/fonts/field-font-2.ttf) format('truetype');
}
@font-face {
  font-family: 'DM Sans';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(./assets/fonts/field-font-3.ttf) format('truetype');
}
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(./assets/fonts/field-font-4.ttf) format('truetype');
}
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(./assets/fonts/field-font-5.ttf) format('truetype');
}

:root{font-family:'DM Sans',sans-serif;color:#d9ddd8;background:#151918;font-size:16px;font-synthesis:none;--line:#343c37;--dim:#8c9990;--accent:#c4d6b4}*{box-sizing:border-box}body{margin:0;overflow:hidden}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer}button:focus-visible,a:focus-visible{outline:2px solid #ddedb3;outline-offset:3px}button:disabled{opacity:.35;cursor:default}button{border:1px solid var(--line);background:#202722;border-radius:3px}button:hover:not(:disabled){background:#354032}button[hidden],[hidden]{display:none!important}#app{height:100dvh;display:grid;grid-template-rows:68px 53px 1fr 36px}header{display:flex;align-items:center;padding:0 26px;gap:16px;border-bottom:1px solid var(--line);background:#1c211e}header .brand{text-decoration:none;color:#e3e7df;display:flex;align-items:center;gap:12px;font-size:27px;letter-spacing:1px}.brand b{font-size:20px;letter-spacing:4px}.brand span{font:10px 'IBM Plex Mono',monospace;line-height:1.5;letter-spacing:1.6px;max-width:64px;color:#8e9c92}.project{margin:auto;font-size:14px;color:#adb7af}.project span{color:#526155;margin:0 18px}header button{font-size:12px;padding:8px 12px;background:none}nav{display:flex;align-items:center;padding:0 26px;gap:28px;border-bottom:1px solid var(--line);background:#181d1a}.tabs{display:flex;align-self:stretch;gap:25px}.tabs button{border:0;border-radius:0;background:none;font:12px 'IBM Plex Mono',monospace;color:#738478;padding:0 0;position:relative}.tabs button span{font:14px 'DM Sans',sans-serif;margin-left:9px}.tabs button[aria-selected=true]{color:var(--accent)}.tabs button[aria-selected=true]:after{content:'';height:2px;background:var(--accent);position:absolute;bottom:0;left:0;right:0}.navMeta{font:10px 'IBM Plex Mono',monospace;letter-spacing:1px;color:#6e7c72}#validation{margin-left:auto;font:12px 'IBM Plex Mono',monospace;color:#9da998}#workspace{position:relative;min-height:0;overflow:hidden;background:#171d19}#world,#blueprint{position:absolute;width:100%;height:100%;inset:0}#world canvas{display:block}#blueprint{touch-action:none}#world:after{content:'';pointer-events:none;position:absolute;inset:0;background:radial-gradient(ellipse,transparent 30%,#17170e70 100%);box-shadow:inset 0 0 100px #100e0a50}.sheetLabel{position:absolute;top:45px;left:52px;display:flex;flex-direction:column;gap:7px;pointer-events:none;font:12px 'IBM Plex Mono',monospace;color:#a1b49c;letter-spacing:1.6px}.sheetLabel span+span{font-size:10px;color:#637567;letter-spacing:1px}#mapTools{position:absolute;left:32px;top:125px;display:flex;flex-direction:column;gap:6px}#mapTools button{width:34px;height:34px;font-size:21px;background:#1c251fdd;color:#abbca5}#rulerH{position:absolute;top:0;left:24px;right:0;height:22px;border-bottom:1px solid #35413280;background:repeating-linear-gradient(90deg,transparent 0 39px,#52664955 39px 40px);pointer-events:none}#rulerV{position:absolute;top:22px;bottom:0;left:0;width:24px;border-right:1px solid #35413280;background:repeating-linear-gradient(0deg,transparent 0 39px,#52664955 39px 40px);pointer-events:none}#lesson{position:absolute;right:30px;top:34px;width:310px;background:#202720f5;border:1px solid #4a5545;box-shadow:0 12px 42px #0002;border-radius:4px;padding:22px;backdrop-filter:blur(16px)}.lessonTop{display:flex;justify-content:space-between;color:#a7b69e;font:10px 'IBM Plex Mono',monospace;letter-spacing:1.6px}.progress{height:2px;background:#3d4738;margin:16px 0 25px}.progress i{display:block;height:100%;width:16.66%;background:#bccfaf;transition:width 1s}h1{font-size:26px;line-height:1.2;font-weight:450;letter-spacing:-.7px;margin:0 0 14px;color:#e2e8dc}#description{font-size:14px;line-height:1.75;color:#a6b39e;margin:0 0 22px}#primary{width:100%;padding:12px 14px;background:#c3d1b1;color:#25311f;border:0;font-size:13px;font-weight:600;text-align:left;display:flex;justify-content:space-between}#primary:hover{background:#dde6d2}.lessonFoot{border-top:1px solid #3a4435;margin-top:24px;padding-top:15px;display:flex;justify-content:space-between;font:9px 'IBM Plex Mono',monospace;letter-spacing:1px;color:#819176}#metrics{margin:0 0 20px;border-top:1px solid #3c4735}#metrics div{display:flex;justify-content:space-between;align-items:center;padding-top:12px}#metrics span{font:9px 'IBM Plex Mono',monospace;letter-spacing:.7px;color:#87967c}#metrics b{font:13px 'IBM Plex Mono',monospace;font-weight:400}#viewHint{position:absolute;bottom:24px;left:50%;transform:translateX(-50%);font:10px 'IBM Plex Mono',monospace;letter-spacing:1px;color:#84917b;white-space:nowrap;pointer-events:none}#viewHint span{padding:0 12px;color:#56644e}footer{background:#1a201b;border-top:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 24px;gap:12px;font:10px 'IBM Plex Mono',monospace;color:#87927f}footer>span:first-child{display:flex;align-items:center;gap:8px}footer i{width:5px;height:5px;background:#a4ba8a;border-radius:100%}footer b{font-weight:400;color:#586751;margin-left:16px}#capture{position:absolute;bottom:60px;left:50%;transform:translateX(-50%);padding:13px 22px;background:#20251ce6;border-color:#707958;font-size:14px;white-space:nowrap}#capture small{display:block;font:10px 'IBM Plex Mono',monospace;margin-top:8px;color:#b1b69c}#crosshair{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);font:18px monospace;color:#e7e7d070;pointer-events:none}#surveyNotice{position:absolute;left:50%;top:52%;transform:translate(-50%,-50%);border:1px solid #778168;background:#1b211ce8;padding:15px 22px;font:12px 'IBM Plex Mono',monospace;color:#c7d1b9;pointer-events:none;white-space:nowrap}.walk .sheetLabel span{color:#e1dfc2}.walk .sheetLabel span+span{color:#b4b396}.walk #viewHint{color:#e1dfc2;text-shadow:0 1px 4px #000}.walk #lesson{background:#20261ce8}.drift #validation,.drift #systemStatus{color:#c7b48a}#touchControls{position:absolute;bottom:30px;left:24px;text-align:center;touch-action:none}#touchControls button{width:43px;height:43px;background:#20251cc9;margin:2px;font-size:18px}.touchHint{display:none}@media(max-width:760px){#app{grid-template-rows:54px 47px 1fr 30px}header{padding:0 14px;gap:10px}.brand span,.project,.navMeta,footer b{display:none!important}header .brand{margin-right:auto;font-size:22px}.brand b{font-size:16px}header button{padding:6px 9px}nav{padding:0 15px;gap:15px}.tabs{gap:17px}#validation{font-size:9px}#lesson{right:12px;top:14px;width:245px;padding:16px}h1{font-size:22px}#description{font-size:13px;margin-bottom:14px}.progress{margin:12px 0 16px}.lessonFoot{margin-top:14px;padding-top:10px;font-size:8px}.sheetLabel{top:32px;left:40px;font-size:10px}#sheetSub{max-width:60px;line-height:1.7}#mapTools{left:30px;top:92px}footer{padding:0 12px;font-size:8px}footer>span:last-child{display:none}#viewHint{bottom:12px;font-size:8px}#capture{bottom:70px;font-size:12px;padding:10px;max-width:95%}#capture small{font-size:8px}#surveyNotice{font-size:10px;max-width:94%;white-space:normal}#metrics b{font-size:11px}}@media(max-height:600px){#lesson{top:14px;padding:14px}.lessonFoot{display:none}#description{line-height:1.4}h1{font-size:21px}.progress{margin:10px 0 15px}}
#mazeHud{position:absolute;left:35px;top:35px;display:flex;flex-direction:column;gap:7px;pointer-events:none;text-shadow:0 1px 6px #000}#mazeHud span{font-size:14px;letter-spacing:5px;color:#d9dbc5}#mazeHud small{font:10px 'IBM Plex Mono',monospace;color:#b4b79f;letter-spacing:1px}.endless .sheetLabel{display:none}#interact{position:absolute;left:50%;top:62%;transform:translateX(-50%);background:#22271be6;padding:10px 18px;border:1px solid #879172;font-size:13px}#crouch{position:absolute;right:26px;bottom:55px;background:#22271bd9;padding:10px 16px;font-size:12px}.endless #capture{bottom:60px}.endless #viewHint{color:#bdc5a8}.endless #mapTools{top:40px}#explore{white-space:nowrap}@media(max-width:760px){#explore{font-size:10px;padding:6px}.brand b{letter-spacing:2px}#mazeHud{left:24px;top:28px}#crouch{right:15px;bottom:60px}.endless #capture{max-width:65%;left:58%;font-size:10px;white-space:normal;text-align:center}.endless #viewHint{font-size:7px}}

#debugPanel{position:absolute;z-index:20;right:24px;top:24px;width:min(300px,calc(100% - 48px));padding:20px;background:#171e19;border:1px solid #81916e;box-shadow:0 15px 60px #0009;font-family:'IBM Plex Mono',monospace}.debugTop{display:flex;align-items:center;justify-content:space-between;gap:16px}.debugTop b{font-size:13px;font-weight:500;letter-spacing:1px}#debugClose{font-size:22px;padding:0 7px}#debugPanel p{font-size:13px;color:#9bac90}#debugPanel #explore{display:block;width:100%;padding:12px;text-align:left;font-size:13px}#debugPanel small{display:block;margin-top:16px;font-size:10px;color:#87967d}

#run{position:absolute;right:26px;bottom:104px;background:#22271bd9;padding:10px 16px;font-size:12px}#run[aria-pressed="true"]{border-color:#c8d8bd;color:#e7edda}@media(max-width:760px){#run{right:15px;bottom:110px}}

#debugPanel{max-height:calc(100% - 48px);overflow:auto}#debugPanel label{display:block;margin:12px 0 6px;font-size:12px;color:#bec9b4}#debugPanel input,#debugPanel select{width:100%;padding:9px;background:#0c130e;color:#d6e0cf;border:1px solid #59634f;font:13px monospace}#debugJump{margin-top:12px;padding:10px;width:100%}
/* Touch controls keep the centre of the walkthrough clear. */
.touchOnly,#mobileSound{display:none}#world{touch-action:none;user-select:none;-webkit-user-select:none}
#mobileBar{position:absolute;z-index:8;left:max(14px,env(safe-area-inset-left));right:max(14px,env(safe-area-inset-right));top:calc(10px + env(safe-area-inset-top));display:flex;justify-content:space-between;pointer-events:none}
#mobileBar button{pointer-events:auto;min-height:46px;min-width:82px;padding:10px 14px;background:#172018c9;backdrop-filter:blur(10px);font-size:14px;border-color:#84947666}
.touch-mode button{touch-action:manipulation;min-height:44px}.touch-mode header{padding-top:env(safe-area-inset-top)}
.touch-mode#app{grid-template-rows:calc(54px + env(safe-area-inset-top)) 48px 1fr 24px}.touch-mode.touch-walk#app{grid-template-rows:1fr}.touch-walk>header,.touch-walk>nav,.touch-walk>footer{display:none}.touch-mode #capture{display:none!important}
.touch-mode .touchOnly,.touch-mode #mobileSound{display:block}
.touch-mode #touchControls{left:max(18px,env(safe-area-inset-left));bottom:calc(30px + env(safe-area-inset-bottom));width:132px;height:150px;z-index:7;margin:0}
.touch-mode #movePad{position:relative;display:grid;place-items:center;width:132px;height:132px;margin:0;border-radius:50%;border:1px solid #bbc8a747;background:radial-gradient(circle,#9eae8110 0 40%,#14201255 41%);box-shadow:inset 0 0 0 14px #18201622;touch-action:none;user-select:none;-webkit-user-select:none}
#moveStick{width:54px;height:54px;border-radius:50%;background:#adbd9240;border:1px solid #d3dfb680;box-shadow:0 2px 12px #0003;pointer-events:none}.moveCaption{display:block;font:10px monospace;letter-spacing:2px;color:#c4cfb8b3;padding-top:7px;pointer-events:none}
.touch-mode #run,.touch-mode #crouch{z-index:8;right:max(18px,env(safe-area-inset-right));min-width:78px;min-height:48px;font-size:14px;background:#1c271bdd;border-color:#9aaa7966}
.touch-mode #run{bottom:calc(96px + env(safe-area-inset-bottom))}.touch-mode #crouch{bottom:calc(38px + env(safe-area-inset-bottom))}
.touch-mode #interact{z-index:8;top:auto;left:auto;transform:none;right:max(18px,env(safe-area-inset-right));bottom:calc(154px + env(safe-area-inset-bottom));min-height:52px;max-width:130px;padding:12px 16px;background:#d2dfb9;color:#25311e;font-size:15px;font-weight:600}
.touch-mode #viewHint{bottom:calc(8px + env(safe-area-inset-bottom));font-size:10px;letter-spacing:0;white-space:normal;width:100%;padding:0 12px;text-align:center}.touch-walk .sheetLabel{display:none}
.touch-walk #mazeHud{top:calc(17px + env(safe-area-inset-top));left:50%;transform:translateX(-50%);text-align:center;gap:5px;max-width:calc(100% - 210px)}.touch-walk #mazeHud span{font-size:10px;letter-spacing:1.7px}.touch-walk #mazeHud small{font-size:11px;white-space:nowrap;letter-spacing:0}
.touch-mode #lesson{left:12px;right:12px;top:auto;bottom:12px;width:auto;max-height:45%;overflow:auto;padding:16px;border-radius:12px;background:#172019ed}.touch-mode #lesson h1{font-size:22px;line-height:1.15}.touch-mode #lesson h1 br{display:none}.touch-mode #description{font-size:14px;line-height:1.45;margin-bottom:12px}.touch-mode #lesson .progress{margin:10px 0 12px}.touch-mode .lessonFoot{display:none}
.touch-mode #lessonToggle{float:right;border:0;background:transparent;font-size:11px;color:#c1cfb2;min-height:32px;padding:0 0 8px 10px}.touch-mode .lessonTop{min-height:22px;padding-top:3px;letter-spacing:.5px;font-size:10px}.touch-mode #primary{font-size:15px;min-height:46px}.touch-mode #metrics{margin-bottom:12px}
.touch-mode #lesson.collapsed .lessonTop,.touch-mode #lesson.collapsed .progress,.touch-mode #lesson.collapsed #description,.touch-mode #lesson.collapsed #metrics,.touch-mode #lesson.collapsed #primary{display:none!important}.touch-mode #lesson.collapsed h1{font-size:14px;margin:7px 0;letter-spacing:0}.touch-mode #lesson.collapsed{padding:8px 14px}
.touch-walk #lesson{top:calc(68px + env(safe-area-inset-top));bottom:auto;max-height:calc(100% - 290px);background:#172019d9;backdrop-filter:blur(8px)}.touch-mode #mapTools button{min-width:44px;min-height:44px}
.touch-mode #debugPanel{z-index:30;top:calc(12px + env(safe-area-inset-top));right:max(12px,env(safe-area-inset-right));left:max(12px,env(safe-area-inset-left));width:auto;max-height:calc(100% - 24px - env(safe-area-inset-top) - env(safe-area-inset-bottom));padding:18px}.touch-mode #debugPanel input,.touch-mode #debugPanel select{font-size:16px;min-height:46px}.touch-mode #mobileSound{width:100%;margin-bottom:12px}
@media (orientation:landscape) and (max-height:600px){.touch-walk #lesson{left:164px;right:164px;max-height:calc(100% - 120px);padding:10px 14px}.touch-walk #lesson h1{font-size:18px}.touch-walk #lesson .progress,.touch-walk #lesson .lessonTop{display:none}.touch-walk #description{font-size:13px;line-height:1.35}.touch-walk #primary{min-height:44px}.touch-mode #touchControls{bottom:calc(22px + env(safe-area-inset-bottom));left:max(16px,env(safe-area-inset-left))}.touch-mode #run{bottom:calc(82px + env(safe-area-inset-bottom))}.touch-mode #crouch{bottom:calc(24px + env(safe-area-inset-bottom))}.touch-mode #interact{bottom:calc(140px + env(safe-area-inset-bottom))}}

.touch-mode #mobileSound[hidden]{display:none}.touch-mode #debugClose{font-size:14px;min-height:44px;padding:0 12px}.touch-mode #debugPanel small{display:none}.touch-mode #lessonToggle{min-height:44px}

#menuTitle{padding:0;border:0;background:none;text-align:left;font:500 13px "IBM Plex Mono",monospace;letter-spacing:1px;color:inherit;touch-action:manipulation;user-select:none;-webkit-user-select:none}.touch-mode #menuTitle{min-height:44px}#godControls[hidden]{display:none}

#flashlight{position:absolute;right:26px;bottom:153px;background:#22271bd9;padding:10px 16px;font-size:12px;z-index:8}#flashlight[aria-pressed="true"]{border-color:#c8d8bd;color:#e7edda}.touch-mode #flashlight{top:calc(78px + env(safe-area-inset-top));bottom:auto;right:max(18px,env(safe-area-inset-right));min-height:44px;font-size:13px;padding:8px 12px}

#continueSurvey{display:block;width:100%;margin:10px 0 14px;padding:12px;border:1px solid #859575;background:#263123;color:#d1ddbd;text-align:left;font:12px "IBM Plex Mono",monospace;line-height:1.6}#continueSurvey[hidden]{display:none}#continueSurvey:disabled{opacity:.55}.touch-mode #continueSurvey{min-height:48px;font-size:13px}

.project #headerFloor{color:inherit;margin:0}

/* Shared RaidGuild stamp; quiet attribution outside the walkthrough controls. */
.builder-credit{display:inline-flex;align-items:center;gap:8px;flex-shrink:0;color:#adb7a5;text-decoration:none;font:10px 'IBM Plex Mono',monospace;white-space:nowrap}
.builder-credit img{display:block;width:24px;height:23px;object-fit:contain}
.builder-credit:hover{color:#e3e7df}
footer>span:first-child{min-width:0;flex:1}
#systemStatus{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#debugPanel>.builder-credit{margin-top:16px;min-height:44px;border-top:1px solid var(--line);width:100%;justify-content:center}
@media(max-width:1050px){footer .build-info{display:none}}
@media(max-width:760px){footer #coordinates,footer #scale{display:none}footer .builder-credit{font-size:9px;gap:6px}footer .builder-credit img{width:20px;height:19px}}
