/* Caleb City — shared look ("Orbit & Orchard") */
:root{
  --brand:#613DAA; --night:#2A1A50; --deep:#21143F; --panel:#3E2775; --line:#5A3D9A; --line2:#7A5BC4;
  --text:#F3EFFF; --muted:#D8CEF3; --dim:#BBAEE2; --gold:#F5C66B; --red:#E5484D;
  --red-hover:#F0656A; --mint:#8FD6B0; --ink:#1C1533; --lilac:#C9B6FF;
}
*{box-sizing:border-box}
html,body{margin:0}
body{background:var(--night);color:var(--text);font-family:'Nunito Sans',system-ui,sans-serif}
button,input,textarea,select{font:inherit}
a{color:var(--lilac)}

.wrap{max-width:1280px;margin:0 auto;padding:28px 36px 48px;display:flex;flex-direction:column;gap:22px}
.top{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}
.top .center{text-align:center}
.eyebrow{margin:0;font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:var(--gold);font-weight:700}
.title{margin:2px 0 0;font-family:Sora,sans-serif;font-size:34px;font-weight:800}
h2{font-family:Sora,sans-serif}

.btn-ghost{height:44px;padding:0 16px;border-radius:12px;border:1px solid var(--line2);background:var(--panel);color:var(--text);font-weight:700;cursor:pointer;display:inline-flex;align-items:center;gap:8px;text-decoration:none}
.btn-ghost:hover{background:#4A2E85}
.btn{height:44px;padding:0 16px;border-radius:12px;border:0;background:var(--red);color:#fff;font-weight:800;cursor:pointer;white-space:nowrap}
.btn:hover{background:var(--red-hover)}
.btn:disabled{opacity:.55;cursor:not-allowed}
.btn.done{background:var(--mint);color:var(--ink)}
.pill{padding:10px 16px;border-radius:999px;background:var(--panel);border:1px solid var(--line);font-size:14px;font-weight:700}
.me{display:inline-flex;align-items:center;gap:8px;padding:8px 14px 8px 8px;border-radius:999px;background:var(--panel);border:1px solid var(--line);font-size:14px;font-weight:700}
.me .dot{width:26px;height:26px;border-radius:50%}
.card{background:var(--panel);border:1px solid var(--line);border-radius:20px;padding:22px;display:flex;flex-direction:column;gap:12px}
.field{width:100%;min-width:0;height:44px;padding:0 14px;border-radius:12px;border:1px solid var(--line2);background:var(--night);color:var(--text);font-size:15px}
textarea.field{height:auto;padding:12px 14px;line-height:1.5;resize:vertical}
label{font-size:13px;font-weight:700;color:#E4DCFF}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chip{height:40px;padding:0 14px;border-radius:999px;border:1px solid var(--line2);background:var(--night);color:var(--text);font-size:13px;font-weight:700;cursor:pointer}
.chip[aria-pressed="true"]{background:var(--gold);border-color:var(--gold);color:var(--ink)}
.muted{color:var(--muted)}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
:focus-visible{outline:3px solid var(--gold);outline-offset:2px}

/* Chinese / Japanese / Korean: good system fonts, no extra downloads */
html:lang(zh-CN) body{font-family:'Nunito Sans','PingFang SC','Microsoft YaHei','Noto Sans SC',system-ui,sans-serif}
html:lang(zh-Hant) body{font-family:'Nunito Sans','PingFang TC','Microsoft JhengHei','Noto Sans TC',system-ui,sans-serif}
html:lang(ja) body{font-family:'Nunito Sans','Hiragino Sans','Yu Gothic UI','Meiryo','Noto Sans JP',system-ui,sans-serif}
html:lang(ko) body{font-family:'Nunito Sans','Apple SD Gothic Neo','Malgun Gothic','Noto Sans KR',system-ui,sans-serif}
html:lang(zh-CN) .title,html:lang(zh-Hant) .title,html:lang(ja) .title,html:lang(ko) .title{letter-spacing:0}

/* Language + music controls */
.controls{display:inline-flex;align-items:center;gap:8px}
.ctl{height:40px;padding:0 12px;border-radius:999px;border:1px solid var(--line2);background:var(--panel);color:var(--text);font-size:13px;font-weight:700;display:inline-flex;align-items:center;gap:6px;cursor:pointer}
.ctl:hover{background:#4A2E85}
.ctl-music[aria-pressed="true"],.ctl-citymusic[aria-pressed="true"]{border-color:var(--gold);color:var(--gold)}
.top .top-right .me{display:none}   /* inside a place there is no account button (the city keeps it) */
/* language menu: unfolds under its button (in the city's left column it pushes the buttons below down) */
.ctl-langwrap{position:relative;display:inline-flex;flex-direction:column;align-items:flex-start}
.ctl-lang{font:inherit;font-size:13px;font-weight:700}
.lang-caret{width:6px;height:6px;margin:-3px 2px 0 2px;border-right:1.8px solid currentColor;border-bottom:1.8px solid currentColor;transform:rotate(45deg);transition:transform .25s ease;opacity:.75}
.ctl-langwrap.open .lang-caret{transform:translateY(3px) rotate(-135deg)}
.lang-list{position:absolute;top:calc(100% + 6px);left:0;z-index:60;display:grid;min-width:100%;padding:4px;box-sizing:border-box;border-radius:16px;border:1px solid var(--line2);background:var(--panel);box-shadow:0 10px 24px rgba(20,10,50,.35);
  opacity:0;visibility:hidden;transform:translateY(-4px);transition:opacity .2s ease,transform .2s ease,visibility 0s .2s}
.ctl-langwrap.open .lang-list{opacity:1;visibility:visible;transform:none;transition:opacity .2s ease,transform .2s ease}
.lang-list button{all:unset;box-sizing:border-box;padding:8px 12px;border-radius:12px;font-size:13px;font-weight:700;color:var(--text);cursor:pointer;white-space:nowrap}
.lang-list button:hover,.lang-list button:focus-visible{background:#4A2E85}
.lang-list button[aria-checked="true"]{color:var(--gold);background:rgba(245,198,107,.12)}
.ctl-lang{color-scheme:dark}
/* in a column (the city's left side) the menu takes room in the column, smoothly, so the buttons below glide down */
.hud .lang-list{position:static;max-height:0;margin-top:0;padding:0 4px;border-width:0;overflow:hidden;box-shadow:none;transform:none;
  transition:max-height .32s ease,margin-top .32s ease,padding .32s ease,opacity .22s ease,visibility 0s .32s}
.hud .ctl-langwrap.open .lang-list{max-height:260px;margin-top:6px;padding:4px;border-width:1px;transition:max-height .32s ease,margin-top .32s ease,padding .32s ease,opacity .22s .06s ease}
.hud .controls{align-items:flex-start}
.top-right{display:inline-flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:flex-end}

/* Music Station: a framed board standing at the bottom of the page, like the city's poster billboards */
.music-station{width:min(560px,100%);margin:64px auto 16px;display:flex;flex-direction:column;align-items:center}
.ms-sign{display:inline-flex;align-items:center;gap:8px;padding:8px 20px;border-radius:12px 12px 0 0;background:var(--gold);color:var(--ink);font-family:Sora,sans-serif;font-size:14px;font-weight:800;letter-spacing:.06em}
.ms-frame{width:100%;padding:10px;border-radius:14px;background:#4A2E85;border:4px solid var(--gold);box-shadow:0 0 0 3px #2A1A50,0 18px 40px rgba(0,0,0,.45),0 0 48px rgba(245,198,107,.14)}
.ms-screen{position:relative;aspect-ratio:16/9;border-radius:8px;overflow:hidden;background:#000}
.ms-screen iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.ms-cover{position:absolute;inset:0;width:100%;border:0;padding:0;cursor:pointer;background:#1C1533 center/cover no-repeat;display:flex;align-items:center;justify-content:center}
.ms-cover::before{content:"";position:absolute;inset:0;background:rgba(10,8,24,.5)}
.ms-play{position:relative;width:72px;height:72px;border-radius:50%;background:var(--red);display:flex;align-items:center;justify-content:center;box-shadow:0 8px 24px rgba(0,0,0,.4);transition:transform .15s}
.ms-cover:hover .ms-play,.ms-cover:focus-visible .ms-play{transform:scale(1.08)}
.ms-legs{display:flex;justify-content:space-between;width:58%;height:34px}
.ms-legs i{width:8px;background:#7A5BC4;border-radius:0 0 3px 3px}
.ms-caption{display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center;margin-top:8px}
.ms-caption b{font-family:Sora,sans-serif;font-size:15px}
.ms-caption small{color:var(--dim);font-size:13px}

/* 3D islet backdrop behind the inner pages (scene3d.js) */
html{background:var(--night)}
canvas.bg3d{position:fixed;inset:0;width:100vw;height:100vh;z-index:-1;display:block}
html.has3d body{background:transparent !important}
.hero-space{height:clamp(170px,32vh,320px)}
.hero-space.short{height:clamp(120px,22vh,220px)}
html:not(.has3d) .hero-space{height:0}
.has3d .top .title{text-shadow:0 2px 14px rgba(26,15,56,.55)}
/* the glide between the city and a place: fade through the night colour */
.page-fade{position:fixed;inset:0;z-index:100;pointer-events:none;background:#2A1A50;opacity:1;transition:opacity .7s ease}
.page-fade.off{opacity:0}
html.arriving .wrap > :not(.top):not(.hero-space){animation:riseIn .9s ease .35s both}
@keyframes riseIn{from{opacity:0;transform:translateY(24px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){html.arriving .wrap > *{animation:none}}

/* Small "Translate" link under visitor-written text */
.tr-link{font-size:12px;font-weight:700;color:inherit;opacity:.75}
.tr-link:hover{opacity:1}

@media (max-width:900px){
  .wrap{padding:20px 16px 40px}
  .title{font-size:28px}
}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

/* ---------- walk-in places (room3d.js): one calm layout in every place ----------
   left, top to bottom: Back (where the city keeps your account), then language and music
   right, top: camera and album (photo.js)
   right, bottom: what you can do in this room, one solid button under another (no bar round them)
   bottom left: the joystick. No walking hint: the joystick and the glowing things say enough. */
.room-stick{position:fixed;left:18px;bottom:22px;z-index:4;width:116px;height:116px;border-radius:50%;background:rgba(42,26,80,.55);border:2px solid rgba(201,182,255,.55);touch-action:none;display:flex;align-items:center;justify-content:center}
.room-stick i{width:50px;height:50px;border-radius:50%;background:#C9B6FF;box-shadow:0 4px 12px rgba(0,0,0,.35);pointer-events:none;transition:transform .06s}
html.on-ride .room-stick{opacity:0;pointer-events:none}
html.room body .top{position:relative}
html.room body .top .center{position:absolute;left:0;right:0;top:0;padding:0 150px;text-align:center;pointer-events:none}
html.room body .top .top-right{position:fixed;left:20px;top:68px;z-index:4;display:flex;flex-direction:column;align-items:flex-start;gap:8px}
html.room body .top .top-right .controls{display:flex;flex-direction:column;align-items:flex-start;gap:8px}
html.room body .top .top-right .pill,html.room body .top .top-right .me{display:none}
html.room body .top .ctl{background:rgba(30,18,64,.42);border-color:rgba(201,182,255,.28);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
html.room body .room-hint:not(.keep){display:none}
html.room body .room-hud:not(.orch-hud):not(.neth-hud){left:auto;right:18px;bottom:22px;transform:none;width:auto;max-width:none;flex-direction:column;flex-wrap:nowrap;align-items:flex-end;gap:8px;padding:0;border:0;border-radius:0;background:none;box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none}
html.room body .room-hud:not(.orch-hud):not(.neth-hud) :is(.chip,.btn){height:38px;padding:0 16px;border-radius:999px;font-size:13px;box-shadow:0 6px 16px rgba(10,6,30,.3)}
html.room body .room-hud:not(.orch-hud):not(.neth-hud) .chip:not(.todo-btn){background:rgba(42,26,80,.92);border-color:rgba(201,182,255,.4);color:#F3EFFF}
html.room body .room-hud:not(.orch-hud):not(.neth-hud) .chip[aria-pressed="true"]:not(.todo-btn){background:#F5C66B;border-color:#F5C66B;color:#2A1A50}
html.room body .room-hud:not(.orch-hud):not(.neth-hud) .hud-title{display:inline-flex;align-items:center;height:32px;max-width:240px;padding:0 12px;border-radius:999px;background:rgba(42,26,80,.88);border:1px solid rgba(201,182,255,.35);color:#F3EFFF;font-size:12px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
html.room body .room-hud .hud-row{display:flex;align-items:center;gap:6px}
html.room body .room-hud .minimap.in-stack{position:relative;right:auto;bottom:auto;margin-bottom:4px}   /* the park's map, at the top of its stack, just above the stamps */
html.on-ride .room-hud .minimap.in-stack{opacity:1;pointer-events:auto}
html.room body .room-hud .hud-row .round{width:32px;height:32px;border-radius:50%;border:1px solid rgba(201,182,255,.4);background:rgba(42,26,80,.92);color:#F3EFFF;font-size:18px;line-height:1;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;padding:0}
body[data-scene="cloudsea"] .room-hud .hud-title{display:none}    /* the page title already says Sea of Clouds */
@media (max-width:700px){
  html.room .wrap{padding:10px 12px}
  html.room .top{flex-wrap:nowrap;gap:8px;align-items:center}
  html.room .top .eyebrow{display:none}
  html.room .top .title{font-size:18px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  html.room .top .btn-ghost{height:36px;padding:0 10px;font-size:13px}
  html.room body .top .center{padding:0 116px;top:4px}
  html.room body .top .top-right{left:22px;top:64px;gap:8px}
  html.room body .top .top-right .controls{gap:8px}
  html.room body .top .ctl{height:32px;padding:0 10px;font-size:12px}
  /* phones: everything at the bottom sits a little higher, clear of the toolbar in-app browsers (X, Instagram…) lay over the page */
  html.room .room-stick{bottom:calc(66px + env(safe-area-inset-bottom, 0px));left:14px;width:100px;height:100px}
  html.room .room-stick i{width:44px;height:44px}
  html.room body .room-hud:not(.orch-hud):not(.neth-hud){right:10px;bottom:calc(66px + env(safe-area-inset-bottom, 0px));gap:6px}
  html.room body .room-hud:not(.orch-hud):not(.neth-hud) :is(.chip,.btn){height:32px;padding:0 12px;font-size:12px}
  html.room body .room-hud:not(.orch-hud):not(.neth-hud) .hud-title{height:28px;max-width:170px;font-size:11px}
  html.room body .room-hud .hud-row .round{width:28px;height:28px;font-size:16px}
  html.room body #letter{bottom:194px}
  html.room body .ride-card{bottom:194px}
  html.room body .room-stop{bottom:calc(70px + env(safe-area-inset-bottom, 0px));height:40px;padding:0 18px;font-size:14px}   /* low and small, out of the view, still clear of in-app browser bars */
}

/* 幽冥 (the lotus): a dreamy veil — ink mist, falling petals, pearls, words drifting into focus */
.lotus-veil{position:fixed;inset:0;z-index:230;display:flex;align-items:center;justify-content:center;overflow:hidden;cursor:pointer;opacity:0;visibility:hidden;transition:opacity 1s ease,visibility 0s 1s;
  background:radial-gradient(ellipse at 50% 55%,rgba(40,34,96,.5),rgba(8,8,28,.9) 72%);backdrop-filter:blur(8px) saturate(1.25);-webkit-backdrop-filter:blur(8px) saturate(1.25);outline:none}
.lotus-veil.on{opacity:1;visibility:visible;transition:opacity 1.1s ease}
.lv-mist{position:absolute;width:70vmax;height:70vmax;border-radius:50%;filter:blur(60px);opacity:.55;mix-blend-mode:screen;animation:lvMist 18s ease-in-out infinite alternate;pointer-events:none}
.lv-mist.a{background:radial-gradient(circle,#4F8FE8,transparent 65%);left:-22vmax;top:-12vmax}
.lv-mist.b{background:radial-gradient(circle,#8E62DA,transparent 65%);right:-26vmax;bottom:-22vmax;animation-duration:23s}
.lv-mist.c{background:radial-gradient(circle,#E987C9,transparent 60%);left:18vmax;bottom:-38vmax;opacity:.42;animation-duration:27s}
@keyframes lvMist{to{transform:translate(8vmax,-6vmax) scale(1.15) rotate(25deg)}}
.lv-petal{position:absolute;top:-8vh;border-radius:50% 50% 50% 50%/72% 72% 28% 28%;background:linear-gradient(#FFF2FB,#EBB0EE 60%,#AE68D8);opacity:.7;filter:drop-shadow(0 0 7px rgba(235,176,238,.7));animation:lvFall linear infinite;pointer-events:none}
@keyframes lvFall{to{transform:translate(var(--dx),116vh) rotate(var(--r))}}
.lv-petal.blue{background:linear-gradient(#F4FCFF,#A8DAFF 60%,#5C82EE);filter:drop-shadow(0 0 7px rgba(168,218,255,.7))}
.lv-pearl{position:absolute;border-radius:50%;background:radial-gradient(circle at 35% 30%,#fff,#DDE7F6 40%,rgba(180,200,235,.15) 72%);box-shadow:0 0 18px rgba(220,235,255,.55);animation:lvPearl 6s ease-in-out infinite alternate;pointer-events:none}
@keyframes lvPearl{to{transform:translateY(-24px)}}
.lotus-msg{position:relative;max-width:min(680px,92vw);text-align:center;color:#F3EEFF;display:flex;flex-direction:column;align-items:center;gap:14px;padding:20px;animation:lvFloat 5s ease-in-out infinite alternate}
@keyframes lvFloat{to{transform:translateY(-10px)}}
.lotus-msg svg{width:140px;height:100px;filter:drop-shadow(0 0 12px rgba(201,182,255,.9));opacity:0;animation:lvIn 1.4s .2s forwards}
.lotus-msg p{margin:0}
.lv-title{font-family:"STKaiti","KaiTi","Kaiti SC","楷体","Noto Serif SC","Songti SC",serif;font-size:clamp(26px,5.2vw,46px);line-height:1.4;letter-spacing:.1em;
  text-shadow:0 0 18px rgba(201,182,255,.95),0 0 44px rgba(111,184,255,.75),0 0 70px rgba(229,155,230,.55)}
.lv-title span{display:inline-block;white-space:pre;opacity:0;filter:blur(10px);transform:translateY(10px);animation:lvIn 1s forwards}
.lv-title span.whole{white-space:normal;animation-duration:1.6s;font-family:Georgia,"Times New Roman",serif;font-style:italic;letter-spacing:.03em}   /* a whole line (English…): wraps normally, and fades in a little slower */
.lv-face{font-size:clamp(20px,3.8vw,32px);color:#FFE9F2;text-shadow:0 0 14px rgba(245,154,181,.85);opacity:0;filter:blur(8px);animation:lvIn 1.2s forwards}
.lv-seal{display:inline-flex;align-items:center;justify-content:center;width:44px;height:58px;border:2px solid #E84A5F;border-radius:5px;color:#FFE3E3;background:rgba(176,35,58,.85);
  font-family:"STKaiti","KaiTi","Kaiti SC","楷体",serif;font-size:19px;line-height:1.1;transform:rotate(-6deg);box-shadow:0 0 16px rgba(232,74,95,.5);opacity:0;animation:lvSeal .6s forwards}
@keyframes lvSeal{from{opacity:0;transform:rotate(-6deg) scale(1.8)}to{opacity:.92;transform:rotate(-6deg) scale(1)}}
.lv-tap{font-size:12px;letter-spacing:.08em;color:#BFB4E6;opacity:0;animation:lvIn 1s forwards}
@keyframes lvIn{to{opacity:1;filter:blur(0);transform:none}}
@media (prefers-reduced-motion:reduce){.lv-petal,.lv-mist,.lotus-msg,.lv-pearl{animation:none}}

/* ---------- the mini map (minimap.js; the city and the park): see-through until you point at it ---------- */
.minimap{position:fixed;right:14px;bottom:16px;z-index:4;width:200px;padding:8px;box-sizing:border-box;border-radius:18px;background:rgba(30,18,64,.34);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);opacity:.78;cursor:pointer;transition:opacity .35s,transform .35s,width .4s ease,background .35s;user-select:none;-webkit-user-select:none}
.minimap.open{width:min(440px,calc(100vw - 28px));opacity:1;cursor:default;background:rgba(30,18,64,.62);z-index:30}
.mm-names{opacity:0;transition:opacity .2s}
.minimap.open .mm-names{opacity:1;transition:opacity .3s .25s}
.minimap:hover,.minimap:focus-within{opacity:1}
.minimap.away{opacity:0;pointer-events:none;transform:translateY(8px)}
.minimap svg{display:block;width:100%;height:auto;overflow:visible}
.mm-land{fill:rgba(243,239,255,.14);stroke:rgba(243,239,255,.6);stroke-width:1;stroke-linejoin:round}
.mm-extra{fill:rgba(243,239,255,.12);stroke:rgba(243,239,255,.35);stroke-width:.6}
.mm-path{stroke:rgba(243,239,255,.38);stroke-width:1.8;stroke-linecap:round}
.mm-track{fill:none;stroke:rgba(229,72,77,.55);stroke-width:1.1;stroke-linejoin:round}
.mm-dash{fill:none;stroke:rgba(201,182,255,.85);stroke-width:1.2;stroke-dasharray:3 2.4;stroke-linecap:round;stroke-linejoin:round}
.mm-place.far circle.mm-hit{fill:transparent;stroke:none}
.mm-lotus{fill:rgba(183,164,255,.42);stroke:rgba(225,214,255,.95);stroke-width:.55;stroke-linejoin:round;transition:fill .2s}
.mm-place.on .mm-lotus,.mm-place:focus .mm-lotus{fill:rgba(201,182,255,.85)}
.mm-place{cursor:pointer;outline:none}
.mm-place circle{fill:rgba(42,26,80,.5);stroke:rgba(245,198,107,.7);stroke-width:.8;transition:fill .2s}
.mm-place.on circle,.mm-place:focus circle{fill:rgba(245,198,107,.9)}
.mm-place text{font-size:6.6px;text-anchor:middle;dominant-baseline:central;pointer-events:none}
.mm-name{font-weight:700;fill:rgba(255,255,255,.72);paint-order:stroke;stroke:rgba(30,18,64,.45);stroke-width:1.4px;dominant-baseline:central;pointer-events:none;font-family:Sora,"Microsoft YaHei",sans-serif}
.mm-me circle{fill:#E5484D;stroke:#fff;stroke-width:1.2}
.mm-me path{fill:#fff}
.mm-fold{all:unset;position:absolute;left:-6px;top:-6px;z-index:1;width:22px;height:22px;border-radius:50%;background:rgba(42,26,80,.85);color:#F3EFFF;font-size:13px;font-weight:800;display:flex;align-items:center;justify-content:center;cursor:pointer}
.mm-fold-map{display:none}
.mm-close{all:unset;display:none;position:absolute;right:8px;top:8px;z-index:1;width:26px;height:26px;border-radius:50%;background:rgba(42,26,80,.9);color:#F3EFFF;font-size:16px;font-weight:800;align-items:center;justify-content:center;cursor:pointer}
.mm-plus{position:absolute;right:-6px;top:-6px;z-index:1;width:22px;height:22px;border-radius:50%;background:rgba(42,26,80,.85);color:#F5C66B;font-size:17px;font-weight:800;line-height:1;display:flex;align-items:center;justify-content:center;pointer-events:none;box-shadow:0 2px 8px rgba(10,6,30,.35)}   /* a little + : this map opens */
.minimap.open .mm-plus,.minimap.folded .mm-plus{display:none}
.minimap.open .mm-close{display:flex}
.minimap.open .mm-fold{display:none}
.minimap.folded{width:38px;padding:0;background:none;-webkit-backdrop-filter:none;backdrop-filter:none;opacity:.85}
.minimap.folded svg{display:none}
.minimap.folded .mm-fold{position:static;width:38px;height:38px;font-size:18px}
.minimap.folded .mm-fold-x{display:none}
.minimap.folded .mm-fold-map{display:inline}
html.on-ride .minimap,html.show-passport .minimap{opacity:0;pointer-events:none}
@media (max-width:700px){.minimap{width:150px;bottom:92px;right:10px}.minimap.open{width:calc(100vw - 20px)}}
@media (max-height:520px){.minimap{width:160px}}

/* little drawings (doodle.js): the drawing board on notes and in the journal */
.doodle-pad{display:flex;flex-direction:column;align-items:center;gap:8px;width:100%}
.doodle-canvas{display:block;width:min(100%,400px);aspect-ratio:3/2;height:auto;background:#FFFDF6;border:2px dashed rgba(28,21,51,.3);border-radius:10px;cursor:crosshair;touch-action:none}
.doodle-tools{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:6px}
.doodle-tools button{width:28px;height:28px;padding:0;border-radius:50%;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;font:inherit;font-size:15px;line-height:1}
.dd-col{background:var(--c);border:2px solid rgba(28,21,51,.25)}
.dd-eraser{background:rgba(255,255,255,.7);width:34px !important;border-radius:10px !important}
.dd-col[aria-pressed="true"]{border-color:#1C1533;box-shadow:0 0 0 2px #FFFDF6,0 0 0 4px #1C1533}
.dd-size,.dd-act{background:rgba(255,255,255,.6);border:1.5px solid rgba(28,21,51,.35);color:#1C1533}
.dd-size i{display:block;border-radius:50%;background:#1C1533}
.dd-size[aria-pressed="true"]{background:#1C1533}.dd-size[aria-pressed="true"] i{background:#F5C66B}
.dd-gap{width:6px}
.doodle-svg{display:block;width:100%;max-width:360px;aspect-ratio:3/2;height:auto;background:rgba(255,253,246,.85);border-radius:10px}

/* "the city has been updated, tap to see": a small note at the top (shared.js, after sw.js finds a newer version) */
.cc-update{position:fixed;left:50%;bottom:104px;z-index:520;transform:translate(-50%,12px);opacity:0;transition:opacity .4s,transform .4s;
  height:36px;padding:0 16px;border-radius:999px;border:1px solid rgba(245,198,107,.7);background:rgba(42,26,80,.94);color:#FFF4D6;
  font:inherit;font-size:13px;font-weight:800;cursor:pointer;box-shadow:0 10px 26px rgba(10,6,30,.45);white-space:nowrap;max-width:calc(100vw - 24px);overflow:hidden;text-overflow:ellipsis}
.cc-update.on{opacity:1;transform:translate(-50%,0)}
.cc-update:hover{background:#4A2E85}
@media (max-width:700px){.cc-update{bottom:calc(150px + env(safe-area-inset-bottom, 0px))}}   /* phones: above the bottom controls, clear of the buttons at the top */
