:root{color-scheme:dark;font-family:system-ui,-apple-system,"PingFang SC",sans-serif;color:#f2eee3;background:#111c1c}*{box-sizing:border-box}body{margin:0}canvas{display:block}#scene,#markers{position:fixed;inset:0}#markers{pointer-events:none}header{position:fixed;top:26px;left:30px;right:30px;display:flex;justify-content:space-between;align-items:start;pointer-events:none}.brand{font:24px serif;letter-spacing:3px;text-shadow:0 2px 8px #000}.brand small{display:block;font:11px system-ui;letter-spacing:3px;margin-top:9px}.tag{font-size:11px;background:#142a29c9;border:1px solid #ffffff24;border-radius:30px;padding:8px 12px}.veil{position:fixed;inset:0;display:grid;place-items:center;background:radial-gradient(ellipse at 70% 15%,#345249,#101817 65%);z-index:20}.intro{width:min(650px,88vw)}.eyebrow{font-size:12px;letter-spacing:3px;color:#c9ba93}h1{font:clamp(40px,6vw,72px)/1.4 serif;font-weight:400;letter-spacing:6px;margin:25px 0}h2{font:26px/1.5 serif}p{line-height:1.9;color:#c8d0c8}small{font-size:12px;color:#bbc6bf}.intro>small{display:block;margin-top:20px}button,input,select,textarea{font:inherit;border-radius:8px;border:1px solid #ffffff30;padding:12px 16px;color:inherit;background:#1e3330}button{cursor:pointer}button:hover{background:#35534b}button:disabled{opacity:.45;cursor:wait}.primary{background:#dfcea5;color:#172620;border-color:#dfcea5}.primary:hover{background:#ebdcbb}.panel,dialog{padding:30px;background:#172925f5;border:1px solid #ffffff22;border-radius:16px;box-shadow:0 15px 60px #0005}.panel{width:min(420px,90vw)}label{display:block;font-size:13px;margin:15px 0}label input,label select{display:block;width:100%;margin-top:8px}.check{display:flex;align-items:center;gap:9px}.check input{width:auto;margin:0}#profile button{width:100%;margin-top:12px}#status{position:fixed;bottom:95px;left:30px;right:30px;font-size:12px;text-shadow:0 1px 6px #000;pointer-events:none}nav{position:fixed;bottom:35px;left:30px;display:flex;gap:10px}footer{position:fixed;bottom:10px;left:30px;font-size:11px;color:#c3cdc9}#filters{position:fixed;right:25px;top:100px}dialog{width:min(460px,92vw);color:#eee8da}dialog::backdrop{background:#071513a8}textarea{width:100%;resize:vertical;background:#0c1f1a}.close{float:right;background:none;border:0;padding:0 8px;font-size:24px}.memoryText{white-space:pre-wrap;overflow-wrap:anywhere;color:#eee8da}#count{display:block;text-align:right}.marker{position:absolute;pointer-events:auto;width:24px;height:24px;padding:0;border-radius:50%;background:#f2d898;border:5px solid #f2d89844;box-shadow:0 0 20px #ffe3a7;transform:translate(-50%,-50%)}[hidden]{display:none!important}@media(max-width:600px){header{left:20px;top:20px}nav{left:12px;right:12px;bottom:42px;gap:6px}nav button{font-size:11px;padding:12px 8px;flex:1}footer{left:12px;right:12px;bottom:10px;font-size:10px}#status{left:15px;bottom:105px}.panel,dialog{padding:22px}}
#identity{overflow-y:auto;padding:20px 0}#profile{margin:auto;width:min(470px,94vw)}#profile h2{margin:8px 0 20px}.avatar-picker{border:0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:18px 0}.avatar-picker legend{font-size:13px;margin-bottom:8px}.avatar-card{position:relative;border:1px solid #ffffff25;border-radius:12px;overflow:hidden;cursor:pointer;padding:8px;margin:0;text-align:center}.avatar-card:has(input:checked){border-color:#dfcea5;background:#dfcea515}.avatar-card input{position:absolute;left:10px;top:10px;width:16px;margin:0}.avatar-art{display:block;height:135px;background-color:#ebe9e5;background-size:300% auto;background-repeat:no-repeat;background-position:left 43%;border-radius:8px}.avatar-art.female{background-image:url('/references/female.png')}.avatar-art.male{background-image:url('/references/male.png')}.avatar-card strong,.avatar-card small{display:block;margin-top:6px}.unavailable{opacity:.45;cursor:not-allowed}#travel{position:fixed;top:100px;left:22px;padding:10px 12px;border-radius:12px;background:#122c29d9;border:1px solid #ffffff24;font-size:12px}.travel-actions{display:flex;gap:6px;margin-top:8px}.travel-actions button{font-size:12px;padding:8px 10px}#touchControls{display:none;position:fixed;right:12px;bottom:145px;max-width:175px;gap:5px;flex-wrap:wrap}#touchControls button{width:38px;padding:9px 3px;touch-action:none;background:#17342ec9}canvas{touch-action:none}@media(pointer:coarse){#touchControls:not([hidden]){display:flex}}@media(max-height:800px){#profile{padding:20px}#profile h2{font-size:22px}.avatar-art{height:95px}.avatar-picker{margin:12px 0}#profile label{margin:9px 0}#profile input,#profile select{padding:9px 12px}#profile .avatar-card{margin:0}}@media(max-width:600px){#travel{top:92px;left:12px}#filters{z-index:5}#identity{align-items:start}}

.header-options{display:flex;flex-direction:column;align-items:flex-end;gap:10px}#qualityControl{pointer-events:auto;display:flex;align-items:center;gap:8px;margin:0;padding:7px 9px;background:#122c29e8;border:1px solid #ffffff24;border-radius:10px;font-size:12px}#qualityControl select{width:auto;margin:0;padding:7px 8px;font-size:12px;cursor:pointer}#qualityControl select:focus-visible{outline:2px solid #dfcea5;outline-offset:2px}@media(max-width:600px){header{right:12px}.brand{font-size:20px;letter-spacing:1px}#qualityControl{gap:4px;padding:5px}#qualityControl select{padding:6px 4px;font-size:11px}}

.marker.private{background:#bed9d8;border-color:#bed9d844;box-shadow:0 0 13px #bed9d8}#toggleVisibility{margin-top:12px}#myMemoryPanel{position:fixed;right:20px;top:100px;max-height:70vh;overflow:auto;z-index:6}#myMemoryList{display:grid;gap:9px;margin-top:18px}#myMemoryList button{text-align:left;line-height:1.7;overflow-wrap:anywhere}#visibilityError{color:#ffb6a9}
.celebration{width:min(800px,92vw);max-height:85vh;overflow:auto}.celebration form{display:grid;gap:12px}.celebration textarea{min-height:130px}.celebration article{padding:16px 0;border-bottom:1px solid #d8d2c6}.book-pages p{padding:16px;background:#f5f0e5;border-radius:12px}.teacher-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:14px;margin-top:20px}.teacher-card{text-align:left;padding:20px}.teacher-card img,.reason-photo{width:100%;max-height:240px;object-fit:contain;border-radius:12px}.teacher-card small{display:block}.activity-error{color:#a32838}.letter-content{white-space:pre-wrap;line-height:2}.secret-marker{background:#b77cff!important;box-shadow:0 0 20px #ac6cff!important}.npc-label{position:absolute;transform:translate(-50%,-100%);pointer-events:auto;background:#fff8e9;color:#483d32;padding:8px 12px;border:1px solid #bc9a68;border-radius:20px;white-space:nowrap}#secretPlace{position:fixed;left:20px;bottom:110px;z-index:8}#secretPlace:disabled{opacity:.45}.celebration input{max-width:100%}
/* Portrait windows use the supplied pair unchanged; frame only head and torso. */
.avatar-art.male,.avatar-art.female{height:180px;background-image:url('/references/selection-pair-1100.webp');background-size:290% auto;background-color:#f4f0eb}.avatar-art.male{background-position:20% 3%}.avatar-art.female{background-position:80% 5%}.avatar-card.unavailable{opacity:.8}.book-invitation{position:fixed;right:24px;bottom:110px;width:min(330px,calc(100vw - 48px));padding:24px;border-radius:18px;background:#fff5df;color:#343a31;z-index:12;box-shadow:0 15px 55px #0005;animation:book-arrives 1.2s cubic-bezier(.2,.8,.2,1) both}.book-invitation small{color:#79654b}.book-invitation h3{font-size:22px;margin:12px 0}.book-invitation p{line-height:1.7}.book-invitation .dismiss-book{background:transparent;color:#655f50;border:0}.celebration>.close{width:auto;min-width:44px;font-size:14px;padding:7px 10px}@keyframes book-arrives{from{opacity:0;transform:translate(90px,80px) rotate(10deg) scale(.65)}to{opacity:1;transform:none}}@media(max-height:800px){.avatar-art.male,.avatar-art.female{height:140px}}@media(prefers-reduced-motion:reduce){.book-invitation{animation:none}}
.marker,.marker.private,.marker.secret-marker{--glow:255,220,137;background:transparent!important;border:0;box-shadow:none!important;min-width:0;min-height:0;border-radius:50%;padding:0;isolation:isolate}.marker::before{content:'';position:absolute;inset:0;border-radius:50%;background:radial-gradient(circle,rgba(var(--glow),.7) 0%,rgba(var(--glow),.28) 23%,rgba(var(--glow),.09) 55%,rgba(var(--glow),0) 72%);pointer-events:none}.marker::after{content:'';position:absolute;left:41.67%;top:41.67%;width:16.66%;height:16.66%;border-radius:50%;background:#fff3cb;box-shadow:0 0 3px rgba(var(--glow),.8);pointer-events:none}.marker.secret-marker{--glow:188,130,255}.secret-marker::after{background:#ead3ff}.marker:hover{filter:brightness(1.3)}.task-list{display:grid;gap:12px}.task-row{display:flex;gap:14px;align-items:flex-start;text-align:left;padding:18px;border:1px solid #5e786b;border-radius:12px;background:#213c32;color:#fff5df;width:100%}.task-row strong{font-size:18px}.task-row p{color:#fff1d5;margin:9px 0;line-height:1.7}.task-check{font-size:25px;color:#ffdb8d;line-height:1.1}.task-state{display:inline-block;padding:3px 8px;margin-left:12px;background:#f5dfaa;color:#26392e;border-radius:5px;font-size:12px}.task-row b{color:#ffdf92}.memory-guide{position:fixed;inset:0;pointer-events:none;z-index:16}.guide-hole{position:fixed;outline:3px solid #ffdc85;border-radius:12px;box-shadow:0 0 0 9999px #07110fcc}.guide-card{pointer-events:auto;position:fixed;right:24px;width:min(360px,calc(100vw - 48px));padding:22px;background:#fff2d5;color:#21372d;border:2px solid #e5ba5a;border-radius:16px;box-shadow:0 12px 35px #0008}.guide-card strong{font-size:20px}.guide-card p{color:#21372d}.guide-card button{color:#fff;background:#264c3c}.celebration .eyebrow{color:#ffdc96}
.celebration article.task-row{padding:18px}
.flight-guide{position:fixed;inset:0;z-index:17;pointer-events:none;background:#07151388;display:flex;align-items:center;justify-content:flex-end;padding:30px}.flight-card{pointer-events:auto;width:min(430px,100%);padding:28px;border-radius:18px;border:2px solid #e9ca7d;background:#fff3d9;color:#233b30;box-shadow:0 15px 50px #0006}.flight-card small{color:#6b5735}.flight-card h2{font-size:25px;margin:12px 0}.flight-card p{color:#243e32;line-height:1.8}.flight-keys{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin:20px 0}.flight-key{display:grid;gap:7px;justify-items:center}.flight-key kbd{display:grid;place-items:center;width:55px;height:55px;border-radius:10px;background:#284d3d;color:white;border:2px solid #315e4b;font:bold 24px system-ui;box-shadow:0 4px 0 #142f24}.flight-key span,.flight-key b{font-size:12px}.flight-key.learned kbd{background:#c5e7be;color:#193521;border-color:#3d6c42}.flight-key b{color:#40513c}.flight-skip{background:#284d3d;color:white;width:100%;margin-top:5px}@media(max-width:600px){.flight-guide{padding:18px;align-items:flex-start;padding-top:200px}.flight-card{padding:18px}.flight-card h2{font-size:21px}}
.celebration.letter-page{background:#fff4dc;color:#283d31;border:1px solid #d7bc7d;width:min(700px,92vw)}.letter-page .eyebrow{color:#78603b}.celebration .welcome-letter{padding:0;border:0}.welcome-letter p{color:#304336;font-size:16px;line-height:2.1;margin:16px 0}.welcome-letter .letter-salutation{font-weight:600}.welcome-letter .letter-signature{text-align:right;color:#6b583b;font-size:14px;margin-top:28px}.letter-page #letterNext{display:block;margin:24px 0 0 auto;background:#2e503e;color:#fff4d8;border-color:#2e503e}
.letter-page h2{margin:12px 0}.welcome-letter p{font-size:15px;line-height:1.85;margin:12px 0}.welcome-letter .letter-signature{margin-top:16px}.letter-page #letterNext{position:sticky;bottom:0;margin-top:16px;box-shadow:0 0 0 8px #fff4dc}

/* Alumni book opens without leaving or identifying the anonymous game session. */
.alumni-overlay{width:min(1240px,96vw);height:92vh;max-width:96vw;max-height:95vh;padding:0;overflow:hidden;background:#f6f3eb;border-radius:14px;border:1px solid #b9c5ad}
.alumni-overlay iframe{border:0;width:100%;height:calc(100% - 43px);display:block;background:#f6f3eb}
.alumni-close{height:43px;width:100%;border:0;border-radius:0;padding:10px 20px;text-align:right;background:#214b3c;color:#fbf3df;font-size:12px}
@media(max-width:600px){.alumni-overlay{width:100vw;max-width:100vw;height:100dvh;max-height:100dvh;border-radius:0;margin:0}#toolbar{flex-wrap:wrap}#toolbar button{flex:auto}}
/* Landing recovery stays non-modal, so the player can immediately fly away. */
.landing-recovery{position:fixed;right:24px;top:104px;width:min(360px,calc(100vw - 32px));padding:20px;background:#fff3d9;color:#243d31;border:1px solid #e3c38c;border-radius:16px;box-shadow:0 12px 40px #0005;z-index:18}.landing-recovery h3{margin:0 20px 10px 0;font-size:19px}.landing-recovery p{color:#3a4e3e;font-size:13px;line-height:1.8;margin:8px 0}.landing-recovery small{color:#6d745e;line-height:1.7;display:block}.recovery-close{position:absolute;right:9px;top:7px;border:0;background:transparent;color:#54634b;font-size:24px;padding:4px 8px}.recovery-destinations{display:grid;gap:7px;margin:15px 0}.recovery-destinations button{background:#e8ebda;color:#294633;border-color:#cbd7be;text-align:left;font-size:13px;padding:10px 12px}.landing-recovery .primary{background:#2e503e;color:#fff4d8;border-color:#2e503e;width:100%}.task-teleport{display:block;margin-top:12px;background:#dfcea5;color:#20372d;border-color:#dfcea5;font-size:13px}.task-row>div{min-width:0;flex:1}.destination-list{display:grid;gap:12px}.destination-list button{display:grid;gap:7px;text-align:left;background:#213c32;padding:18px}.destination-list strong{font-size:19px}.destination-list span{font-size:13px;color:#d6decd}.destination-list b{color:#ffdf92;font-size:13px}@media(max-width:600px){.landing-recovery{right:16px;top:160px;padding:16px;max-height:calc(100dvh - 300px);overflow:auto}.landing-recovery h3{font-size:17px}.recovery-destinations{margin:10px 0}.task-teleport{width:100%;font-size:12px;padding:11px 8px}.task-row strong{font-size:16px}.task-state{margin-left:8px}.destination-list button{padding:14px}}
/* The postman's two destinations keep public youth letters and private capsules distinct. */
.postbox-intro{color:#d8dfcf;line-height:1.8}.letter-choices{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin:24px 0 8px}.letter-choice{display:flex;flex-direction:column;align-items:flex-start;text-align:left;gap:18px;padding:26px;border:1px solid #73836b;background:#243b31;color:#fff3d6;border-radius:14px}.letter-choice strong{font-size:23px;line-height:1.45}.letter-choice p{margin:0;line-height:1.8;color:#d8dfcf;font-size:14px}.letter-choice b{margin-top:auto;font-size:14px;color:#ffe1a0}.letter-choice.future{background:#e6d8b5;border-color:#e6d8b5;color:#223c30}.letter-choice.future p,.letter-choice.future b{color:#38523e}.letter-stamp{display:block;font-size:11px;letter-spacing:2px;opacity:.8}.letter-choice:disabled{opacity:.6;cursor:default}.letter-note{display:block;font-size:12px;line-height:1.8;color:#c7d3bd}.letter-back{display:block;margin-top:20px;background:transparent;border-color:#778974;color:#e5e9d9}.letter-year-input{display:flex;gap:12px;align-items:center}.letter-year-input input{max-width:135px}.letter-year-input span{white-space:nowrap;font-size:15px}.celebration .letter-arrival{margin:0;padding:14px 16px;border-left:3px solid #d4b56d;background:#324d3e;color:#ffedba;font-size:15px}.letter-preview-note{padding:12px 15px;border:1px dashed #9caa8c;border-radius:8px;font-size:12px;line-height:1.8;color:#dfdfc8}.future-letter-form textarea{min-height:160px}.sealed-letter{padding:28px;border:1px solid #ddc896;border-radius:12px;background:#efe3c5;color:#263d30}.sealed-letter h3{font-size:25px;margin:20px 0}.sealed-letter p{line-height:1.8;overflow-wrap:anywhere}.sealed-letter strong{color:#213a2b}@media(max-width:600px){.letter-choices{grid-template-columns:1fr;gap:12px;margin:16px 0}.letter-choice{padding:20px;gap:12px}.letter-choice strong{font-size:21px}.letter-choice p{font-size:13px}.sealed-letter{padding:20px}.sealed-letter h3{font-size:22px}.letter-arrival{font-size:13px}}
/* Clear instructions, followed by the feeling behind each activity. */
#welcome{overflow-y:auto;padding:60px 0}.intro-copy{font-size:16px;max-width:620px}.intro-note{font-size:13px;color:#b7c3b7;border-left:2px solid #8d9d84;padding-left:16px;margin:20px 0 26px}.intro h1{margin:18px 0}.teacher-trait{display:flex;align-items:center;gap:10px;font-size:18px}.teacher-trait input{flex:1;min-width:0;margin:0;font-size:15px}.teacher-trait>span{white-space:nowrap}.activity-rule{padding:14px 18px;border:1px solid #839575;border-radius:10px;font-size:13px;color:#d4ddcb}.letter-consent{align-items:flex-start;line-height:1.8;padding:14px;border:1px solid #7b8d71;border-radius:10px}.letter-consent input{flex:none;margin-top:5px}.memory-photo{display:block;max-width:100%;max-height:340px;object-fit:contain;border-radius:10px;margin:14px auto}#editor,#reader{max-height:86dvh;overflow:auto}#editor{width:min(560px,92vw)}.memory-intro{font-size:13px}#removeMemoryPhoto{font-size:12px;padding:7px 12px;margin-bottom:10px}#memoryPhotoInput{max-width:100%;font-size:12px}.task-row p{line-height:1.8}@media(max-width:600px){#welcome{padding:35px 0}.intro h1{font-size:36px;line-height:1.35;letter-spacing:3px}.intro-copy{font-size:14px}.intro-note{font-size:12px}.intro>button{margin-bottom:8px}.teacher-trait{gap:7px;font-size:15px}.teacher-trait input{padding:10px 8px;font-size:13px}.memory-photo{max-height:260px}}

.profile-school-fields{display:grid;grid-template-columns:1fr 1fr;gap:12px}.profile-school-fields label{min-width:0}.profile-school-fields:has(#yearLabel[hidden]){grid-template-columns:1fr}

/* Keep tutorial scrollable and clear of the touch movement area. */
.flight-card{max-height:calc(100dvh - 60px);overflow-y:auto;box-sizing:border-box}
@media(max-width:600px),(max-height:600px){.flight-guide{align-items:flex-start;justify-content:flex-start;padding:94px 12px 0}.flight-card{width:min(360px,calc(100vw - 24px));max-height:max(120px,calc(100dvh - 360px));padding:14px}.flight-card h2{font-size:18px;margin:6px 0}.flight-card p{font-size:13px;margin:8px 0}.flight-keys{margin:10px 0;gap:8px}.flight-key kbd{width:36px;height:36px;font-size:18px}.flight-skip{position:sticky;bottom:0}}

.campus-loading-screen{position:fixed;inset:0;z-index:100;display:grid;place-items:center;background:radial-gradient(ellipse at 50% 20%,#315c4b,#0d241f 75%);color:#fff3d9;padding:24px}.campus-loading-screen[hidden]{display:none}.campus-load-card{width:min(760px,90vw);text-align:center}.campus-load-card small{letter-spacing:.3em;color:#dfca90}.campus-load-card h2{font-size:clamp(22px,4vw,38px);margin:20px 0}.campus-load-stage{color:#eee2c4}.campus-load-number{display:block;font-size:clamp(54px,9vw,96px);font-variant-numeric:tabular-nums;color:#f3d280;margin:20px}.campus-load-track{height:18px;background:#061810;border:1px solid #d5b76d80;border-radius:20px;padding:3px;overflow:hidden}.campus-load-track span{display:block;height:100%;width:0;background:linear-gradient(90deg,#74aa78,#f6d78a);border-radius:16px;transition:width .25s;box-shadow:0 0 18px #e6c87880}.campus-load-card>p:last-child{font-size:13px;opacity:.75;margin-top:24px}

.collision-editor{position:fixed;right:12px;top:90px;z-index:90;width:310px;max-height:calc(100dvh - 115px);overflow:auto;background:#102d29f5;color:#f5e6c5;border:1px solid #e4c985;border-radius:12px;padding:16px;font-size:12px;box-shadow:0 8px 40px #0008}.collision-editor h3{margin:0 0 8px}.collision-editor p{font-size:12px;line-height:1.65}.collision-editor label{display:block;margin:8px 0}.collision-editor input[type=checkbox]{width:auto;margin-right:7px}.collision-editor input,.collision-editor select,.collision-editor textarea{width:100%;box-sizing:border-box;font-size:12px}.collision-editor button{padding:8px 10px;font-size:12px;margin:3px 2px}.collision-editor output,.collision-editor small{display:block;white-space:pre-wrap;line-height:1.6;color:#e4c985}.collision-editor textarea{font-family:monospace}@media(max-width:700px){.collision-editor{width:250px;max-height:50dvh;top:80px}}
