@charset "UTF-8";
:root{--bg:#f6f0e4;--surface:#fffdf7;--ink:#243e39;--muted:#596d64;--line:#d8dccb;--primary:#2f7a6b;--accent:#d9792f;--shadow:0 18px 65px #203c3920;color-scheme:light;font-family:"Noto Sans TC","Microsoft JhengHei",sans-serif}
html[data-theme=mist]{--bg:#dcebee;--surface:#f1f8f7;--ink:#23454b;--muted:#4c6970;--line:#b8d0d2}
html[data-theme=night]{--bg:#16222e;--surface:#23343f;--ink:#edf3e8;--muted:#bdccc7;--line:#48605f;--primary:#82c4af;--accent:#edac70;color-scheme:dark}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--ink);transition:background 1.6s,color 1.6s;font-size:14px;line-height:1.7}button,input,select,textarea{font:inherit;color:inherit}button,a,input,select,textarea{touch-action:manipulation}button{cursor:pointer;min-height:44px;border:1px solid var(--line);border-radius:9px;background:var(--surface);padding:9px 15px;transition:background .2s,transform .2s}button:hover{background:var(--bg);transform:translateY(-1px)}button:disabled{opacity:.48;cursor:not-allowed;transform:none}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid var(--accent);outline-offset:3px}a{color:var(--primary)}p{margin:0 0 16px}h1,h2,h3{line-height:1.35;margin:0}h2{font-size:25px}h3{font-size:18px}small{font-size:12px}button.primary,.primary{background:var(--primary);color:var(--bg);border-color:transparent}.icon{width:44px;padding:7px;font-size:18px}.eyebrow{font-size:10px;font-weight:700;letter-spacing:2.2px;color:var(--muted)}[hidden]{display:none!important}.skip-link{position:fixed;top:-100px;z-index:100;background:var(--surface);padding:12px}.skip-link:focus{top:0}.topbar{height:90px;padding:0 42px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line);position:relative;z-index:5;background:var(--bg)}.brand{display:flex;gap:11px;align-items:center;text-decoration:none;color:var(--ink);font-size:19px;font-weight:800;letter-spacing:1px;line-height:1.35}.brand small{display:block;letter-spacing:3px;font-weight:400;font-size:10px;margin-top:4px}.top-status{display:flex;gap:10px;align-items:center;font-size:11px;color:var(--muted)}.status-dot{width:6px;height:6px;border-radius:50%;background:var(--primary)}.status-divider{opacity:.4}.header-actions{display:flex;align-items:center;gap:10px}.header-actions button{font-size:12px}.header-actions .icon{border-radius:50%}#stamp-count{display:inline-block;margin-left:10px;opacity:.8}.world{height:min(760px,76vw);min-height:580px;position:relative;overflow:hidden;background:linear-gradient(160deg,#ecf2e5,#a4d1cd);isolation:isolate}#scene,#scene>canvas,#meteors,.sea-vignette{position:absolute;inset:0;width:100%;height:100%}#scene>canvas{outline:none;touch-action:none}.sea-vignette{pointer-events:none;background:linear-gradient(90deg,var(--bg),transparent 42%),linear-gradient(0deg,var(--bg),transparent 20%);opacity:.55}#meteors{pointer-events:none;z-index:2}.intro-copy{position:absolute;left:48px;top:54px;pointer-events:none;max-width:360px;z-index:2}.intro-copy h1{font-size:48px;letter-spacing:2px;font-weight:800;margin:16px 0 18px}.intro-copy h1>span{display:block}.title-dot{color:var(--accent)}.intro-copy p{font-size:13px;letter-spacing:1px}.hero-caption{font-size:11px;color:var(--muted);display:flex;gap:10px;align-items:center}.tiny-line{height:1px;width:25px;background:var(--accent)}.compass{position:absolute;right:44px;top:28px;text-align:center;font:10px Georgia,serif;color:var(--ink);opacity:.7}.compass span{display:block}.scene-tools{position:absolute;right:36px;top:150px;display:grid;gap:10px;z-index:3}.scene-tools button{display:flex;align-items:center;gap:10px;background:var(--surface);box-shadow:0 4px 16px #203c390b;border:1px solid #ffffff50;font-size:12px;border-radius:30px}.scene-tools button>span{font-size:20px}.world-bottom{position:absolute;bottom:22px;left:42px;right:42px;display:flex;justify-content:space-between;align-items:center;gap:12px;font-size:11px;color:var(--muted);z-index:3}.world-bottom button{border:0;background:transparent;font-size:11px}#scene-state{position:absolute;bottom:68px;left:50%;transform:translateX(-50%);text-align:center;font-size:11px;background:var(--surface);border-radius:30px;padding:6px 16px;max-width:80%;z-index:3}.island-label{position:absolute;top:0;left:0;z-index:2;min-width:120px;pointer-events:auto;border-radius:6px;box-shadow:0 5px 16px #163d3a15;padding:8px 14px;display:flex;gap:9px;align-items:center;font-size:13px;white-space:nowrap;border:1px solid #ffffff90;background:var(--surface);will-change:transform;transform-origin:center;transition:opacity .2s}.island-label b{color:var(--accent);font-size:11px}.island-label small{display:block;font-size:9px;color:var(--muted);line-height:1.4}.island-label.center-label{min-width:150px;font-size:11px}.island-label:after{content:"";position:absolute;left:50%;top:100%;height:17px;width:1px;background:var(--primary);opacity:.6}.labels-dim .island-label{opacity:.15!important}.island-section{position:relative;padding:34px 48px 38px;z-index:3}.section-heading{display:flex;justify-content:space-between;align-items:end;gap:20px;margin-bottom:25px}.section-heading h2{font-size:23px;margin-top:6px;letter-spacing:1px}.search{display:flex;gap:9px;align-items:center;border-bottom:1px solid var(--line);padding:3px 0;min-width:245px}.search>span{font-size:25px}.search input{background:transparent;border:0;min-width:0;width:100%;height:44px;font-size:12px;outline-offset:0}.island-cards{display:grid;grid-template-columns:repeat(4,1fr);gap:18px}.island-card{border-top:1px solid var(--line);padding:20px 0 0;position:relative}.island-card .card-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.card-number{font:italic 28px Georgia,serif;color:var(--accent)}.card-category{font-size:10px;letter-spacing:1px;color:var(--muted)}.island-card h3{font-size:17px;margin:0 0 8px}.island-card p{font-size:12px;color:var(--muted);margin:0 0 10px;min-height:42px;max-width:260px}.island-card button{border:0;background:none;color:var(--primary);padding:0;font-size:12px;font-weight:700;display:flex;align-items:center;justify-content:space-between;width:100%}.island-card button span{font-size:22px;font-weight:400}.island-card .card-status{font-size:10px;color:var(--muted)}.log-strip{margin:0 48px;padding:25px 0;display:flex;align-items:center;gap:20px;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.log-strip p{margin:5px 0 0;font-size:14px}.log-strip button{margin-left:auto;border:0;background:none;font-size:12px}footer{padding:36px 48px 90px;display:flex;gap:40px;justify-content:space-between;font-size:11px;color:var(--muted)}footer p{margin:5px 0}footer strong{font-size:12px;color:var(--ink)}footer details{max-width:380px}footer summary{cursor:pointer;min-height:44px}footer a{overflow-wrap:anywhere}.settings-dock{position:fixed;bottom:18px;left:50%;transform:translateX(-50%);display:flex;gap:1px;z-index:12;box-shadow:var(--shadow);padding:4px;background:var(--surface);border:1px solid var(--line);border-radius:40px}.settings-dock button{background:transparent;border:0;border-radius:30px;font-size:12px;padding:6px 14px}.settings-dock button+button{border-left:1px solid var(--line)}#settings{position:fixed;left:50%;bottom:82px;transform:translateX(-50%);width:min(380px,calc(100% - 24px));padding:24px;background:var(--surface);border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow);z-index:15}#settings h2{font-size:18px;margin-bottom:20px}fieldset{border:0;padding:0;margin:0 0 15px}legend{font-size:12px;margin-bottom:7px}.theme-options{display:flex;flex-wrap:wrap;gap:5px}.theme-options button{font-size:11px;padding:5px 9px}.theme-options button[aria-pressed=true]{border-color:var(--primary);background:var(--bg)}#settings>label{display:flex;align-items:center;justify-content:space-between;font-size:12px;margin-bottom:10px}select,input,textarea{border:1px solid var(--line);background:var(--bg);border-radius:7px;padding:10px;min-height:44px;max-width:100%}.check input{width:20px;min-height:20px}#panel-backdrop{position:fixed;inset:0;background:#142b3030;z-index:20;backdrop-filter:blur(2px)}#panel{position:fixed;right:0;top:0;bottom:0;width:min(520px,100%);overflow:auto;overscroll-behavior:contain;background:var(--surface);box-shadow:var(--shadow);z-index:21;padding:50px 36px 90px}.panel-close{position:absolute;right:16px;top:16px;border:0;background:transparent}.panel-illustration{height:110px;display:flex;align-items:center;font-size:64px;border-bottom:1px solid var(--line);margin-bottom:24px;gap:20px}.panel-illustration span+span{font:italic 72px Georgia,serif;color:var(--line)}#panel h2{margin:8px 0 15px;font-size:30px}.lead{font-size:15px;line-height:1.9}.badge{display:inline-block;font-size:10px;padding:3px 8px;border-radius:5px;background:var(--bg);color:var(--muted);margin:3px 3px 3px 0}.data-board{border:1px solid var(--line);background:var(--bg);border-radius:12px;padding:18px;margin:22px 0}.data-board h3{font-size:14px;margin-bottom:14px}.metrics{display:flex;flex-wrap:wrap;gap:18px}.metric{flex:1;min-width:80px}.metric b{display:block;font-size:27px;font-weight:500;color:var(--primary)}.metric small{font-size:11px;color:var(--muted)}.data-meta{font-size:10px;margin-top:13px;color:var(--muted)}.article-block{border-top:1px solid var(--line);padding:22px 0}.article-block h3{margin-bottom:10px}.article-block p{font-size:13px;line-height:1.9}.article-block ul{padding-left:20px;font-size:13px}.npc-card{padding:18px;background:var(--bg);border-radius:12px;margin:15px 0}.npc-card h3{font-size:15px}.npc-card p{font-size:12px;margin:10px 0}.button-row{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.button-row button{font-size:12px;flex:1}.source-link{font-size:11px;overflow-wrap:anywhere}dialog{border:1px solid var(--line);border-radius:20px;background:var(--surface);color:var(--ink);box-shadow:var(--shadow);padding:38px;width:min(520px,calc(100% - 24px));max-height:88dvh;overflow:auto}dialog::backdrop{background:#122e3e70;backdrop-filter:blur(7px)}.dialog-close{position:absolute;right:10px;top:10px;border:0;background:transparent}dialog h2{font-size:25px;margin:10px 0 15px}dialog p{font-size:13px}.form-field{display:block;margin:18px 0}.form-field>input,.form-field>textarea{display:block;width:100%;margin-top:7px}.avatar-options{display:flex;gap:10px;margin:14px 0 22px}.avatar-options button{flex:1;font-size:12px}.avatar-options button[aria-pressed=true]{border:2px solid var(--primary);background:var(--bg)}.avatar-mini{display:block;font-size:32px;margin-bottom:4px}.quiz-meta{font-size:11px;color:var(--muted);margin:12px 0}.quiz-question{font-size:20px;line-height:1.6;margin-bottom:20px}.quiz-options{display:grid;gap:10px}.quiz-options button{text-align:left;padding:14px}.quiz-options button.correct{border-color:var(--primary);background:var(--bg);opacity:1}.quiz-options button.wrong{border-color:#c17a59;opacity:1}.feedback{border-left:3px solid var(--accent);padding:14px;margin-top:18px;font-size:13px;background:var(--bg)}.passport-stamps{display:flex;gap:12px;margin:24px 0}.stamp{flex:1;padding:16px 5px;text-align:center;border:1px dashed var(--line);border-radius:50%;aspect-ratio:1;display:flex;flex-direction:column;justify-content:center;font-size:11px;color:var(--muted)}.stamp.earned{border:2px solid var(--primary);color:var(--primary);background:var(--bg)}.stamp span{font-size:25px}.level-line{display:flex;justify-content:space-between;align-items:center;margin:15px 0;font-size:12px}progress{appearance:none;width:100%;height:4px;border:0;background:var(--line);display:block}progress::-webkit-progress-bar{background:var(--line)}progress::-webkit-progress-value{background:var(--accent)}.inventory{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.inventory div{background:var(--bg);padding:12px;border-radius:10px;text-align:center;font-size:13px}.inventory span{display:block;font-size:25px}.danger{color:#b74e39}.hint{color:var(--muted);font-size:11px}.error{color:#b74e39}.certificate{width:100%;border:1px solid var(--line);margin:12px 0}.file-input{font-size:11px;width:100%}#toast{position:fixed;bottom:86px;left:50%;transform:translateX(-50%);z-index:40;background:var(--ink);color:var(--bg);padding:11px 20px;border-radius:30px;max-width:calc(100% - 30px);text-align:center;font-size:12px;opacity:0;pointer-events:none;transition:opacity .2s}#toast.visible{opacity:1}#bubble{position:absolute;z-index:8;left:50%;top:50%;transform:translate(-50%,-100%);max-width:300px;width:calc(100% - 32px);padding:18px;background:var(--surface);border:1px solid var(--line);border-radius:15px;box-shadow:var(--shadow);font-size:12px}#bubble p{margin:6px 0}#bubble button{font-size:11px;padding:4px 8px}#tour-card{position:absolute;bottom:72px;left:50%;transform:translateX(-50%);width:min(420px,calc(100% - 26px));background:var(--surface);padding:20px;border:1px solid var(--line);border-radius:14px;z-index:6;box-shadow:var(--shadow)}#tour-title{font-size:19px;display:block;margin:5px 0}#tour-desc{font-size:12px;margin-bottom:12px}#tour-card button{padding:4px 8px;font-size:11px}#cinema-hint{position:absolute;left:50%;bottom:110px;transform:translateX(-50%);font-size:12px;background:var(--surface);padding:8px 15px;border-radius:12px;z-index:6;white-space:nowrap}#cinema-hint button{border:0;background:none;color:var(--primary);font-size:12px}#walk-ui{position:absolute;top:15px;left:50%;transform:translateX(-50%);width:min(420px,calc(100% - 24px));text-align:center;z-index:7}#walk-ui>p{font-size:11px;padding:10px;background:var(--surface);border-radius:8px}#walk-ui>button{font-size:12px}.dpad{position:absolute;top:420px;left:50%;transform:translateX(-50%);display:grid;grid-template-columns:repeat(3,48px);gap:6px}.dpad button:first-child{grid-column:2}.dpad button:nth-child(2){grid-column:1}.dpad button{font-size:20px;user-select:none;touch-action:none}.text-only .world{min-height:280px;height:280px}.text-only #scene,.text-only .scene-tools,.text-only .compass,.text-only .world-bottom{display:none}.text-only .intro-copy{top:25px}.text-only #scene-state{bottom:10px}.text-only .intro-copy h1{font-size:32px}.noscript{padding:30px;background:var(--surface);position:fixed;inset:100px 20px auto;z-index:50}.print-certificate{display:none}
:root{--accent-ink:#984b15}.card-number,.island-label b{color:var(--accent-ink)}html[data-theme=night]{--accent-ink:#edac70}html[data-theme=night] .error,html[data-theme=night] .danger{color:#ffb09a}dialog{scrollbar-width:thin}
:root{--primary-ink:#276b5e}html[data-theme=night]{--primary-ink:#82c4af}a,.island-card button,.metric b,.stamp.earned{color:var(--primary-ink)}button.primary,.primary{color:var(--surface)}
button{min-width:44px}.brand{min-height:44px}.source-link a,footer details a{display:inline-block;min-height:44px;padding-top:8px;padding-bottom:8px}
#scene-clock{display:none;pointer-events:none}@media(max-width:1000px){#scene-clock{display:block;position:absolute;right:24px;top:92px;font-size:10px;color:var(--muted)}}@media(max-width:600px){#scene-clock{right:18px;top:76px}}
@media(min-width:1600px){.world{height:800px}.intro-copy{left:5vw;top:70px}.intro-copy h1{font-size:58px}.island-section,.topbar{padding-left:5vw;padding-right:5vw}}
@media(max-width:1000px){.topbar{padding:0 24px}.top-status{display:none}.intro-copy{left:28px;top:32px}.intro-copy h1{font-size:38px}.intro-copy .eyebrow{font-size:8px}.world{height:670px}.island-section{padding:28px}.island-cards{grid-template-columns:repeat(2,1fr);gap:24px}.log-strip{margin:0 28px}.compass{right:25px}.scene-tools{right:20px}.world-bottom{left:28px;right:28px}footer{padding:30px 28px 100px;flex-wrap:wrap;gap:20px}}
@media(max-width:600px){.topbar{height:74px;padding:0 16px}.brand{font-size:16px;gap:7px}.brand img{width:31px;height:31px}.brand small{font-size:9px;letter-spacing:2px}.header-actions{gap:4px}.header-actions button{font-size:11px;padding:6px 9px}.header-actions #list-toggle span{display:none}.header-actions .icon{width:38px}.header-actions #stamp-count{margin-left:5px}.world{height:640px;min-height:640px}.intro-copy{left:22px;top:24px;max-width:290px}.intro-copy h1{font-size:35px;margin:10px 0 12px;letter-spacing:1px}.intro-copy p{font-size:11px}.hero-caption{font-size:9px}.intro-copy .eyebrow{font-size:8px;letter-spacing:1.4px}.compass{right:17px;top:20px}.compass svg{width:35px;height:35px}.scene-tools{top:auto;bottom:72px;right:14px;display:flex;gap:5px}.scene-tools button{padding:5px 10px;font-size:10px;gap:5px}.scene-tools button>span{font-size:16px}.world-bottom{bottom:12px;left:18px;right:14px;font-size:9px;align-items:start}.world-bottom span{max-width:200px}.world-bottom button{font-size:10px;padding:0;min-width:80px}.island-label{min-width:92px;padding:5px 8px;gap:6px;font-size:11px;min-height:44px}.island-label b{font-size:9px}.island-label small{font-size:8px}.island-label.center-label{font-size:9px;min-width:135px}#scene-state{font-size:10px;bottom:42px;max-width:90%;width:max-content;padding:3px 10px}.island-section{padding:24px 20px 28px}.section-heading{display:block;margin-bottom:10px}.section-heading h2{font-size:21px}.search{margin-top:12px;min-width:0;width:100%}.island-cards{gap:15px}.island-card{padding-top:13px}.card-number{font-size:24px}.card-category{font-size:9px}.island-card h3{font-size:15px}.island-card p{font-size:11px;min-height:58px}.card-status{line-height:1.5}.log-strip{margin:0 20px;gap:12px;flex-wrap:wrap}.log-strip img{width:36px;height:36px}.log-strip>div{flex:1}.log-strip p{font-size:12px}.log-strip button{margin:0 0 0 48px;padding:0}.log-strip .eyebrow{font-size:8px}footer{padding:25px 20px 100px;display:block}footer>div,footer>details{margin-bottom:15px}#panel{top:auto;bottom:0;left:0;right:0;width:100%;max-height:84dvh;border-radius:20px 20px 0 0;padding:40px 23px 75px}.panel-illustration{height:80px;font-size:45px}.panel-illustration span+span{font-size:50px}#panel h2{font-size:26px}dialog{padding:34px 23px}.settings-dock{bottom:12px;white-space:nowrap}#tour-card{bottom:125px}#cinema-hint{bottom:130px}.dpad{top:440px}#walk-ui p{margin-top:170px}.text-only .world{height:280px;min-height:280px}.text-only .intro-copy h1{font-size:32px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{transition:none!important;animation:none!important}}
@media print{body>*{display:none!important}body>.print-certificate{display:block!important;width:100%}body{background:white}}

@media(max-width:600px){#scene-state{bottom:124px}.text-only #scene-state{bottom:10px}}
