@import url('./game-selection.css');
@import url('./excavation.css');
@import url("./rock-mission.css");
@import url('./ticket-focus.css');
@import url('https://fonts.googleapis.com/css2?family=Klee+One:wght@600&display=swap');
:root{--paper:#fbf7e8;--paper-dark:#eee6cb;--ink:#42584b;--muted:#899280;--green:#397d69;--sea:#73bdb2;--gold:#e8b957;--danger:#b56551;--shadow:0 14px 45px #183c3233;--radius:28px;font-family:'Hiragino Maru Gothic ProN','Hiragino Kaku Gothic ProN','Yu Gothic',system-ui,sans-serif;color:var(--ink);font-synthesis:none;color-scheme:light}
*{box-sizing:border-box}html,body,#game{width:100%;height:100%;margin:0;overflow:hidden}body{background:#a4c9a0}button,input,select{font:inherit}button{color:inherit;border:0;cursor:pointer;background:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation}button:disabled{opacity:.4;cursor:default}button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #e9af40;outline-offset:4px}button:not(:disabled):active{transform:translateY(2px)}button img{pointer-events:none}img{max-width:100%;object-fit:contain}h1,h2,p{margin:0}h1{font-size:16px;font-weight:750}h2{font-size:21px;font-weight:750}details{text-align:left;line-height:1.9;margin:18px 0}summary{cursor:pointer;font-weight:650}details p{padding:15px 0;color:#617363}input,select{width:100%;border:1px solid #d9dbc8;background:#fffdf5;color:var(--ink);border-radius:13px;padding:12px 15px;min-height:46px}meter{display:block;appearance:none;height:6px;width:100%;border:0;border-radius:20px;overflow:hidden;background:#dfe6cc}meter::-webkit-meter-bar{background:#dfe6cc;border:0}meter::-webkit-meter-optimum-value{background:#8aa76d;border-radius:20px}.icon{width:24px;height:24px;flex:none}.icon-button{display:grid;place-items:center;width:43px;height:43px;min-width:43px;border-radius:50%;color:var(--green);background:var(--paper);box-shadow:0 3px 0 #d6d5b6;position:relative}.icon-button[aria-pressed=true]{background:#397d69;color:var(--paper);box-shadow:0 3px #275e4e}.icon-button[data-badge]:after{content:attr(data-badge);position:absolute;right:-2px;top:-3px;background:#d78869;color:#fffbe9;padding:1px 5px;min-width:17px;border:2px solid var(--paper);border-radius:20px;font:700 10px system-ui}
#landscape{position:absolute;inset:0;background:#b6cfaa url('/art/river-camp-v2.png') 50% 55%/cover no-repeat;transition:transform 1s cubic-bezier(.2,.8,.2,1),filter .7s}#game[data-screen=dig] #landscape{transform:scale(1.18);filter:blur(2px)}#game[data-screen=talk] #landscape{transform:scale(1.4);background-position:85% 20%;filter:blur(5px) brightness(.86)}#game[data-screen=puzzle] #landscape{filter:blur(7px) brightness(.8)}.sunlight{position:absolute;inset:0;pointer-events:none;background:linear-gradient(140deg,#fff7bd22,transparent 45%,#244c2812)}#world{position:absolute;inset:0}#hud{position:absolute;inset:18px 24px auto;display:flex;justify-content:space-between;align-items:flex-start;z-index:5;pointer-events:none}#hud>*{pointer-events:auto}.passport{display:flex;gap:10px;align-items:center;background:#fcf8e6f2;border:2px solid #fff8e8;border-radius:30px;padding:6px 17px 6px 6px;box-shadow:0 4px 0 #34442c1f,0 10px 25px #29432c17;min-height:58px;text-align:left}.passport>img{width:42px;height:42px;border-radius:50%;background:#dadfbc}.passport b{font-size:13px}.xp-line{display:flex;align-items:center;gap:6px;margin-top:5px}.xp-line span{font-size:11px;font-weight:700}.xp-line meter{width:55px;height:5px}.xp-line em{font-style:normal;font:10px system-ui;color:#74886a}.top-right{display:flex;flex-direction:column;align-items:flex-end;gap:7px}.location{color:#fffdf2;text-shadow:0 1px 5px #173c2b99;display:flex;align-items:center;gap:6px;font-size:14px;font-weight:700;padding:7px}.location .icon{width:18px;height:18px}.purse{display:flex;gap:16px;background:#fff9e8eb;border-radius:20px;padding:5px 14px;box-shadow:0 3px 0 #33472d22}.resource{display:inline-flex;align-items:center;gap:4px;white-space:nowrap;font-size:13px}.resource img{height:27px;width:27px}.resource b{font-weight:700;font-variant-numeric:tabular-nums}#dock{position:absolute;z-index:6;left:50%;bottom:calc(20px + env(safe-area-inset-bottom));transform:translateX(-50%);display:flex;align-items:center;gap:18px;padding:13px 23px;border-radius:38px;background:#fcf8e7ed;box-shadow:0 5px 0 #e6dec5a3,0 14px 30px #22443022;border:2px solid #fff7da}#dock .icon-button{background:none;box-shadow:none;color:#567b61;width:42px;height:42px}#dock .icon{width:28px;height:28px}#dock .icon-button:hover{background:#e0e8ce}
.place-label{position:absolute;left:30px;bottom:30px;font-size:13px;font-weight:650;color:#fff9e8;text-shadow:0 1px 5px #26433388}.landmark{position:absolute;display:grid;place-items:center;width:80px;height:80px;border-radius:50%;background:#fffbeee8;border:4px solid #fffbed;box-shadow:0 7px 0 #d6c79f,0 17px 26px #38563e45;transform:translate(-50%,-50%);transition:scale .2s;isolation:isolate}.landmark:not(:disabled):active{transform:translate(-50%,calc(-50% + 4px))}.landmark:hover{scale:1.07}.landmark>img{width:68px;height:68px;filter:drop-shadow(0 4px 2px #365b3833)}.landmark>.icon{width:38px;height:38px;stroke-width:1.8}.dig-marker{left:66%;top:52%;color:#b7833d}.field-marker{left:78%;top:26%;color:#3b8c75}.camp-marker{left:87%;top:72%;color:#628f9a;width:65px;height:65px}.ground-ring{position:absolute;z-index:-1;inset:-12px;border:2px solid #fffbe9aa;border-radius:50%;animation:beacon 3s ease-out infinite}.badge{position:absolute;right:-3px;top:-4px;border-radius:20px;background:#cc815e;border:2px solid #fff7e3;min-width:23px;height:23px;display:grid;place-items:center;color:white;font-size:12px;font-weight:800}.expedition-goal{position:absolute;left:26px;bottom:125px;display:flex;align-items:center;gap:8px;background:#fbf8e7e8;border:2px solid #fff4d4;box-shadow:0 5px 0 #4a604523;border-radius:25px;padding:9px 12px}.goal-item{width:46px;height:46px;border-radius:50%;background:#e3e5d1}.goal-item img{width:44px;height:44px;filter:brightness(.2);opacity:.2}.goal-item.found{background:#e8edd8}.goal-item.found img{filter:none;opacity:1}.goal-species{display:flex;align-items:center;gap:8px}.goal-species img{width:60px;height:55px}.goal-species span{font-size:12px}.job-chip{position:absolute;right:24px;bottom:125px;background:var(--paper);border-radius:25px;padding:13px 23px;display:flex;gap:10px;align-items:center;box-shadow:0 4px #ddcf9e}.job-chip time{font-variant-numeric:tabular-nums}.job-progress{position:absolute;height:4px;left:18px;right:18px;bottom:5px;background:#bccf95;border-radius:5px}.reward-float{position:absolute;left:25px;top:100px;width:53px;height:53px;border-radius:50%;display:flex;gap:4px;align-items:center;justify-content:center;background:#eec46d;color:#5c603e;box-shadow:0 4px #c79544;animation:bob 2.2s ease-in-out infinite}.meet-person{position:absolute;left:45%;top:54%;width:74px;height:74px;border-radius:50%;background:#fff8e9;border:4px solid #fff;box-shadow:var(--shadow)}.meet-person img{border-radius:50%}.meet-person span{position:absolute;right:-10px;top:-10px;background:#fffbe8;border-radius:20px;padding:2px 12px}
#content{position:absolute;inset:0;z-index:10;pointer-events:none;display:grid;place-items:center;padding:24px}#content:has(.sheet){background:#214c384f;backdrop-filter:blur(5px)}#content>*{pointer-events:auto}.sheet{display:flex;flex-direction:column;width:min(880px,100%);height:min(780px,100%);background:var(--paper);border-radius:var(--radius);box-shadow:0 8px 0 #45654324,0 25px 80px #223d3d35;overflow:hidden;border:2px solid #fffbe9;animation:sheet-in .24s cubic-bezier(.2,.9,.3,1)}.sheet.narrow{max-width:460px}.sheet-head{height:62px;min-height:62px;display:flex;align-items:center;gap:16px;padding:8px 16px;border-bottom:1px solid #e1e4d0;background:#fbf8e9}.sheet-head h1{flex:1}.sheet-head .icon-button{width:36px;height:36px;min-width:36px;background:#e6ead8;box-shadow:0 2px #d4dec5}.sheet-head .icon{width:20px;height:20px}.sheet-body{overflow:auto;overscroll-behavior:contain;flex:1;padding:24px 30px;text-align:center;scrollbar-color:#c5cfb5 transparent;scrollbar-width:thin}.sheet-foot{display:flex;gap:12px;align-items:center;justify-content:center;padding:14px 24px 20px;background:#f5f2df;border-top:1px solid #e3e4ce;flex:none}.sheet-foot>*{flex:1;max-width:320px}.primary,.secondary{padding:12px 24px;min-height:46px;border-radius:22px;font-size:14px;font-weight:750;display:inline-flex;align-items:center;justify-content:center;gap:8px}.primary{background:#397e6b;color:#fffbe8;box-shadow:0 4px #24624f}.secondary{background:#e5e9d3;color:#56704f;box-shadow:0 3px #cbd5b5}.primary img,.secondary img{width:30px;height:30px}.text-button{padding:8px 16px;border-radius:20px;font-size:13px}.text-button:hover{background:#e9edda}.icon-tabs{display:flex;gap:7px}.icon-tabs .icon-button{background:transparent;box-shadow:none}.icon-tabs .icon-button[aria-pressed=true]{background:#e1e8cf;color:#397e6b}.icon-tabs .icon{width:23px;height:23px}.profile-form{display:grid;gap:17px;max-width:310px;margin:auto}.profile-form label{display:grid;gap:8px;text-align:left;font-size:13px}.profile-art{width:110px;height:100px;margin:auto}.profile-art img{width:100%;height:100%}.profile-form>.primary{margin-top:6px}.player-id{word-break:break-all;font-size:12px}.profile-form details{margin:4px 0}.fieldwork{background:#f1f4e3}.fieldwork-land{display:flex;justify-content:center;align-items:center;gap:80px;position:relative;min-height:75%}.field-path{position:absolute;height:70px;left:10%;right:10%;top:52%;background:#e2d4ae;transform:rotate(-12deg);border-radius:60%;border:8px solid #f7e9bf;box-shadow:0 8px 0 #d6dbc0}.field-destination{z-index:1;position:relative;display:flex;align-items:center;flex-direction:column;gap:10px;width:185px;padding:22px 20px 18px;border-radius:48% 48% 35% 35%;background:#fff9e9;box-shadow:0 8px #d3dbc2,0 20px 30px #516b3920;transition:transform .2s}.field-destination img{width:116px;height:116px;border-radius:30px;box-shadow:0 5px 0 #294c3220}.field-destination strong{font-size:21px;letter-spacing:.04em}.field-destination>span{font-size:13px;color:#829578}.field-destination:nth-of-type(2){margin-top:90px}.trail-progress{display:flex;align-items:center;gap:12px;justify-content:center;padding:20px}.trail-progress span{width:16px;height:16px;background:#d2ddbb;border-radius:50%}.trail-progress span.done{background:#78a085}.trail-progress .icon{width:17px;height:17px}.trail-progress span.done .icon{color:white;padding:2px}.resume-dot{width:14px;height:14px;background:#e0a057;border:3px solid #fff6e4;border-radius:50%;position:absolute;right:19px;top:18px}
.dig-screen{position:absolute;inset:0;padding:90px 24px 90px;background:linear-gradient(transparent 5%,#9cbd8960 35%,#73936d77)}.dig-top{position:absolute;top:20px;left:24px;right:24px;display:flex;gap:16px;align-items:center;background:#fff9e8ed;border-radius:28px;padding:6px 15px 6px 6px;max-width:450px;box-shadow:0 4px #dfdabd}.dig-top>span:first-of-type{flex:1;font-size:14px;font-weight:700}.excavation{width:min(900px,100%);height:100%;max-height:590px;position:relative;margin:auto;filter:drop-shadow(0 16px 15px #29432344)}#earth{width:100%;height:100%;display:block}#earth-buttons{position:absolute;inset:0}.earth-target{position:absolute;border-radius:16px;display:grid;place-items:center;color:#fffce7;border:1px solid transparent;background:none}.earth-target .icon{width:21px;height:21px;opacity:.72;filter:drop-shadow(0 2px 2px #76592c)}.earth-target:not(:disabled):hover,.earth-target.selected{border:2px solid #fff6c5;background:#ffffff18;box-shadow:0 0 18px #fff0a366}.earth-target:disabled{opacity:1}.earth-target.dug{background:#553f2825}.earth-target.locked .icon{opacity:.22;width:15px;height:15px}.earth-target progress{position:absolute;bottom:8px;width:65%;height:4px;appearance:none}.earth-target progress::-webkit-progress-bar{background:#785b4270;border-radius:5px}.earth-target progress::-webkit-progress-value{background:#e4be70;border-radius:5px}.dig-equipment{position:absolute;bottom:20px;left:50%;transform:translateX(-50%);background:#fff9e9ef;border-radius:35px;display:flex;align-items:center;gap:25px;padding:8px 19px;box-shadow:0 5px #d9d4b9}.object-button{width:55px;height:55px;position:relative;flex:none}.object-button img{width:100%;height:100%}.crew-faces{display:flex;padding-left:5px}.crew-faces button{width:43px;height:43px;border:2px solid var(--paper);border-radius:50%;background:#c9d4b7;margin-left:-5px;padding:0;overflow:hidden}.field-button{width:49px;height:49px;border-radius:50%;background:#397e6b;color:#fff9e8;display:grid;place-items:center;box-shadow:0 3px #205643}.dig-choice{position:absolute;bottom:100px;left:50%;transform:translateX(-50%);background:#fffbeef5;border-radius:24px;padding:12px 18px 18px;box-shadow:var(--shadow);min-width:310px;text-align:center;animation:sheet-in .2s}.dig-choice-heading{display:flex;align-items:center;gap:13px}.dig-choice-heading .icon-button{width:29px;height:29px;min-width:29px;box-shadow:none;background:#e9ecd9}.dig-choice-heading .icon{width:18px;height:18px}.dig-cost{display:flex;gap:24px;align-items:center;justify-content:center;margin:13px 0;font-size:13px}.dig-choice>.primary{width:100%}.dig-choice p{font-size:13px;margin-top:12px}
.shelf,.collection-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:20px}.shelf{background:repeating-linear-gradient(transparent 0px,transparent 145px,#e4d9b950 146px,#e4d9b950 150px);grid-auto-rows:150px;gap:0 18px}.shelf-item{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;border-radius:20px}.shelf-item:hover{background:#e6ead47f}.shelf-item>img{width:110px;height:105px;filter:drop-shadow(0 8px 3px #4f503315)}.shelf-item strong{font-size:14px}.tiny-meter{height:4px;background:#dedfc9;width:40%;border-radius:4px}.tiny-meter i{display:block;background:#90aa7c;height:100%}.empty-art{grid-column:1/-1;min-height:260px;display:grid;place-items:center;opacity:.5}.empty-art img{width:160px;height:160px}.research-slip{margin:20px auto;display:flex;gap:15px;align-items:center;justify-content:center;background:#e6eddb;padding:15px;border-radius:20px;font-size:13px}.research-slip img{width:45px;height:45px}.storage-row{display:flex;justify-content:center;gap:20px;margin-top:25px;padding-top:20px;border-top:1px dashed #cad3b5}.detail-hero{height:260px;display:flex;justify-content:center;align-items:center;background:radial-gradient(ellipse,#e3e8d0 0%,transparent 70%);margin-bottom:12px}.detail-hero>img{height:100%;width:100%;object-fit:contain;filter:drop-shadow(0 12px 8px #3d54321b)}.tool-hero{height:240px}.fact-row,.facts{display:flex;justify-content:center;gap:25px;margin:20px 0;font-size:13px}.upgrade-route{display:flex;gap:20px;align-items:center;padding:15px 20px;background:#eeefdF;border-radius:24px;margin:25px 0;text-align:left}.upgrade-route>img{width:80px;height:80px}.upgrade-route>div{flex:1}.upgrade-route b{font-size:14px}.cost-list{display:flex;gap:12px;flex-wrap:wrap;margin-top:10px}.collection-grid{gap:14px}.specimen-card{position:relative;display:flex;flex-direction:column;gap:7px;align-items:center;justify-content:flex-start;padding:10px 8px 13px;background:#f4f1df;border-radius:22px;box-shadow:0 3px #e2dfc9;min-width:0}.specimen-card>img{height:130px;width:100%;filter:drop-shadow(0 6px 3px #324d2c18)}.specimen-card b{font-size:11px;font-weight:700;line-height:1.4}.specimen-card>span{font-size:12px;color:#7b8c71}.specimen-card meter{height:4px;max-width:75%;margin-top:auto}.specimen-card.unknown>img{filter:brightness(0);opacity:.12}.specimen-card.partial>img{filter:brightness(.1);opacity:.5}.specimen-card.complete{background:#edf2de}.silhouette img{filter:brightness(.05);opacity:.25}.specimen-name i{display:block;font:italic 14px Georgia;margin-top:6px;color:#819178}.facts>div{display:flex;flex-direction:column;gap:8px;flex:1}.facts b{font-size:12px}.facts span{font-size:11px;color:#85977e}.detail-copy{line-height:1.9;text-align:left;font-size:14px;max-width:620px;margin:20px auto}.parts-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:20px 0}.part{padding:6px;background:#eff0df;border-radius:15px;display:flex;flex-direction:column;align-items:center;font-size:11px;color:#87917e}.part>img{height:70px;opacity:.15;filter:brightness(.1)}.part.owned>img{opacity:1;filter:none}.person-portrait{height:260px;background:radial-gradient(ellipse at 50% 100%,#dce9cc,transparent 70%);margin-bottom:15px}.person-portrait img{height:100%}.stats-bars{display:grid;gap:12px;max-width:450px;margin:20px auto}.stats-bars label{display:flex;gap:15px;align-items:center;font-size:12px}.stats-bars label meter{flex:1}.crew-status{display:flex;gap:28px;align-items:center;justify-content:center;padding:0 0 24px}.crew-status>span{display:flex;gap:8px;align-items:center;font-size:14px}.crew-status .icon-button img{width:38px;height:38px}.people-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:20px}.person-card{display:flex;flex-direction:column;gap:9px;align-items:center;padding:15px;border-radius:25px;background:#edf0db}.person-card img{border-radius:50%;background:#f9f5e3;width:100%;max-width:120px}.person-card b{font-size:12px}.person-card>span{font-size:11px;color:#bfaa6e}.person-card.candidate{background:none;border:1px dashed #c8d2b8}.wallet{display:flex;gap:30px;justify-content:center;margin-bottom:25px}.museum .sheet-body{background:linear-gradient(#e9e8db 70%,#d7c5a1 70%)}.museum-room{display:grid;grid-template-columns:repeat(3,1fr);gap:35px;padding:25px 0 40px;min-height:70%}.display-case{height:190px;position:relative;display:flex;align-items:flex-end;justify-content:center;background:linear-gradient(130deg,#fff9,transparent 30%,#fff6);border:2px solid #eaf4eb;border-radius:18px 18px 5px 5px;box-shadow:0 10px 12px #665e411f;padding:0 10px 45px}.display-case img{height:130px;filter:drop-shadow(0 5px 3px #6c6b4333)}.display-case>span{font-size:28px;color:#bac5b0;align-self:center}.plinth{height:35px;position:absolute;bottom:0;left:-7px;right:-7px;background:linear-gradient(#f4e7c7,#e0d0ae);border-radius:4px;box-shadow:0 6px #b8a789}
.reward-sheet{height:auto;max-width:820px;background:#fff9e6ef}.reward-sheet .sheet-head{border:0;background:none}.reward-sheet .sheet-body{padding:20px 30px 45px}.reward-cards{display:flex;gap:24px;justify-content:center;align-items:center}.reward-card{width:210px;min-height:280px;border:2px solid #e6d5a5;border-radius:25px;background:linear-gradient(150deg,#fffcf0,#f4e5bb);box-shadow:0 6px #d3bd8d,0 10px 20px #6b64321a;padding:20px;position:relative;transition:transform .2s;animation:card-appear .5s both}.reward-card:nth-child(2){animation-delay:.12s}.reward-card:nth-child(3){animation-delay:.24s}.reward-card:hover{transform:translateY(-7px) rotate(-2deg)}.card-seal{color:#b59c57;position:absolute;top:12px;left:15px}.card-seal .icon{width:18px;height:18px}.prize-art{height:150px;display:flex;justify-content:center;align-items:center}.prize-art img{width:100%;height:100%;filter:drop-shadow(0 7px 3px #68592622)}.reward-card>div:last-child{display:grid;gap:7px}.reward-card span{font-size:13px;display:grid;gap:5px}.reward-card span b{font-size:21px;color:#4f7d59}.test-entrances{display:flex;gap:28px;align-items:center;justify-content:center;height:100%}.test-entry{position:relative;padding:35px 26px;width:260px;min-height:320px;background:#fffdf5;border-radius:25px;box-shadow:0 6px #ded5b7,0 14px 25px #4a5c3010;transform:rotate(-3deg);display:flex;flex-direction:column;align-items:center;gap:12px}.test-entry:nth-child(2){transform:rotate(3deg);background:#e8eee0}.test-paper-icon{position:relative;width:100px;height:110px;color:#629984}.test-paper-icon>.icon{width:85px;height:85px;stroke-width:1}.test-paper-icon>b{position:absolute;bottom:8px;right:0;border-radius:50%;background:#e7ba5c;color:#fff9e8;width:35px;height:35px;display:grid;place-items:center}.test-entry>p{font-size:12px;color:#89967f;margin-top:6px}.test-entry>span{font-size:14px;color:#819075}.exam{width:min(1120px,100%)}.exam .sheet-body{background:#edeeda}.exam-layout{display:grid;grid-template-columns:1.08fr 1fr;gap:30px;min-height:100%;align-content:center}.exam-paper{text-align:left;padding:28px;background:#fffdf3;border-radius:7px 25px 25px 7px;box-shadow:inset 6px 0 #e1d5a8,0 5px #d5d7bf;align-self:start}.question-number{display:inline-grid;place-items:center;width:32px;height:32px;background:#e6ead4;border-radius:50%;font-size:13px;margin-bottom:20px}.exam-paper p{font:18px/1.9 system-ui,sans-serif;white-space:pre-wrap;color:#364c40}.exam-paper mark{background:#e6edcc;color:#3c8066;white-space:nowrap;padding:3px;border-radius:5px}.exam-answers{display:grid;gap:13px;align-content:start}.answer{display:flex;gap:15px;align-items:center;min-height:65px;text-align:left;font:17px/1.5 system-ui,sans-serif;background:#fffcef;border-radius:20px;padding:16px 19px;box-shadow:0 4px #d5d9bd;border:2px solid transparent}.answer>span{font:700 12px system-ui;background:#e9ecd9;border-radius:50%;width:27px;height:27px;display:grid;place-items:center;flex:none}.answer.correct{border-color:#8db790;background:#dcead3;opacity:1}.answer.incorrect{border-color:#d99a7d;background:#f2ded1;opacity:1}.explanation{background:#fffdf1;border-radius:20px;padding:15px 21px;font-size:14px;margin:2px 0}.page-count{font:13px system-ui;color:#7c9076}.test-score{display:flex;gap:12px;align-items:baseline;justify-content:center;margin:30px 0 12px}.test-score strong{font:700 80px Georgia;color:#4a7e64}.test-score span{font:25px Georgia;color:#a3ad8d}.earned-xp{font:600 15px system-ui;color:#6b9566}.test-prize{margin-top:6px;font:600 14px system-ui;color:#7a5a2e}.review-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;margin:35px auto;max-width:450px}.review-grid button{background:#e4ebd6;border-radius:17px;padding:15px;display:grid;gap:7px;font-size:17px}.review-grid button.incorrect{background:#f0dec9}.review-grid button span{font-size:11px;color:#748d6e}.learn-summary{display:flex;gap:30px;justify-content:center;margin:15px}.word-records>div{display:flex;gap:20px;align-items:center;padding:16px;border-bottom:1px solid #e2e6ce;font-size:13px;text-align:left}.word-records b{flex:1}.word-records meter{width:70px}
#effects{position:absolute;inset:0;z-index:60;pointer-events:none;width:100%;height:100%}#toast{position:absolute;z-index:70;bottom:30px;left:50%;transform:translate(-50%,20px);opacity:0;max-width:calc(100% - 35px);padding:14px 25px;background:#fff9e8;color:#715b47;border-radius:25px;box-shadow:var(--shadow);font-size:14px;pointer-events:none;transition:.2s}#toast.on{opacity:1;transform:translate(-50%,0)}.cheer{position:absolute;z-index:62;left:50%;top:30%;transform:translate(-50%,-50%) rotate(-7deg);font:900 clamp(26px,5vw,58px) system-ui;color:#fff8c7;-webkit-text-stroke:1px #96783b;text-shadow:0 4px #72553144;pointer-events:none;animation:cheer 1.1s ease-out forwards}.crack-stage{height:330px;position:relative;display:grid;place-items:center;isolation:isolate}.crack-stage:before{content:'';position:absolute;width:240px;height:75px;bottom:27px;background:#8e876a27;border-radius:50%;filter:blur(10px)}.crack-rock{width:270px;height:270px;position:relative}.crack-rock>img{width:100%;height:100%;filter:drop-shadow(0 13px 4px #4d51342c)}.crack-lines{position:absolute;inset:0;width:100%;height:100%;stroke:#f7eac9;stroke-width:3;fill:none;pointer-events:none}.crack-counter{display:flex;gap:7px;justify-content:center}.crack-counter i{width:7px;height:7px;background:#d4d5bc;border-radius:50%}.crack-counter i.done{background:#85a677}.find-reveal{animation:find-reveal .65s cubic-bezier(.2,.9,.3,1)}.find-reveal .detail-hero{height:300px}.story-image{width:100%;max-height:340px;object-fit:cover;border-radius:20px}.story-text{padding:22px;text-align:left;line-height:1.9}.message-list{display:grid;gap:22px;text-align:left}.message-row{display:flex;gap:15px;align-items:flex-start}.message-row>img{width:44px;height:44px;border-radius:50%;background:#e2e8d3}.message-bubble{background:#e6eddb;border-radius:3px 22px 22px 22px;padding:17px 22px;font-size:14px;line-height:1.8;max-width:85%}
.talk-screen,.puzzle-screen{position:absolute;inset:0;display:flex;flex-direction:column;padding:20px 24px;color:#fff9e9}.play-head{display:flex;align-items:center;gap:14px;height:45px;flex:none}.play-head>span{font-size:14px;text-shadow:0 1px 5px #23432b}.play-head .progress-track{flex:1;max-width:210px;height:5px;background:#fdf8e74d;border-radius:5px;overflow:hidden}.play-head .progress-track i{height:100%;display:block;background:#efca7b;transition:width .2s}.play-head>.play-tools{margin-left:auto;display:flex;gap:10px}.play-head .icon-button{width:38px;height:38px;min-width:38px}.encounter{flex:1;min-height:120px;position:relative;display:flex;align-items:center;justify-content:center}.opponent{height:min(39dvh,330px);max-width:80%;object-fit:contain;filter:drop-shadow(0 16px 7px #17462450);animation:bob 2.6s ease-in-out infinite}.opponent.hit{animation:opponent-hit .35s ease-out}.hp-dots{position:absolute;bottom:0;left:50%;transform:translateX(-50%);display:flex;gap:5px;background:#314e3988;padding:7px 10px;border-radius:20px}.hp-dots i{width:20px;height:5px;border-radius:3px;background:#f0cb7b}.hp-dots i.spent{background:#ffffff25}.recitation{color:var(--ink);background:#fff9e9f5;box-shadow:0 6px #d4d4bba6,0 20px 40px #253e3220;border:2px solid #fff7df;border-radius:32px;max-width:720px;width:100%;margin:24px auto 6px;padding:22px 30px 19px;text-align:center;position:relative}.recitation .japanese{font-size:clamp(19px,2.5vw,26px);font-weight:700}.recitation .english{font:650 clamp(26px,4.7vw,43px)/1.4 system-ui;min-height:1.4em;margin:6px 0;color:#42816a;letter-spacing:.01em}.recitation .english.masked{letter-spacing:.16em;color:#8ba385}.recitation .heard{height:22px;overflow:hidden;font-size:13px;color:#8c9980;margin:4px 0}.voice-controls{display:flex;gap:16px;align-items:center;justify-content:center;margin-top:12px}.voice-controls .icon-button{background:#e9ecd8;box-shadow:0 3px #d0d8ba}.voice-controls .mic-main{width:57px;height:57px;background:#397e6b;color:#fffbe9;box-shadow:0 4px #245e4b}.mic-main.listening{background:#dbad57;box-shadow:0 0 0 8px #e7bd6333,0 4px #ad863a;animation:beacon 1.8s infinite}.answer-input{max-width:350px;margin:12px auto 0;display:flex;gap:8px}.answer-input input{text-align:center;font:18px system-ui;background:#fffdf5;min-width:0}.recitation .hinted{font:15px system-ui;color:#b89244;position:absolute;top:18px;right:24px}.syllable.active{color:#cc9e3a;text-decoration:underline;text-underline-offset:8px;display:inline-block;animation:syllable .16s}.boss-aura{position:absolute;width:260px;height:260px;border-radius:50%;background:radial-gradient(#edbd4b60,transparent 65%);animation:beacon 2s infinite}.puzzle-screen{background:#52684945}.puzzle-board{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:11px;width:min(790px,100%);margin:auto;align-content:center;flex:1;max-height:76dvh}.puzzle-tile{min-height:75px;display:flex;align-items:center;justify-content:center;background:#fcf7e6;border-radius:17px;color:#3d5e4c;box-shadow:0 5px #d1c7a7,0 8px 18px #23412d22;border:2px solid #fffdf1;padding:10px;font:650 16px/1.3 system-ui;overflow-wrap:anywhere}.puzzle-tile.ja{background:#d6e7c2;border-color:#e8f1dc;box-shadow:0 5px #9bb88a,0 8px 18px #23412d22;font:650 13px/1.5 inherit}.puzzle-tile.selected{border-color:#edbd4f;box-shadow:0 0 0 4px #e8bb5677,0 5px #b99144;transform:translateY(-4px)}.puzzle-space{min-height:75px;background:#fff2;border-radius:17px;border:1px dashed #fff5}.puzzle-footer{height:65px;display:flex;align-items:center;justify-content:center;gap:28px}.puzzle-footer button{display:flex;align-items:center;gap:10px;background:#fff8e7;border-radius:25px;padding:10px 18px;color:#436d56;font-weight:700}.puzzle-score{font:700 20px system-ui;color:#fff9d5}.assembly-stage{position:relative;height:320px;margin-bottom:20px;background:#e9edda;border-radius:20px;overflow:hidden}.assembly-stage>.skeleton-image{position:absolute;inset:5%;width:90%;height:90%;opacity:.18}.assembly-stage>.skeleton-image.complete{opacity:1}.assembly-slots{position:absolute;inset:0;display:grid;grid-template-columns:repeat(4,1fr);grid-template-rows:1fr 1fr;padding:20px;gap:10px}.assembly-slot{background:#fff4;border:2px dashed #aeba9766;border-radius:15px;display:grid;place-items:center}.assembly-slot img{max-height:95px;opacity:.13}.assembly-slot.placed{border-color:#94b283;border-style:solid;background:#e2edcc99}.assembly-slot.placed img{opacity:1}.assembly-tray{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.assembly-piece{height:82px;background:#fffbed;border-radius:15px;box-shadow:0 3px #d8d9bd;touch-action:none}.assembly-piece img{height:100%;pointer-events:none}.assembly-piece.selected{outline:3px solid #deba62}.world-route{position:relative;display:grid;grid-template-columns:repeat(3,1fr);gap:38px 25px;padding:20px 0 40px}.world-route:before{content:'';position:absolute;inset:20px 12%;background:repeating-linear-gradient(170deg,transparent 0,transparent 80px,#d3c59c55 80px,#d3c59c55 90px,transparent 90px,transparent 180px);pointer-events:none}.route-site{position:relative;display:flex;align-items:center;flex-direction:column;gap:9px}.route-island{width:130px;height:110px;border-radius:48%;background:linear-gradient(#b9d796 67%,#bca47e 68%,#9a8767);box-shadow:0 12px 0 #becba3,0 19px 14px #517a5c20;padding:0 18px 12px}.route-island img{width:100%;height:100%;filter:drop-shadow(0 5px 4px #455f3533)}.route-site>span{font-size:12px;font-weight:650;margin-top:6px}.route-site.locked .route-island{filter:grayscale(.7);opacity:.45}.route-site.locked .route-island img{filter:brightness(0);opacity:.2}.route-site.current .route-island{outline:3px solid #e4b861;outline-offset:6px}
@keyframes beacon{0%{opacity:.9;scale:1}80%,100%{opacity:.25;scale:1.09}}@keyframes bob{50%{translate:0 -5px}}@keyframes sheet-in{from{opacity:0;translate:0 15px}to{opacity:1;translate:0 0}}@keyframes card-appear{from{opacity:0;translate:0 30px;rotate:-8deg}to{opacity:1;translate:0 0;rotate:0deg}}@keyframes cheer{0%{opacity:0;scale:.6}15%{opacity:1;scale:1.1}35%{scale:1}80%{opacity:1}100%{opacity:0;translate:0 -50px}}@keyframes opponent-hit{20%{translate:10px -4px;rotate:5deg;filter:brightness(1.7)}50%{translate:-8px 0}100%{translate:0 0}}@keyframes find-reveal{from{opacity:0;scale:.6;rotate:-10deg}to{opacity:1;scale:1;rotate:0deg}}@keyframes syllable{50%{translate:0 -4px}}
@media(max-width:700px){#hud{inset:12px 12px auto}.passport{min-height:48px;padding:5px 12px 5px 5px;gap:6px}.passport>img{width:35px;height:35px}.passport b{font-size:12px}.xp-line em{display:none}.xp-line meter{width:45px}.location{font-size:11px;max-width:160px;padding:5px 0}.location .icon{width:14px;height:14px}.purse{gap:5px;padding:2px 8px}.purse .resource{font-size:11px}.purse img{width:23px;height:23px}#dock{gap:7px;padding:9px 13px;bottom:calc(16px + env(safe-area-inset-bottom));width:max-content;max-width:95%}#dock .icon-button{width:38px;height:38px;min-width:38px}#dock .icon{width:25px;height:25px}#landscape{background-position:45% center}.landmark{width:70px;height:70px}.landmark>img{width:58px;height:58px}.dig-marker{left:59%;top:53%}.field-marker{left:76%;top:28%}.camp-marker{left:82%;top:75%;width:55px;height:55px}.camp-marker>.icon{width:28px;height:28px}.expedition-goal{left:13px;bottom:110px;padding:6px;gap:4px;border-radius:18px}.goal-item{width:35px;height:35px}.goal-item img{width:33px;height:33px}.place-label{left:15px;bottom:90px;font-size:10px}.job-chip{right:12px;bottom:108px;padding:11px 15px;font-size:12px}.job-chip .icon{width:19px;height:19px}.reward-float{top:80px;left:15px;width:44px;height:44px}.meet-person{left:24%;top:62%}#content{padding:10px 10px calc(10px + env(safe-area-inset-bottom))}.sheet{height:100%;border-radius:24px}.sheet-head{height:53px;min-height:53px;padding:6px 11px;gap:10px}.sheet-head h1{font-size:14px}.sheet-body{padding:20px 17px}.sheet-foot{padding:12px 16px 18px;gap:9px}.icon-tabs{gap:3px}.icon-tabs .icon-button{width:32px;height:32px;min-width:32px}.icon-tabs .icon{width:21px;height:21px}.fieldwork-land{gap:30px;flex-direction:column;min-height:75%;justify-content:center}.field-destination{width:158px;padding:17px;border-radius:35px;gap:7px;flex:none}.field-destination img{width:75px;height:75px;border-radius:23px}.field-destination strong{font-size:18px}.field-destination:nth-of-type(1){align-self:flex-start;margin-left:25px}.field-destination:nth-of-type(2){align-self:flex-end;margin:0 25px 0 0}.field-path{transform:rotate(-55deg);top:45%;left:10%;right:10%;height:50px}.trail-progress{padding:10px}.dig-screen{padding:95px 4px 105px}.dig-top{top:13px;left:12px;right:12px;gap:10px}.dig-top>span:first-of-type{font-size:12px}.dig-top .resource{font-size:11px}.dig-equipment{gap:14px;padding:6px 14px;bottom:20px}.dig-equipment .object-button{width:45px;height:45px}.crew-faces button{width:36px;height:36px}.dig-equipment .field-button{width:42px;height:42px}.dig-choice{width:calc(100% - 40px);min-width:0;bottom:95px}.earth-target{border-radius:10px}.earth-target .icon{width:17px;height:17px}.shelf{grid-template-columns:repeat(3,minmax(0,1fr));grid-auto-rows:124px;background:repeating-linear-gradient(transparent 0,transparent 119px,#e4d9b950 120px,#e4d9b950 124px);gap:0 9px}.shelf-item>img{width:87px;height:85px}.collection-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.specimen-card{padding:6px 5px 10px;border-radius:17px;gap:6px}.specimen-card>img{height:86px}.specimen-card b{font-size:10px}.detail-hero{height:235px}.upgrade-route{padding:12px;gap:10px}.upgrade-route>img{width:58px;height:58px}.upgrade-route b{font-size:12px}.upgrade-route .primary{padding:10px;min-width:40px}.cost-list{gap:5px}.cost-list .resource{font-size:11px}.cost-list .resource img{width:21px;height:21px}.people-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.person-card{padding:10px}.crew-status{gap:15px}.crew-status>span{font-size:12px;gap:5px}.crew-status .icon{width:19px;height:19px}.crew-status .icon-button{width:35px;height:35px;min-width:35px}.storage-row{gap:10px}.storage-row .object-button{width:47px;height:47px}.reward-sheet{height:auto}.reward-sheet .sheet-body{padding:14px 14px 30px}.reward-cards{gap:10px}.reward-card{width:calc(33.333% - 6px);min-height:205px;border-radius:18px;padding:12px 8px}.prize-art{height:110px}.reward-card span{font-size:11px}.reward-card span b{font-size:19px}.card-seal{top:8px;left:10px}.card-seal .icon{width:13px;height:13px}.test-entrances{flex-direction:column;gap:23px}.test-entry{width:95%;min-height:180px;padding:22px;display:grid;grid-template-columns:80px 1fr;gap:7px 20px;justify-content:center}.test-paper-icon{grid-row:span 3;width:80px;height:90px}.test-paper-icon>.icon{width:65px;height:65px}.test-entry h2{font-size:20px}.test-entry>p{font-size:11px}.exam-layout{grid-template-columns:1fr;gap:22px;align-content:start}.exam-paper{padding:21px 24px}.exam-paper p{font-size:17px;line-height:1.8}.exam-answers{gap:12px}.answer{font-size:16px;min-height:58px;padding:13px 16px}.question-number{margin-bottom:14px}.exam .sheet-body{padding:16px}.museum-room{grid-template-columns:repeat(2,1fr);gap:25px;padding:15px 0 30px}.display-case{height:170px}.display-case img{height:115px}.talk-screen,.puzzle-screen{padding:12px 14px calc(12px + env(safe-area-inset-bottom))}.play-head{gap:10px}.play-head>.play-tools{gap:7px}.play-head .icon-button{width:34px;height:34px;min-width:34px}.play-head>span{font-size:12px}.play-head .progress-track{max-width:100px}.opponent{height:min(35dvh,300px)}.recitation{padding:19px 17px 16px;margin-top:16px;border-radius:27px}.recitation .japanese{font-size:20px}.recitation .english{font-size:32px}.puzzle-board{gap:9px;max-height:75dvh}.puzzle-tile{min-height:65px;border-radius:13px;font-size:13px;padding:7px}.puzzle-tile.ja{font-size:11px}.puzzle-space{min-height:65px;border-radius:13px}.assembly-stage{height:240px}.assembly-slots{padding:10px;gap:6px}.assembly-slot img{height:75px}.assembly-piece{height:70px}.world-route{grid-template-columns:repeat(2,1fr);gap:32px 15px}.route-island{width:120px;height:100px}.parts-grid{gap:7px}.part>img{height:55px}.facts{gap:10px}.facts b{font-size:11px}.word-records>div{gap:10px;padding:13px 2px}.word-records meter{width:45px}}
@media(max-height:540px) and (orientation:landscape){#content{padding:10px}.sheet-head{height:48px;min-height:48px}.sheet-body{padding:15px 24px}#hud{top:10px}#dock{bottom:12px;padding:5px 16px;gap:15px}.expedition-goal,.job-chip{bottom:88px}.dig-screen{padding-top:67px;padding-bottom:75px}.dig-equipment{bottom:12px}.talk-screen{display:grid;grid-template-columns:1fr 1.2fr;grid-template-rows:40px 1fr;gap:12px}.talk-screen .play-head{grid-column:1/-1}.opponent{height:65dvh}.recitation{margin:auto;padding:15px 20px}.encounter{min-height:0}.recitation .english{font-size:28px}.recitation .japanese{font-size:18px}.voice-controls{margin-top:5px}.voice-controls .mic-main{width:43px;height:43px}.puzzle-board{grid-template-columns:repeat(5,1fr);max-height:70dvh}.puzzle-tile{min-height:48px;font-size:13px}.fieldwork-land{min-height:90%;gap:75px;flex-direction:row}.field-destination{width:160px;padding:12px}.field-destination img{width:62px;height:62px}.field-destination:nth-of-type(2){margin-top:30px}.trail-progress{display:none}.test-entry{min-height:240px;padding:16px}.detail-hero{height:180px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}}
/* One shared pocket device; game canvases retain the full play area. */
.phone-sheet{width:min(430px,100%);height:min(820px,100%);border:7px solid #e9e4ce;border-radius:40px;background:var(--paper);box-shadow:inset 0 0 0 2px #fffdf5,0 24px 65px #173f4544;overflow:hidden}.phone-sheet .sheet-head{height:56px;min-height:56px;padding:7px 12px;border-bottom:1px solid #e6e4d3}.phone-sheet .sheet-body{padding:17px}.phone-sheet .sheet-foot{padding:0;display:flex;flex-direction:column;gap:0;background:#faf7ec}.phone-sheet .sheet-foot>.primary,.phone-sheet .sheet-foot>.secondary{margin:12px 17px}.phone-nav{display:flex;justify-content:space-around;align-items:center;height:59px;min-height:59px;width:100%;padding:5px 9px 10px;border-top:1px solid #e4e4d5}.phone-nav .icon-button{box-shadow:none;background:none}.phone-sheet .collection-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.phone-sheet .people-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.phone-sheet .person-card{padding:9px}.phone-sheet .shelf{grid-template-columns:repeat(3,minmax(0,1fr));grid-auto-rows:124px}.phone-sheet .shelf-item>img{height:86px;width:85px}.phone-sheet .world-route{grid-template-columns:repeat(2,1fr);gap:32px 12px}.phone-sheet .specimen-card>img{height:84px}.phone-sheet .specimen-card b{font-size:12px}.phone-sheet .facts{flex-wrap:wrap}.phone-sheet .upgrade-route{gap:7px;padding:10px}.phone-sheet .upgrade-route>img{width:57px}.phone-sheet .cost-list{flex-wrap:wrap}.phone-sheet .crew-status{gap:12px;flex-wrap:wrap}.phone-sheet .fieldwork-land{flex-direction:column;gap:30px}.phone-sheet .field-destination{width:157px;padding:16px}.phone-sheet .field-destination img{width:70px;height:70px}.phone-sheet .field-destination:nth-of-type(1){align-self:flex-start}.phone-sheet .field-destination:nth-of-type(2){align-self:flex-end;margin-top:0}.phone-sheet .detail-hero{height:230px}.phone-sheet .parts-grid{gap:6px}.phone-sheet .part>img{height:52px}.phone-wallpaper{background:radial-gradient(ellipse at 10% 95%,#b1cfc4 0,transparent 65%),radial-gradient(ellipse at 85% 5%,#e7d7a3 0,transparent 70%);border-radius:25px;padding:24px 16px;min-height:100%;display:flex;flex-direction:column;justify-content:center;gap:32px}.phone-avatar{display:grid;grid-template-columns:54px 1fr;column-gap:14px;align-items:center;padding:0 8px}.phone-avatar img{grid-row:span 2;width:54px;height:54px;border-radius:50%;background:#f8f5e8}.phone-avatar b{font-size:18px}.phone-avatar span{font-size:14px}.phone-apps{display:grid;grid-template-columns:repeat(3,1fr);gap:30px 19px}.phone-app{aspect-ratio:1;border-radius:24px;display:grid;place-items:center;position:relative;background:#f8f5e8;box-shadow:0 5px 0 #b4c8b9,0 10px 14px #46644a12}.phone-app .icon{width:38px;height:38px;stroke-width:1.6}.app-mail{background:#76aa80;color:#fffdf2;box-shadow:0 5px 0 #589771}.app-dig{background:#e6b95f;color:#785132;box-shadow:0 5px 0 #c69e49}.app-map{background:#b3d3ce;color:#39796f;box-shadow:0 5px 0 #8db8b0}.notification-dot{position:absolute;right:3px;top:3px;background:#cc795b;border:3px solid var(--paper);width:16px;height:16px;border-radius:50%}.thread-list{display:flex;flex-direction:column}.thread-row{display:flex;align-items:center;gap:15px;padding:15px 3px;text-align:left;border-bottom:1px solid #e9e6d8;min-height:87px}.thread-row>img{width:52px;height:52px;border-radius:50%;background:#e1e7d7}.thread-row>span{display:flex;flex:1;flex-direction:column;gap:7px;min-width:0}.thread-row>span>span{max-width:245px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14px}.thread-stamp{height:32px;width:40px}.thread-row>i{background:var(--green);color:white;font-style:normal;border-radius:20px;min-width:23px;padding:3px;font-size:13px;text-align:center}.phone-empty{height:65vh;display:grid;place-items:center;opacity:.25}.phone-empty .icon{height:60px;width:60px}.chat-sheet .sheet-body{padding:0;overflow:hidden;display:flex;min-height:0;background:#e4ebe0}.chat-timeline{overflow-y:auto;overscroll-behavior:contain;flex:1;padding:20px 13px;scrollbar-width:thin}.chat-row{display:flex;gap:9px;margin:0 0 15px;align-items:flex-start;animation:message-arrive .2s ease-out}.chat-row>div{max-width:calc(100% - 51px);min-width:0;display:flex;flex-direction:column;align-items:flex-start;gap:8px}.chat-avatar{width:34px;height:34px;object-fit:cover;border-radius:50%;background:#f8f6e8}.chat-bubble{font-size:15px;line-height:1.7;white-space:pre-wrap;overflow-wrap:anywhere;background:#fffdf4;padding:10px 14px;border-radius:4px 19px 19px 19px;box-shadow:0 2px 0 #cbd3c32b}.chat-row.sent{justify-content:flex-end}.chat-row.sent>div{align-items:flex-end}.sent .chat-bubble{background:#b5d6a3;border-radius:19px 4px 19px 19px}.chat-stamp{width:142px;height:142px;object-fit:contain}.chat-photo{max-height:250px;border-radius:15px;width:100%;object-fit:cover}.chat-reply{background:#f9f8ed;border:1px solid #6e9e88;border-radius:20px;padding:10px 22px;min-height:44px;color:#356855}.chat-compose{display:flex;justify-content:space-between;width:100%;padding:6px 15px;background:#faf7ec}.chat-compose .icon-button{background:none;box-shadow:none}.chat-gift{position:relative;padding:10px;background:#fff7db;border-radius:18px}.chat-gift>img{width:120px}.chat-gift>.icon{position:absolute;right:5px;bottom:5px}.chat-attachment{display:flex;align-items:center;gap:10px;background:#fffdf4;padding:13px;border-radius:14px;max-width:100%;font-size:14px}.chat-attachment>img{width:50px;height:50px;object-fit:cover;border-radius:8px}.sticker-drawer{width:100%;background:#f6f3e6;border-top:1px solid #e1e3d4}.sticker-pack-tabs{height:51px;display:flex;gap:6px;overflow-x:auto;padding:3px 9px}.sticker-pack-tabs button{flex:none;width:47px;border-radius:10px}.sticker-pack-tabs button[aria-pressed=true]{background:#d6e3cb}.sticker-pack-tabs img{height:42px;width:42px}.sticker-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:3px;padding:5px 9px;max-height:175px;overflow:auto}.sticker-grid button{min-height:64px;aspect-ratio:1;border-radius:12px}.sticker-grid button:active{background:#dbe5cf;transform:scale(.92)}.sticker-grid img{height:100%;width:100%}.stamp-store section{margin-bottom:28px}.stamp-store h2{font-size:15px;margin:10px 0 14px}.stamp-store section>div{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.stamp-store button{background:#eee9d8;border-radius:16px;padding:6px;position:relative}.stamp-store button>.icon{position:absolute;right:4px;bottom:4px;width:17px;height:17px;background:var(--paper);border-radius:50%}.stamp-preview{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.voice-controls #mic{width:65px;height:65px;background:var(--green);color:var(--paper)}
@keyframes message-arrive{from{opacity:0;translate:0 5px}to{opacity:1;translate:0 0}}
@media(max-width:480px){.phone-sheet{border-width:3px;border-radius:29px;width:100%;height:100%}.phone-sheet .sheet-head{height:52px;min-height:52px}.phone-sheet .sheet-body{padding:14px}.phone-sheet.chat-sheet .sheet-body{padding:0}.phone-nav{height:53px;min-height:53px;padding-bottom:5px}.phone-apps{gap:25px 22px}.phone-app{border-radius:22px}.phone-sheet .sheet-foot{padding-bottom:0}.sticker-grid{max-height:151px}.chat-stamp{height:129px;width:129px}}

[hidden]{display:none!important}.player-avatar{width:43px;height:43px;background:#d9e5cd;border-radius:50%;padding:9px;color:#628365}.phone-avatar .player-avatar{width:54px;height:54px;grid-row:span 2;padding:12px}.phone-sheet .wallet{flex-wrap:wrap}.phone-sheet .museum-room{grid-template-columns:repeat(2,1fr);gap:22px}.phone-sheet .display-case{height:170px}.phone-sheet .display-case img{height:115px}
/* Familiar messaging patterns with the original game brand. */
.line-app-icon{width:100%;height:100%;border-radius:22%;object-fit:contain}.phone-nav .line-app-icon{width:32px;height:32px;border-radius:8px}.phone-app.app-mail{padding:0;background:none;box-shadow:none}.phone-app>img{width:100%;height:100%;border-radius:23%}.phone-app.app-map,.phone-app.app-dig,.phone-app.app-book,.phone-app.app-shop,.phone-app.app-bag{padding:0;background:none;box-shadow:none}.phone-avatar{display:flex;align-items:baseline;justify-content:space-between;padding:4px 10px}.passport{padding:12px 18px}.dock-app{width:47px;height:47px;padding:0;position:relative;border-radius:14px}.dock-app img{width:100%;height:100%;border-radius:24%}.dock-app[data-badge]:after{content:attr(data-badge);position:absolute;right:-5px;top:-5px;min-width:19px;height:19px;background:#d26750;color:white;border:2px solid #fff7e8;border-radius:50%;font-size:11px}.line-sheet .sheet-head{background:#fff;border-color:#e6e6e6}.line-sheet .sheet-body{background:#a1b9d1}.line-sheet .chat-compose,.line-sheet .sheet-foot,.line-sheet .phone-nav{background:#fff}.line-sheet .chat-bubble{background:#fff;color:#25333a;box-shadow:none}.line-sheet .sent .chat-bubble{background:#8ee56c}.line-sheet .chat-reply{border:1px solid #06a847;color:#098942;background:#fff}.line-sheet .sticker-drawer{background:#f4f5f4}.line-sheet .chat-row.received .chat-bubble{position:relative}.line-sheet .chat-row.received .chat-bubble:before{content:'';position:absolute;left:-6px;top:0;border:8px solid transparent;border-top-color:white}.line-sheet .chat-row.sent .chat-bubble:after{content:'';position:absolute;right:-6px;top:0;border:8px solid transparent;border-top-color:#8ee56c}.chat-bubble{position:relative}.thread-list .thread-row{border:0}.result-check{text-align:center;color:var(--green)}.result-check>.icon{width:55px;height:55px}@media(max-width:480px){#content{padding:38px 13px calc(38px + env(safe-area-inset-bottom))}.phone-sheet{height:100%;max-height:850px}.passport{padding:9px 12px}.dock-app{width:42px;height:42px}.phone-apps{gap:23px}.phone-nav{height:51px;min-height:51px}.phone-sheet .sheet-body{padding:13px}.phone-sheet.chat-sheet .sheet-body{padding:0}}
.phone-nav .nav-svg-icon{width:24px;height:24px}
.dig-screen{background:linear-gradient(transparent 5%,#e9e5c62b 50%,#75937e2b);padding:90px 20px 100px}.excavation{width:min(1000px,100%);height:100%;margin:auto}.earth-target{border:0!important;border-radius:9px!important;background:none!important;box-shadow:none!important}.earth-target.available:hover{background:#fff4cc18!important;outline:2px solid #fff6d5;outline-offset:-3px}.earth-target.selected{background:#fff4cc29!important;outline:3px solid #fff8cd;outline-offset:-4px;box-shadow:0 0 17px #fff6b82b!important}.earth-target progress{position:absolute;left:15%;right:15%;width:70%;bottom:7px;height:4px}.dig-choice{z-index:4}.camp-marker>img,.field-marker>img{width:85%;height:85%;border-radius:23%;filter:none}.dig-marker>img{width:85%;height:85%}@media(max-width:700px){.dig-screen{padding:84px 7px 110px}.excavation{height:100%}.earth-target{min-width:0;min-height:0}.dig-choice{bottom:94px}}
.field-companions{display:flex;gap:11px;justify-content:center;flex-wrap:wrap;padding:12px}.field-companions button{width:51px;height:51px;border-radius:50%;padding:3px;border:2px solid transparent;background:#e5e6d2}.field-companions button[aria-pressed=true]{border-color:#458f71;background:#c7dfb6;box-shadow:0 0 0 3px #c5d7b94d}.field-companions img{width:100%;height:100%;border-radius:50%}.ally-hint{padding:0;width:45px;height:45px;border-radius:50%;border:2px solid #fff7df;box-shadow:0 3px #b0c99e}.ally-hint img{width:100%;height:100%;border-radius:50%}.phone-sheet .fieldwork-land{min-height:61%}
#content:not(:empty){pointer-events:auto}
.excavation{width:min(1110px,100%)}.dig-screen{padding:85px 8px 100px}.earth-target.available{border-radius:12px!important}.earth-target.available:hover{outline-offset:0}.earth-target.selected{outline-offset:0;box-shadow:inset 0 0 25px #ffe9b05c!important}.dig-screen .excavation{filter:drop-shadow(0 16px 12px #24452b24)}@media(max-width:480px){.dig-screen{padding:75px 0 95px}.excavation{width:100%}.earth-target.available{border-radius:8px!important}}
/* Direct tracing, centreward gravity and one random reward reveal. */
.puzzle-board{position:relative;touch-action:none;user-select:none;grid-template-rows:repeat(var(--rows),minmax(0,1fr));gap:12px;width:min(780px,100%);flex:1;min-height:0;max-height:640px;margin:30px auto 18px;padding:4px}.puzzle-tile,.puzzle-space{min-height:0;height:100%;border-radius:17px}.puzzle-tile{position:relative;z-index:1;touch-action:none;font-size:clamp(13px,2.6vw,22px);transition:box-shadow .16s,background .16s;border:1px solid #fff7dbb0}.puzzle-tile.ja{font-size:clamp(12px,2.3vw,19px)}.puzzle-space{background:none;box-shadow:none;border:none}.puzzle-tile.en{background:linear-gradient(#fffdf2,#eae3ca);color:#344e47;box-shadow:0 5px #a9b295,0 8px 12px #2949392b}.puzzle-tile.ja{background:linear-gradient(#c3e0ce,#a8cbb5);color:#274b40;box-shadow:0 5px #679983,0 8px 12px #2949392b}.puzzle-tile.selected,.puzzle-tile.linked{background:#fff2b9;box-shadow:0 0 0 3px #fff7d2,0 0 22px #ffe8a9,0 5px #c4ab6c}.puzzle-tile.adjacent{border-color:#fff1b3;box-shadow:0 0 0 1px #eed28b,0 5px #8ba88c}.puzzle-board.final-pairs:before{content:'';position:absolute;inset:5%;background:radial-gradient(#ffebae35,transparent 70%);pointer-events:none}.puzzle-link{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none;z-index:4}.puzzle-link path{fill:none;stroke:#fff5c3;stroke-width:7;stroke-linecap:round;filter:drop-shadow(0 0 4px #edbb5a)}.puzzle-footer{flex:none}.puzzle-board[data-busy=true]{pointer-events:none}.reward-card{cursor:default;perspective:700px;padding:0;min-height:260px;animation:none!important;transition:none}.reward-card:hover{transform:none}.gacha-back,.gacha-front{position:absolute;inset:0;border-radius:23px;backface-visibility:hidden;display:flex!important;flex-direction:column;align-items:center;justify-content:center;padding:15px}.gacha-back{background:repeating-linear-gradient(45deg,#c1cfb522 0 10px,#edf0d622 10px 20px),#557e65;border:5px double #d7d2aa;color:#e7dbaa}.gacha-back>.icon{width:58px;height:58px;stroke-width:1}.gacha-front{background:linear-gradient(145deg,#fffcec,#f0e1b8);transform:rotateY(-180deg);gap:12px}.gacha-front .prize-art{width:100%;height:120px}.opened .gacha-back{animation:gacha-hide .7s calc(var(--order)*.22s) both}.opened .gacha-front{animation:gacha-reveal .7s calc(var(--order)*.22s) both}.reward-sheet .sheet-foot{justify-content:center}.reward-sheet .sheet-foot button{min-width:82px}.sealed .reward-card{box-shadow:0 6px #a5b194,0 10px 20px #24492e33}@keyframes gacha-hide{from{transform:rotateY(0)}to{transform:rotateY(180deg)}}@keyframes gacha-reveal{from{transform:rotateY(-180deg)}to{transform:rotateY(0)}}
/* Full geological section with a small fixed equipment rail. */
.dig-screen{padding:76px 0 92px;background:linear-gradient(#597b7333,#6b6b5188)}.excavation-scroll{height:100%;width:100%;overflow:auto;overscroll-behavior:contain;scrollbar-width:thin;mask-image:linear-gradient(transparent,#000 10px,#000 calc(100% - 9px),transparent)}.dig-screen .excavation{max-height:none;max-width:none;margin:0 auto;filter:drop-shadow(0 10px 14px #303b3666)}.dig-top{top:12px;z-index:3;max-width:510px;gap:12px}.dig-site{display:flex;flex-direction:column;text-align:left;gap:2px;flex:1}.dig-site strong{font-size:14px}.dig-site span{font-size:12px;color:#65715c}.dig-top>.resource{font-size:13px}.stratum-label{position:absolute;left:18px;padding:7px 12px;background:#f6f0dded;color:#434c40;border-radius:3px 13px 13px 3px;display:flex;align-items:center;gap:15px;min-height:44px;box-shadow:0 3px 7px #302c2533;z-index:2}.stratum-label strong{font-size:15px}.stratum-label span{font-size:13px;color:#68705c}.earth-target.available{outline:none;border-radius:2px!important}.earth-target.available:hover,.earth-target.selected{outline:2px solid #ffedb39c!important;outline-offset:-2px!important;box-shadow:inset 0 0 25px #fff1b133!important}.excavation-mark{display:block;width:20px;height:20px;border:1px solid #fff8d6b0;border-radius:50%;box-shadow:0 0 0 4px #e7d6a81a;background:#faf0bc18}.buried-mark{display:block;width:5px;height:5px;border-radius:50%;background:#fff5d65e}.stratum-facts{display:flex;flex-wrap:wrap;justify-content:center;gap:9px 18px;margin:12px 0;font-size:14px}.stratum-facts>span:last-child{width:100%;color:#69755c}.dig-choice>p{font-size:14px;line-height:1.6;margin:14px 4px 0}.dig-choice .primary>img{width:32px;height:32px;object-fit:contain}.geology-sample{height:150px;border-radius:13px;background-color:var(--rock-color);background-image:repeating-linear-gradient(4deg,#292b281c 0 2px,transparent 3px 11px);box-shadow:inset 0 8px 25px #2b27284d}.geology-2{background-image:repeating-linear-gradient(27deg,#40372733 0 2px,transparent 3px 13px)}.geology-4{background-image:repeating-linear-gradient(2deg,#253a344d 0 1px,transparent 2px 5px)}.geology-facts{display:grid;grid-template-columns:80px 1fr;gap:14px;font-size:14px;line-height:1.6;margin:22px 0}.geology-facts dt{color:#7c856d}.geology-facts dd{margin:0}.model-note{font-size:14px;line-height:1.7;margin-top:26px;color:#66725f}@media(max-width:480px){.puzzle-board{gap:8px;margin:22px auto 18px;max-height:590px}.puzzle-tile,.puzzle-space{border-radius:12px;padding:5px}.reward-card{min-height:202px}.gacha-back,.gacha-front{border-radius:16px;padding:10px}.gacha-front .prize-art{height:90px}.reward-cards{gap:8px}.dig-screen{padding:76px 0 90px}.dig-top{left:10px;right:10px}.dig-top>.resource{font-size:12px}.dig-choice{bottom:91px}.dig-equipment{bottom:15px}.dig-site strong{font-size:13px}.dig-site span{font-size:12px}.stratum-label{left:13px}.stratum-label strong{font-size:14px}}@media(max-height:540px) and (orientation:landscape){.puzzle-board{margin:8px auto;max-height:none}.puzzle-footer{height:36px}.dig-screen{padding:66px 0 72px}}
/* Status has one home. Other views show only their own action costs and results. */
#hud{display:none!important}.phone-wallpaper{background:none;border-radius:0;padding:8px 12px;gap:28px;justify-content:flex-start}.home-status{display:flex;flex-direction:column;gap:14px;text-align:left;padding:6px 0 18px;border-bottom:1px solid #e4e5d8}.home-status .phone-avatar{padding:0}.home-exp{display:flex;align-items:center;gap:15px;font-size:13px;color:#71816b}.home-exp meter{flex:1;height:6px}.home-wallet{display:flex;justify-content:space-between;gap:20px;padding:0;min-height:45px}.home-wallet .resource{font-size:16px}.home-wallet img{width:33px;height:33px}.phone-wallpaper .phone-apps{gap:24px}.phone-wallpaper .phone-app{aspect-ratio:1}.fieldwork-land:before,.fieldwork-land:after,.field-path{display:none}.route-island,.route-island:before,.route-island:after{background:none!important;box-shadow:none!important;border:0!important}.world-route:before,.world-route:after{display:none}.dig-top{max-width:400px}.dock-app[data-action=phone]{display:grid;place-items:center}.dock-app[data-action=phone]>.icon{width:29px;height:29px}.geology-sample{display:none}

#game[data-screen=home] #landscape{filter:none;transform:none}.field-marker{left:76%;top:25%}.camp-marker{left:84%;top:14%}@media(max-width:700px){.field-marker{left:78%;top:35%}.camp-marker{left:82%;top:16%}}

/* Expedition records share the same compact app frame. */
.story-line{display:flex;align-items:flex-start;gap:12px;margin:20px 0;text-align:left;font-size:16px;line-height:1.75}.story-line>img{width:46px;height:46px;object-fit:cover;border-radius:50%;flex:none}.story-line p{margin:4px 0}.story-line b{font-size:14px;font-weight:600}.story-image{display:block;width:100%;max-height:300px;object-fit:cover;border-radius:16px}.group-avatars{position:relative;width:52px;height:52px;flex:none}.group-avatars img{position:absolute;width:36px;height:36px;object-fit:cover;border:2px solid var(--paper);border-radius:50%;top:0;left:0}.group-avatars img+img{top:auto;left:auto;bottom:0;right:0}.document-list{display:flex;flex-direction:column;gap:4px}.document-list>button{display:flex;align-items:center;gap:14px;min-height:78px;width:100%;text-align:left;padding:12px 4px;border-bottom:1px solid #e0e4d5}.document-list>button>img{width:56px;height:56px;object-fit:contain;flex:none}.document-list>button>.icon{width:28px;flex:none}.document-list>button>span{display:flex;flex:1;flex-direction:column;gap:5px;font-size:15px;min-width:0}.document-list>button>span>span{font-size:14px;color:#687561}.document-list>button>.icon:last-child{width:20px}.unread-dot{width:9px;height:9px;border-radius:50%;background:#bc665b;flex:none}.research-record{width:100%;display:flex;align-items:center;gap:12px;border-radius:16px;padding:14px;background:#e5ebd8;margin-bottom:14px}.research-record img{height:44px;width:44px;border-radius:50%}.research-record span{flex:1;text-align:left}.send-collection{display:flex;align-items:center;justify-content:center;gap:15px;border-radius:16px;background:#e7e8d9;min-height:66px;width:100%;margin:14px 0}.send-collection img{width:46px;height:46px;border-radius:12px}.send-collection span{font-size:18px}.mission-records>button{width:100%;display:flex;align-items:center;gap:15px;padding:18px 0;text-align:left;border-bottom:1px solid #e0e4d5}.mission-records img{width:82px;height:75px;object-fit:contain}.mission-records>button>span{flex:1;display:flex;flex-direction:column;gap:10px;font-size:14px}.mission-records meter{width:100%;height:6px}.research-paper{font-size:16px;line-height:1.9}.research-paper h2{font-size:25px;line-height:1.4}.research-paper .scientific-name{font-style:italic;margin:0;color:#687561}.paper-facts{display:flex;gap:14px;flex-wrap:wrap;margin:22px 0;padding:15px 0;border-block:1px solid #dce2d3;font-size:14px}.paper-parts{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin:25px 0}.paper-parts span{padding:8px 12px;background:#ececdd;border-radius:10px;color:#8c9584;font-size:14px}.paper-parts .owned{background:#d7e4c7;color:#375749}.cart-row{display:grid;grid-template-columns:1fr auto;gap:12px;padding:20px 0;border-bottom:1px solid #e0e4d5}.cart-row>div{grid-row:span 2;display:flex;align-items:center;gap:8px}.cart-row .icon-button{width:42px;height:42px;min-width:42px}.cart-row .resource{font-size:15px}.museum-income{display:flex;align-items:center;flex-wrap:wrap;gap:10px 18px;margin-bottom:22px}.museum-income>b{flex:1}.museum-income>span:last-child{width:100%;font-size:14px;color:#687561}.museum-growth{padding:18px 0;margin:20px 0;border-top:1px solid #dce2d3}.museum-growth summary{cursor:pointer;min-height:44px;display:flex;align-items:center}.sale-receipt{display:flex;align-items:center;justify-content:center;gap:18px;flex-wrap:wrap;padding:20px 0}.phone-sheet .research-slip{width:100%;text-align:left}.chat-attachment b{overflow-wrap:anywhere}.chat-attachment>.icon{flex:none}.phone-sheet .sheet-head h1{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.phone-sheet .icon-tabs{gap:3px}.phone-sheet .icon-tabs .icon-button{width:36px;min-width:36px;padding:7px}.find-reveal .story-line{margin:20px 0}.find-reveal .detail-hero{height:210px}.mission-records .icon{flex:none}
@media(max-width:480px){.phone-sheet .sheet-head:has(.icon-tabs) h1{font-size:16px}.paper-parts{gap:8px}.cart-row>div{gap:5px}.cart-row .icon-button{width:38px;min-width:38px}.research-paper h2{font-size:23px}.story-line{gap:10px}.story-line>img{width:40px;height:40px}}
.chat-bubble,.research-paper{text-align:left}.research-paper h2,.research-paper .scientific-name{text-align:left}.thread-row>span{text-align:left}
.debug-entry{margin:18px auto 0;min-height:44px}.debug-commands{display:flex;flex-direction:column;gap:13px}.debug-commands>button{width:100%;min-height:56px;text-align:left;justify-content:flex-start;padding:14px 18px;line-height:1.6}.debug-commands>hr{border:0;border-top:1px solid #dce2d3;width:100%;margin:8px 0}.debug-commands>p{font-size:14px;text-align:left;line-height:1.8;color:#66725f}.debug-commands .debug-reset{color:#965746;border:1px solid #cba799}
.detail-facts{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:14px 20px;text-align:left;margin:24px 0;padding:20px 0;border-block:1px solid #dce2d3;font-size:16px;line-height:1.6}.detail-facts dt{color:#64745e}.detail-facts dd{margin:0;text-align:right}.detail-facts .resource{justify-content:flex-end}.detail-copy{text-align:left;font-size:16px;line-height:1.85}.upgrade-route p{font-size:14px;margin:8px 0}.upgrade-route .primary{white-space:nowrap}
.storage-detail .detail-hero{height:180px;margin:4px auto 12px}.storage-detail h2{margin:12px 0 20px}@media(max-width:480px){.storage-detail .detail-hero{height:155px}.detail-facts{gap:12px;font-size:15px}}
.museum-growth h2{font-size:18px;text-align:left}.museum-growth>meter{width:100%;height:7px}.museum-growth>p{font-size:16px;line-height:1.7;text-align:left}.museum-income>.primary{width:100%;margin-top:12px}.museum-income>span:last-child{width:auto}.museum-room .display-case{height:auto!important;min-height:200px;padding-bottom:12px;display:flex;flex-direction:column;align-items:center;gap:8px}.display-case>b{font-size:15px;line-height:1.5;padding:0 8px}.display-case>span:last-child{font-size:15px}.display-case .plinth{position:relative;bottom:auto;width:100%;flex:none;height:16px;margin-bottom:8px}.display-case>img{flex:none}.display-case>span:first-child{height:115px;display:grid;place-items:center}.specimen-value{padding:20px 0;border-top:1px solid #dce2d3;margin-top:24px}.specimen-value h2{font-size:18px}.specimen-value .sale-receipt{align-items:flex-start}.specimen-value .sale-receipt>span{display:flex;flex-direction:column;gap:8px;font-size:14px}.segmented [aria-pressed=true]{background:#d5e3c7;color:#345b4c;border-radius:18px}.museum-growth ol{padding-left:22px;text-align:left;line-height:1.9}
/* V1 information hierarchy: artwork, identity, price, stock, explanation, action. */
.item-detail .detail-hero{height:clamp(160px,27dvh,255px);margin:8px auto 18px}.item-detail h2{margin:12px 0 16px}.detail-price{display:flex;justify-content:center;font-size:24px;font-weight:700}.purchase-quantity{text-align:center;font-size:16px;margin:16px 0 28px}.purchase-quantity span{color:#7b8575}.item-detail .detail-copy{line-height:1.85;margin:24px 0}.phone-sheet .sheet-foot>.primary{width:calc(100% - 32px);max-width:none;margin:16px;border-radius:18px;min-height:52px}.sheet-foot button:disabled{box-shadow:none;background:#e1e3d7;color:#798271;opacity:1}.detail-facts{line-height:1.7}.phone-sheet .sheet-body>h2{font-size:24px}
.dig-choice{width:min(460px,calc(100vw - 32px));padding:20px 24px!important;border:1px solid #c8c9af;border-radius:28px!important;box-shadow:0 18px 70px #17231566}.dig-choice-heading{display:flex;gap:12px;align-items:center}.dig-choice-heading>span{font-size:14px;color:#74806d}.dig-choice h2{text-align:center;margin:16px 0 10px;font-size:28px}.stratum-summary{text-align:center;color:#6d7965}.dig-cost{display:flex;justify-content:center;gap:24px;margin:22px 0 10px!important;padding-top:20px;border-top:1px solid #d9decb}.dig-cost>span{display:flex;align-items:center;gap:6px;font-size:16px}.dig-cost img{width:28px!important;height:28px!important}.dig-hits{text-align:center;font-size:18px;font-weight:600;margin:12px 0 24px}.dig-choice>.primary{width:100%;min-height:54px;border-radius:16px}.dig-choice>.text-button{display:block;margin:14px auto 0}.dig-requirements{line-height:1.7;font-size:15px}.dig-job-status{position:absolute;bottom:94px;left:18px;z-index:4;padding:14px 20px;background:#28392ded;color:#fff6de;border:1px solid #8c9779;border-radius:20px;text-align:left;box-shadow:0 4px 18px #18231c44}.dig-job-status>span{display:block;font-size:12px;margin-bottom:5px}.dig-job-status time{margin-left:12px;font-weight:700}.earth-target{border-radius:50%!important}.earth-target.available{background:#dfb76499!important}.earth-target.selected{outline:2px solid #fff1bf!important;border-radius:50%!important}.earth-target.working{outline:3px dashed #edbe69!important;background:#a8874266!important;border-radius:50%!important}.pickaxe{display:block;font-size:28px;animation:digging 1.6s infinite}.earth-target.locked{opacity:.6}.excavation-mark{width:15px!important;height:15px!important}.earth-target:hover{border-radius:50%!important}.dig-screen .excavation{filter:none}.dig-screen{background:#3a3d2d}.stratum-label{background:#292e1dbb!important;color:#fff2d2!important;padding:6px 12px;border-left:3px solid #c6ad6b!important}.stratum-label span{color:#d6c9a5!important}@keyframes digging{0%,100%{transform:rotate(-20deg)}50%{transform:rotate(30deg)}}
.typing-indicator{display:flex;gap:6px;width:58px;padding:14px;background:#fffef3;border-radius:16px;margin:12px 0 12px 48px}.typing-indicator i{width:6px;height:6px;background:#859780;border-radius:50%;animation:typing 1.5s infinite}.typing-indicator i:nth-child(2){animation-delay:.2s}.typing-indicator i:nth-child(3){animation-delay:.4s}@keyframes typing{50%{opacity:.25;transform:translateY(-3px)}}.incoming-message{display:flex;align-items:center;gap:12px;background:#fffdf1f5;padding:14px 16px;border:1px solid #d8ddca;border-radius:20px;box-shadow:0 8px 30px #263e3330;text-align:left}.incoming-message>img{width:44px;height:44px;object-fit:contain;border-radius:12px}.incoming-message>span{flex:1;display:grid;gap:5px}.incoming-message>span>span{font-size:14px}.incoming-message>.line-app-icon{width:34px;height:34px}#world>.incoming-message{position:absolute;top:20px;left:50%;transform:translateX(-50%);width:min(380px,calc(100% - 32px));z-index:5}.atlas-sheet.phone-sheet{width:min(1060px,100%)}.atlas{overflow:auto;border-radius:18px;background:#b9d8d2;border:1px solid #96bcb2}.atlas svg{display:block;width:100%;min-width:660px;height:auto;min-height:290px}.atlas-land{fill:#e9e4c3;stroke:#8d9c7e;stroke-width:.6}.atlas-pin{cursor:pointer}.atlas-pin circle{fill:#6c8174;stroke:#f9f3d7;stroke-width:1}.atlas-pin.open circle{fill:#c6843b}.atlas-pin:hover circle{fill:#765043}.atlas-sites{display:flex;flex-wrap:wrap;gap:8px;margin-top:18px}.atlas-sites button{padding:10px 14px;border-radius:12px;background:#e9eddf;font-size:14px}.atlas-sites .current-site{background:#387c69;color:white}.atlas-sheet .sheet-foot{padding:12px}.atlas-sheet .sheet-head .segmented{margin:0}.atlas-sheet .sheet-head h1{flex:1}.atlas-sheet .segmented button{font-size:14px;padding:8px}.atlas-sheet .segmented [aria-pressed=true]{background:#dce6d0}
@media(prefers-reduced-motion:reduce){.pickaxe,.typing-indicator i{animation:none}}
.earth-target.available,.earth-target.available:hover,.earth-target.selected{border-radius:50%!important}.atlas svg{min-width:0;min-height:0;aspect-ratio:1000/470}.dig-choice .dig-hits{font-size:18px;margin:14px 0 24px}.dig-choice{z-index:8;max-height:calc(100dvh - 120px);overflow:auto}.dig-choice:before{pointer-events:none}.phone-sheet .sheet-foot>.secondary{width:calc(100% - 32px);max-width:none;margin:12px 16px 0;min-height:48px;border-radius:16px}
.detail-price .resource{font-size:24px;gap:8px}.detail-price .resource img{width:30px;height:30px}.phone-sheet .sheet-foot>.primary{font-size:16px}.atlas-index{margin-top:20px}.atlas-index summary{padding:10px 0;font-size:16px;cursor:pointer}.atlas-sheet .sheet-body{display:flex;flex-direction:column;justify-content:center}.atlas{flex:none}
html,body,#game{overflow:clip}.dig-screen{overflow:hidden}#dig-detail:not(:empty){position:absolute;inset:0;z-index:10;background:#18251c55;backdrop-filter:blur(2px)}.dig-choice{background:var(--paper);text-align:center}.dig-choice .primary:disabled{background:#dce1d2;color:#697763;opacity:1;box-shadow:none}.dig-choice>.primary{margin-top:16px;font-size:17px}.dig-choice>.text-button{font-size:15px}.dig-choice .dig-requirements{margin:18px 0 0;font-size:15px}
body{position:fixed;inset:0}#game{position:relative}.phone-sheet .detail-hero{max-height:260px}.sheet-body>.detail-copy{line-height:1.85}.sheet-body>.detail-facts{padding:20px 0}
.stratum-rank{display:inline-block;border:1px solid #a3ac91;border-radius:24px;padding:6px 22px;margin:0 0 8px;font-size:15px;font-weight:600}.dig-choice .stratum-summary{font-size:14px}
/* Content areas scroll without permanent browser gutters or inset frames. */
*{scrollbar-width:none}*::-webkit-scrollbar{display:none;width:0;height:0}.scroll-indicator{position:fixed;background:#73806e99;border-radius:3px;pointer-events:none;z-index:80}.excavation-scroll{mask-image:none}.app-section-nav{display:flex;justify-content:space-around;align-items:center;border-top:1px solid #dde1ce;min-height:64px;padding:7px 12px;gap:8px}.app-section-nav button{width:52px;height:48px;border-radius:14px;position:relative;display:grid;place-items:center}.app-section-nav button[aria-pressed=true]{background:#e0e8d0}.app-section-nav img{width:35px;height:35px;object-fit:contain}.app-section-nav button>b,.cart-fab>b{position:absolute;top:0;right:0;background:#c77c58;color:white;border-radius:12px;font-size:12px;padding:2px 6px}.lab-section{margin:6px 0 28px}.lab-section h2{font-size:16px;text-align:left;margin:0 0 15px;display:flex;justify-content:space-between}.lab-section h2>span{font-weight:400;font-size:14px;color:#75836c}.lab-materials{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.lab-materials button{background:#f0f0e0;border:1px solid #e4e6d5;border-radius:17px;padding:12px 5px;display:flex;flex-direction:column;align-items:center;gap:5px}.lab-materials img{height:38px;width:38px}.lab-materials button>span{display:grid;text-align:center;gap:4px}.lab-materials b{font-size:22px}.lab-materials span>span{font-size:13px;line-height:1.4}.lab-capacities{display:grid;gap:10px}.lab-capacities button{display:flex;text-align:left;gap:14px;border:1px solid #e0e4d0;border-radius:15px;padding:12px}.lab-capacities img{width:45px;height:50px}.lab-capacities button>span{display:grid;grid-template-columns:1fr auto;gap:8px;flex:1;align-content:center}.lab-capacities b{font-size:15px}.lab-capacities span>span{font-size:13px;color:#74816b}.lab-capacities meter{grid-column:1/-1}.lab-empty{text-align:center;padding:28px 5px}.lab-empty>img{width:100px;height:100px;margin-bottom:18px}.lab-empty h3,.lab-empty h2{font-size:18px;line-height:1.7;margin:10px 0}.lab-empty p{font-size:15px;line-height:1.85;color:#70806b;margin:16px 0 25px}.lab-empty .primary{font-size:16px}.lab-notice{font-size:15px;line-height:1.8;color:#925f3d;margin:15px 0}.lab-stones{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.lab-stones button{display:grid;justify-items:center;border-radius:20px;background:#f0eddd;padding:12px}.lab-stones b{font-size:14px}.stone-art{display:grid;place-items:center;position:relative;width:150px;height:150px;max-width:100%}.stone-art img{width:74%;height:74%;transition:transform .3s}.stone-art.hint-2 img{width:85%;height:85%}.stone-art.hint-3 img{width:94%;height:94%;filter:drop-shadow(0 0 10px #d4a75188)}.stone-art.hint-4 img{width:100%;height:100%;filter:drop-shadow(0 0 18px #e2c252)}.stone-note{text-align:center;line-height:1.7;margin:10px 0;color:#76806c;font-size:15px}.crack-rock .stone-art{width:100%;height:100%}.discovery-card{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;height:390px;border-radius:28px;border:2px solid #d5c493;background:repeating-linear-gradient(45deg,#ebe2c6 0 12px,#e5dcc0 12px 24px);box-shadow:0 8px 0 #d0c6a9;transition:background .25s}.discovery-card.face{background:#fbf4db;animation:card-reveal .3s}.discovery-card>img{width:140px}.discovery-card .stone-art{width:220px;height:220px}.discovery-card h2{font-size:24px}.discovery-card p{font-size:15px;line-height:1.7;margin:16px 12px}.discovery-count{text-align:center;font-size:16px;margin:10px 0 18px}.discovery-history{display:flex;justify-content:center;flex-wrap:wrap;min-height:48px}.discovery-history .stone-art{width:45px;height:45px}.discovery-summary{width:100%;max-width:560px;margin:0 auto}.discovery-summary h2{text-align:center;margin:24px 0 16px}.discovery-summary p{display:grid;grid-template-columns:42px minmax(0,1fr) auto;gap:12px;align-items:center;text-align:left;border-bottom:1px solid #dddcca;margin:0;padding:12px 0}.discovery-summary p>span:not(.stone-art){min-width:0;text-align:left;overflow-wrap:anywhere}.discovery-summary p>b{justify-self:end;white-space:nowrap;font-variant-numeric:tabular-nums}.discovery-summary .stone-art{width:42px;height:42px}.specimen-card.unknown:disabled{opacity:1;cursor:default}.cart-fab{position:absolute;right:18px;bottom:82px;z-index:4;width:52px;height:52px;display:grid;place-items:center;background:#e0e8d5;border:2px solid #fffdf2;border-radius:50%;box-shadow:0 4px 15px #53684b22}.cart-fab>img{width:32px;height:32px}.cart-item{display:flex;gap:14px;border-bottom:1px solid #dce1cd;padding:18px 0}.cart-item>img{width:60px;height:65px}.cart-item>div{flex:1;min-width:0}.cart-item p{margin:8px 0}.quantity-controls{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.quantity-controls>.text-button{font-size:13px;margin-left:auto}.cart-sheet .sheet-body{padding-bottom:30px}.sheet-foot .cart-fab{margin:0}@keyframes card-reveal{from{transform:rotateY(75deg);opacity:.4}to{transform:rotateY(0);opacity:1}}@media(prefers-reduced-motion:reduce){.discovery-card.face{animation:none}}
.sheet-body,.chat-timeline,.excavation-scroll,.sticker-drawer,.atlas{scrollbar-width:none!important}.sheet-body::-webkit-scrollbar,.chat-timeline::-webkit-scrollbar,.excavation-scroll::-webkit-scrollbar{display:none!important}.sheet.discovery,.sheet.chat-sheet{animation:none}.lab-materials button>span>span{word-break:normal;overflow-wrap:anywhere}
.cart-fab>span{font-size:27px;line-height:1}.sheet:has(.cart-fab) .sheet-body{padding-bottom:76px}
/* Collection and expedition details share the same restrained controls. */
.collection-sort{display:flex;justify-content:flex-end;margin-bottom:14px}.collection-sort select,#atlas-region{border:0;border-radius:18px;background:var(--sage,#e2e8d1);color:inherit;padding:10px 16px;font:inherit;max-width:100%}.specimen-card.collecting>img{filter:brightness(0);opacity:.25}.word-records article{padding:16px 0;border-bottom:1px solid #dedfce;display:grid;gap:8px}.word-records article p{margin:0}.charge-orbit{position:absolute;inset:10% 25%;border-radius:50%;background:conic-gradient(#f3d782 var(--charge),#eff3d326 0);mask:radial-gradient(transparent 65%,#000 66% 70%,transparent 71%);pointer-events:none}.encounter{position:relative}.person-card>span{font-size:14px;line-height:1.6}.home-wallet{flex-wrap:wrap}.feed-post{padding:20px 0;border-top:1px solid #dedfce}.feed-post>img{width:100%;border-radius:16px}.feed-author{display:flex;align-items:center;gap:12px}.feed-author img{width:42px;height:42px;object-fit:contain}.feed-post p{line-height:1.8}

.avatar-link{border:0;background:none;padding:0;flex:0 0 38px;align-self:flex-start}.avatar-link .chat-avatar{width:38px;height:38px}.message-quest{padding:16px 18px;border-bottom:1px solid var(--line);text-align:left}.message-quest button{background:none;border:0;display:grid;grid-template-columns:1fr auto;gap:10px;width:100%;color:inherit;text-align:left}.message-quest meter{grid-column:1/-1;width:100%;height:7px}.message-quest p{font-size:14px;line-height:1.6;margin:10px 0 0}.app-section-nav button{position:relative}.tab-badge{position:absolute;right:8px;top:2px;background:#bb684f;color:white;border-radius:50%;min-width:19px;font-size:12px}.site-quest{padding:16px;background:#e8eddc;border-radius:18px;margin:20px 0}

.chat-bubble{white-space:pre-wrap}
/* Compact map details and notifications stay inside the active app viewport. */
#content>.incoming-message{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);z-index:45;width:min(360px,calc(100vw - 38px));max-width:100%;box-shadow:0 0 0 100vmax #1c302460,0 12px 38px #24382f40;pointer-events:auto}
.map-underlay{position:absolute;inset:0;display:grid;place-items:center;pointer-events:none}.map-underlay>.sheet{pointer-events:auto;width:min(1060px,100%)}
.site-overlay{position:absolute;inset:0;display:grid;place-items:center;pointer-events:none;padding:18px}.site-overlay>.sheet{pointer-events:auto;width:min(430px,96%);height:min(610px,82dvh);max-height:calc(100dvh - 48px);border-radius:24px;box-shadow:0 0 0 100vmax #203c302e,0 16px 46px #1f332c55}.site-overlay .sheet-body{display:block;overflow-y:auto;padding:16px 20px}.site-overlay .sheet-body>h2{font-size:21px;margin:8px 0 14px}.site-overlay .detail-copy{font-size:14px;line-height:1.6}.site-overlay .detail-facts{font-size:13px;gap:8px;margin:10px 0}.site-overlay .collection-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.site-overlay .specimen-card{min-width:0}.site-overlay .specimen-card img.silhouette{filter:brightness(0) opacity(.45)!important}
.sheet:has(.cart-fab){position:relative}.sheet:has(.cart-fab) .cart-fab{right:20px;bottom:18px;max-width:calc(100% - 40px)}.phone-sheet .sticker-drawer{max-width:100%;box-sizing:border-box;overflow-x:hidden}.phone-sheet .sticker-grid{max-width:100%;min-width:0;overflow-x:hidden}
.reward-sheet .reward-cards.opened .reward-card:has(.gacha-front) .gacha-back{animation:gacha-hide .35s forwards}@keyframes gacha-hide{to{opacity:0;transform:rotateY(180deg)}}
.cheer{max-width:min(90vw,400px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.15;text-align:center}
@media(max-width:480px){.site-overlay{padding:9px}.site-overlay>.sheet{width:min(370px,96%);height:min(570px,79dvh)}.site-overlay .sheet-body{padding:12px 15px}.site-overlay .specimen-card img{max-height:90px}.site-overlay .collection-grid{gap:6px}}
.specimen-card img.silhouette,.dinosaur.silhouette img{filter:brightness(0) opacity(.48)!important}.specimen-card.unknown img{filter:brightness(0) opacity(.45)!important}
.tool-list{display:grid;gap:10px}.tool-list-row{width:100%;display:flex;align-items:center;gap:14px;min-height:84px;padding:10px 14px;border:1px solid #d9dfcc;border-radius:16px;background:#f0f1e4;text-align:left}.tool-list-row:disabled{opacity:.58}.tool-list-row img{width:64px;height:64px;object-fit:contain}.tool-list-row span{flex:1;display:grid;gap:6px}.tool-list-row small{font-size:13px;color:#738071}.tool-list-row .icon{width:20px}.puzzle-rules{width:min(560px,calc(100% - 28px));margin:8px auto 0;padding:9px 13px;border-radius:13px;background:#fff9e8e8;color:#425e4e;font-size:13px;line-height:1.45;text-align:center}.result-score{font-size:20px;font-weight:700;color:#466c58}
.earth-target.completed{border-radius:50%;background:#3c826e;color:#fff7de;box-shadow:0 0 0 4px #fff8dbb8,0 7px 18px #20463670;z-index:5}.job-complete-mark{display:grid;place-items:center;font-weight:800;font-size:24px;line-height:1}.job-complete-mark small{font-size:9px}
.chat-sheet .sheet-body{flex:1 1 auto;min-height:0}.chat-sheet .sheet-foot{flex:0 0 auto;min-height:0;max-height:min(42dvh,330px);overflow:hidden}.chat-sheet .sticker-drawer{display:flex;flex-direction:column;min-height:0;max-height:min(32dvh,260px);overflow:hidden}.chat-sheet .sticker-pack-tabs{flex:0 0 auto}.chat-sheet .sticker-grid{flex:1 1 auto;min-height:0;height:min(24dvh,195px);max-height:none;overflow-y:auto;overscroll-behavior:contain;padding-bottom:12px}
.chat-sheet .sheet-foot>.chat-compose{flex:0 0 60px!important;height:60px;align-items:center}.chat-sheet .sheet-foot>.sticker-drawer{flex:0 0 min(30dvh,230px)!important;height:min(30dvh,230px);max-height:min(30dvh,230px)}.chat-sheet .sticker-grid{height:auto;max-height:none;flex:1 1 auto}
#content:has(.site-overlay) .map-underlay .atlas-sheet .sheet-body{justify-content:flex-start;padding-top:20px}
.site-overlay{align-items:end;padding-bottom:24px}.site-overlay>.sheet{height:min(480px,60dvh)}
@media(max-width:480px){.site-overlay{padding-bottom:44px}.site-overlay>.sheet{height:min(470px,58dvh)}}
.sheet:has(.phone-nav) .cart-fab,.sheet:has(.app-section-nav) .cart-fab{bottom:84px}
#content>.incoming-card{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);z-index:45;width:min(360px,calc(100vw - 38px));pointer-events:auto}.incoming-card .incoming-message{width:100%;min-height:84px;padding-right:47px;box-shadow:0 0 0 100vmax #1c302460,0 12px 38px #24382f40}.incoming-card .incoming-message>span>span{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere}.incoming-dismiss{position:absolute;right:8px;top:8px;width:32px;height:32px;border-radius:50%;display:grid;place-items:center;background:#e8ecdf;color:#496859}.incoming-dismiss .icon{width:17px;height:17px}
#game[data-site="katsuyama"] #landscape{background:#8ba798 url('/art/katsuyama-landscape.png') 50% 50%/cover no-repeat}
.site-banner{position:absolute;z-index:4;top:18px;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:7px;max-width:min(84vw,430px);padding:9px 15px;border-radius:22px;background:#fff9e8ed;border:1px solid #fffdf2;color:#315948;box-shadow:0 4px 0 #324f3730,0 9px 25px #172c2740;white-space:nowrap;font-size:13px}.site-banner .icon{width:19px;height:19px;flex:none}.site-banner span{color:#6b806e}.site-banner b{overflow:hidden;text-overflow:ellipsis;font-size:14px}
.site-banner:not(:disabled):active{transform:translate(-50%,2px)}
.chat-choice-row{display:flex;justify-content:flex-end;margin:0 0 15px;padding-left:47px;animation:message-arrive .2s ease-out}.chat-choice-row .chat-reply{position:relative;max-width:100%;white-space:normal;overflow-wrap:anywhere;text-align:left;font-size:15px;line-height:1.65}.line-sheet .chat-choice-row .chat-reply{background:#8ee56c;color:#25333a;border:1px solid #69cb50;border-radius:19px 4px 19px 19px}.line-sheet .chat-choice-row .chat-reply:after{content:'';position:absolute;right:-6px;top:-1px;border:8px solid transparent;border-top-color:#8ee56c}
@media(max-width:700px){.site-banner{top:12px;padding:7px 11px;gap:5px;font-size:11px}.site-banner b{font-size:12px}}

/* Scene objects share the background's image coordinates. */
.scene-camp{position:absolute;z-index:1;transform:translate(-50%,-50%);height:auto;pointer-events:none;filter:drop-shadow(0 12px 8px #253d2955)}
.hotspots{position:static}.hotspots .landmark{z-index:2}

/* The map keeps the drawing, place list, and detail card in one visual system. */
.atlas-sheet .sheet-body{justify-content:flex-start;gap:14px;padding:22px 24px 24px}
.atlas-intro{font-size:14px;color:#687d70;text-align:left;line-height:1.5}
.atlas{width:100%;height:clamp(260px,52dvh,470px);flex:none;overflow:hidden;border:1px solid #9ebfb4;border-radius:22px;background:#bfddd7;box-shadow:inset 0 2px 7px #345c4c18}
.atlas svg{display:block;width:100%;height:100%;min-width:0;min-height:0;aspect-ratio:auto}
.atlas-land{stroke-width:.45}
.atlas-pin{outline:none}.atlas-pin .pin-target{fill:transparent;stroke:transparent;pointer-events:all}.atlas-pin .pin-pulse{fill:#f9efcf70;stroke:#fff8de;stroke-width:.3}.atlas-pin .pin-core{fill:#687f72;stroke:#fff8db;stroke-width:.7;transition:fill .16s,stroke-width .16s}.atlas-pin.open .pin-core{fill:#bd7b39}.atlas-pin.current .pin-core{fill:#397e6b}.atlas-pin[data-active=true] .pin-core,.atlas-pin:focus-visible .pin-core{fill:#edb755;stroke-width:1.3}.atlas-pin[data-active=true] .pin-pulse,.atlas-pin:focus-visible .pin-pulse{fill:#ffefbd;stroke:#eec262;stroke-width:.8}.atlas-pin .pin-label{opacity:0;paint-order:stroke;stroke:#fffbed;stroke-width:2.2;stroke-linejoin:round;fill:#274e40;font-size:3.4px;font-weight:800;pointer-events:none}.atlas-pin[data-active=true] .pin-label,.atlas-pin:focus-visible .pin-label{opacity:1}
.atlas-index{width:100%;margin:0;border-top:1px solid #dce2d1;padding-top:12px}.atlas-index-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:11px;font-size:14px}.atlas-index-head span{font-size:12px;color:#728778}.atlas-sites{display:flex;flex-wrap:wrap;gap:8px;margin:0}.atlas-sites button{display:flex;align-items:center;gap:8px;min-height:42px;padding:8px 13px;border-radius:13px;background:#e8eddd;font-size:13px;line-height:1.3;text-align:left;border:1px solid transparent}.atlas-sites .current-site{background:#397e6b;color:#fffbed}.atlas-sites button[data-active=true],.atlas-sites button:focus-visible{border-color:#d79e42;box-shadow:0 0 0 2px #f1cb75}.current-dot{width:7px;height:7px;flex:none;border-radius:50%;background:#f3d283}
.site-overlay{align-items:center;padding:16px;z-index:2}.site-overlay>.site-detail-sheet{width:min(470px,94%);height:auto;max-height:min(640px,90dvh);border-radius:26px}.site-detail-sheet .sheet-head{min-height:58px;height:58px}.site-detail-sheet .sheet-head h1{font-size:16px;line-height:1.3}.site-overlay .site-detail-sheet .sheet-body{padding:18px 20px;display:grid;gap:15px;overflow-y:auto}.site-meta{display:flex;flex-wrap:wrap;gap:7px}.site-meta span{display:inline-flex;align-items:center;gap:5px;padding:6px 9px;border-radius:12px;background:#eaf0e1;font-size:12px;font-weight:650}.site-meta .icon{width:15px;height:15px}.site-description{font-size:13px;line-height:1.7;text-align:left}.site-mission{display:grid;gap:4px;padding:12px 14px;background:#e8eddc;border-radius:15px;text-align:left}.site-mission>span{font-size:11px;color:#6b806d}.site-mission>b{font-size:14px}.site-mission>p{font-size:12px;line-height:1.5}.site-lock-note{font-size:12px;color:#815e42;text-align:left}.site-specimens{border-top:1px solid #dce2d1;padding-top:12px}.site-specimens h2{font-size:13px;text-align:left;margin:0 0 9px}.site-specimens>div{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}.site-specimen{display:grid;place-items:center;gap:3px;min-width:0;padding:5px;border-radius:11px;background:#f4f1e4}.site-specimen img{height:51px;width:100%;object-fit:contain}.site-specimen span{font-size:10px;line-height:1.25;overflow-wrap:anywhere}.site-specimen img.silhouette{filter:brightness(0)!important;opacity:.36}.site-detail-sheet .sheet-foot{padding:11px 16px}.site-detail-sheet .sheet-foot>.primary{width:100%;min-height:46px}
@media(max-width:700px){.atlas-sheet .sheet-body{padding:14px;gap:11px}.atlas{height:clamp(220px,42dvh,380px)}.atlas-intro{font-size:12px}.site-overlay{padding:10px}.site-overlay>.site-detail-sheet{width:min(430px,100%);max-height:calc(100dvh - 20px)}.site-overlay .site-detail-sheet .sheet-body{padding:13px 15px;gap:11px}.site-description{font-size:12px}.site-specimen img{height:43px}}
.atlas[data-region=japan] .pin-label{font-size:1.25px;stroke-width:.28}
#game:not([data-site="komae"]) .scene-camp{left:76%;top:42%;width:150px}
/* Hit areas remain invisible; only the small core identifies each site. */
.atlas .atlas-pin circle.pin-target{fill:transparent;stroke:transparent;pointer-events:all}
.atlas .atlas-pin circle.pin-pulse{fill:transparent;stroke:transparent;opacity:0;pointer-events:none;transition:opacity .16s}
.atlas .atlas-pin circle.pin-core{fill:#6c8174;stroke:#fff8db;stroke-width:.35;pointer-events:none}
.atlas .atlas-pin.open circle.pin-core{fill:#bd7b39}
.atlas .atlas-pin.current circle.pin-core{fill:#397e6b}
.atlas .atlas-pin[data-active=true] circle.pin-pulse,.atlas .atlas-pin:focus-visible circle.pin-pulse{fill:#f8edca;opacity:.5}
.atlas .atlas-pin[data-active=true] circle.pin-core,.atlas .atlas-pin:focus-visible circle.pin-core{fill:#e7a854;stroke-width:.55}
#dock:has(.dock-home-only){padding:9px;border-radius:24px}
.dock-home-only{display:grid;place-items:center}
.field-marker-art{display:flex;align-items:center;justify-content:center;gap:0;width:100%;height:100%}
.field-marker-art img{width:39px;height:39px;object-fit:contain;border-radius:11px}
.field-marker-art img+img{margin-left:-8px;transform:translateY(8px)}
.camp-marker>img{object-fit:contain}
.fieldwork-app-art{display:flex;align-items:center;justify-content:center;width:100%;height:100%;padding:10px;background:#f5e7d1;border-radius:23%}
.fieldwork-app-art img{width:55%;height:68%;object-fit:contain;border-radius:13px}
.fieldwork-app-art img+img{margin-left:-12%;transform:translateY(12%)}
.phone-sheet.fieldwork .sheet-body{padding:20px 19px}
.phone-sheet.fieldwork .fieldwork-land{min-height:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:0 0 18px}
.phone-sheet.fieldwork .field-destination,.phone-sheet.fieldwork .field-destination:nth-of-type(1),.phone-sheet.fieldwork .field-destination:nth-of-type(2){width:100%;min-width:0;min-height:190px;align-self:stretch;margin:0;padding:15px 9px;border-radius:24px;gap:7px}
.phone-sheet.fieldwork .field-destination img{width:82px;height:82px;object-fit:contain}
.phone-sheet.fieldwork .field-destination strong{font-size:17px}
.phone-sheet.fieldwork .field-destination>span{font-size:11px}
.field-status{display:grid;gap:18px;text-align:left}
.field-progress{display:flex;align-items:center;gap:13px;padding:12px 2px;border-bottom:1px solid #dfe4d4}
.field-progress>b{white-space:nowrap;font-size:13px}
.field-progress meter{width:100%;height:8px}
.field-team>span{display:block;margin-bottom:9px;color:#6c816f;font-size:12px}
.field-partner-current,.field-companions button{display:flex;align-items:center;gap:12px;width:100%;padding:10px 12px;border-radius:15px;background:#edf1e5;text-align:left}
.field-partner-current img,.field-companions img{width:46px;height:46px;flex:none;border-radius:50%}
.field-partner-current>div,.field-companions button>span{display:grid;gap:3px;min-width:0}
.field-partner-current b,.field-companions b{font-size:14px}
.field-partner-current small,.field-companions small{font-size:11px;line-height:1.45;color:#65786a}
.field-companions{display:grid;gap:7px}
.field-companions button[aria-pressed=true]{outline:2px solid #5a9b82}
.puzzle-board{margin-top:14px}
.cheer{-webkit-text-stroke:0;text-shadow:0 3px 9px #4c503b66;font-weight:800;letter-spacing:.01em}
.reward-intro{text-align:center;margin:0 0 19px}
.reward-intro h2{font-size:21px;margin:0 0 6px}
.reward-intro p{margin:0;font-size:13px;color:#71816a}
.reward-card .gacha-back span{font-size:16px;font-weight:700}
.reward-sheet .sheet-body{padding-bottom:24px}
.exam-editions{display:grid;gap:9px;text-align:left}
.exam-edition{background:#f6f3e7;border:1px solid #e2e4d4;border-radius:16px;overflow:hidden}
.exam-edition summary{display:grid;grid-template-columns:72px 1fr auto;align-items:center;gap:10px;padding:13px 15px;cursor:pointer;list-style:none;font-size:13px}
.exam-edition summary::-webkit-details-marker{display:none}
.exam-edition summary>b{font-size:15px}
.exam-edition summary>span:last-child{color:#83917e;font-size:12px}
.exam-edition-kind{color:#4d806c;font-weight:700}
.exam-coming{margin:0;padding:0 15px 15px;color:#788874;font-size:12px}
.exam-edition .test-entrances{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;padding:0 12px 12px}
.exam-edition .test-entry{width:100%;min-height:120px;display:grid;grid-template-columns:50px 1fr;align-content:center;gap:5px 8px;margin:0;padding:12px;border-radius:14px;text-align:left}
.exam-edition .test-paper-icon{grid-row:span 2;width:50px;height:60px}
.exam-edition .test-paper-icon img{width:45px;height:45px;object-fit:contain}
.exam-edition .test-entry h2{font-size:16px;margin:0}
.exam-edition .test-entry>span{font-size:12px}
.specimen-card.empty>img{opacity:.14;filter:grayscale(1)}
.phone-sheet .collection-grid{gap:7px}
.phone-sheet .specimen-card{padding:7px 5px 9px}
.phone-sheet .specimen-card>img{height:70px}
.phone-sheet .specimen-card span{font-size:11px}
.phone-sheet.find-detail-sheet .sheet-foot{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;padding:12px 14px}
.phone-sheet.find-detail-sheet .sheet-foot>.secondary{margin:0;min-width:0;max-width:none;width:100%;padding:9px 5px;min-height:46px;font-size:12px;line-height:1.3}
.cart-tools{margin:0 0 8px}
.cart-tools>.secondary{width:100%;min-height:42px;padding:8px;font-size:12px}
.cart-sheet .sheet-body{padding:14px 17px}
.cart-item{display:grid;grid-template-columns:52px minmax(0,1fr);gap:11px;align-items:center;padding:10px 0}
.cart-item>img{width:52px;height:52px;object-fit:contain}
.cart-item p{margin:3px 0;font-size:12px}
.quantity-controls{gap:6px;flex-wrap:nowrap}
.quantity-controls .icon-button{width:30px;height:30px;min-width:30px}
.quantity-controls>.text-button{padding:5px 8px;font-size:11px}
.phone-sheet .museum-room{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;min-height:0;padding:10px 0 17px}
.phone-sheet .museum-room .display-case{min-height:147px;height:147px!important;padding:8px 3px;gap:2px}
.phone-sheet .museum-room .display-case img{height:75px;max-width:100%;object-fit:contain}
.phone-sheet .museum-room .display-case>b{font-size:11px;line-height:1.25;padding:0 2px}
.phone-sheet .museum-room .display-case>span:last-child{font-size:10px}
.phone-sheet .museum-room .display-case .plinth{height:8px;margin:2px 0}
.phone-sheet .museum-income{padding:12px;margin:0}
.phone-sheet .museum-income>.primary{min-height:40px;margin:7px 0 0}
.test-result-description,.result-description{max-width:560px;margin:12px auto 24px;color:#68796c;font-size:14px;line-height:1.6;text-align:center}
@media(max-width:480px){.phone-sheet.fieldwork .field-destination img{width:67px;height:67px}.exam-edition .test-entrances{grid-template-columns:1fr}.phone-sheet .museum-room{gap:4px}.phone-sheet .museum-room .display-case{min-height:132px;height:132px!important}.phone-sheet .museum-room .display-case img{height:62px}}
.chat-read{display:block;align-self:flex-end;color:#477667;font-size:11px;line-height:1.2;margin-top:-4px;padding-right:3px}.find-reveal{max-width:480px;margin:auto}.find-reveal .detail-hero{height:clamp(175px,29dvh,240px)}.find-comment{display:flex;align-items:flex-start;gap:10px;text-align:left;margin:16px 0 20px}.find-comment>img{width:44px;height:44px;border-radius:50%;object-fit:cover;flex:none}.find-comment>div{min-width:0}.find-comment b{font-size:12px;color:#6e7d70}.find-comment p{position:relative;background:#fffdf7;border-radius:4px 16px 16px 16px;padding:12px 15px;margin:5px 0 0;font-size:16px;line-height:1.6;box-shadow:0 2px 0 #dce4d3}.find-comment p:before{content:'';position:absolute;left:-8px;top:0;border-top:10px solid #fffdf7;border-left:10px solid transparent}.find-note{text-align:left;background:#f0eddf;border-left:3px solid #aeb99f;border-radius:4px 12px 12px 4px;padding:12px 16px;margin:18px 0;color:#566653}.find-note span{font-size:11px;font-weight:700;letter-spacing:.08em;color:#809078}.find-note p{font-size:14px;line-height:1.75;margin:6px 0 0}.dig-progress-copy{padding:16px 0;margin:12px 0;font-size:16px}.field-marker-art img:first-child,.fieldwork-app-art img:first-child{width:54px;height:54px}.field-marker-art img:last-child,.fieldwork-app-art img:last-child{width:38px;height:38px;transform:translate(-11px,13px) rotate(-28deg);filter:drop-shadow(0 3px 2px #1d413c66)}.exam-edition .test-entry,.exam-edition .test-entry:nth-child(n){transform:none!important;rotate:none!important}.exam-resume{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;background:#e5efdf;border-radius:14px;text-align:left;margin-bottom:10px}.exam-resume>div{display:grid;gap:4px}.exam-resume b{font-size:15px}.exam-resume span,.exam-switch-note{font-size:12px;color:#687a69}.exam-resume button{flex:none}.exam-switch-note{text-align:left;margin:0 0 12px}.puzzle-link path{stroke-width:5;filter:drop-shadow(0 0 7px #ffe6a0)}
.goal-species{display:flex;align-items:center;gap:9px;text-align:left}.goal-species-art{display:grid;place-items:center;width:55px;height:52px;flex:none}.goal-species-art img{width:55px;height:52px;object-fit:contain}.goal-species>span:last-child{display:grid;gap:2px}.goal-species b{font-size:12px;line-height:1.3}.goal-species small{font-size:11px;color:#61745d}
.puzzle-tile.claimable{border-color:#f4dfa2;box-shadow:0 0 0 1px #f5d685,0 0 13px #fbe3a65e,0 5px #8ba88c}
/* Keep transient feedback away from bottom menus and action buttons. */
#toast{position:fixed;top:calc(env(safe-area-inset-top,0px) + 72px);right:16px;bottom:auto;left:auto;max-width:min(360px,calc(100vw - 32px));transform:translateY(-8px);text-align:left}#toast.on{transform:translateY(0)}
.chat-row.sent>div{align-items:flex-end}.chat-row.sent .chat-stamp{display:block}.chat-row.sent .chat-read{align-self:flex-end;width:100%;text-align:right;margin:0;padding:0 3px 0 0}
.chat-row.sent>div{flex-direction:row;align-items:flex-end;gap:7px}.chat-row.sent .chat-read{order:-1;align-self:flex-end;width:auto;flex:none;margin:0 0 4px;padding:0;text-align:right}
.chat-row{animation:none}.chat-row.arriving{animation:message-arrive .2s ease-out}
.reward-sheet .reward-card{cursor:pointer}.reward-sheet .reward-card:focus-visible{outline:3px solid #d7a454;outline-offset:4px}.reward-sheet .reward-cards.opened{display:flex;justify-content:center}.reward-sheet .reward-cards.opened .reward-card{cursor:default;width:min(270px,100%)}
.cart-loose{display:flex;gap:8px;flex-wrap:wrap;margin:8px 0 14px}.cart-loose .secondary{flex:1 1 150px;min-height:44px;font-size:13px}
.exam-availability{margin:0 0 12px;padding:7px 10px;color:#758473;background:#edf1e6;border-radius:9px;font-size:12px;text-align:left}
/* A chosen reward stays visible after its turn; quantities arrive one beat later. */
.reward-sheet .reward-cards.reveal .reward-card,.reward-sheet .reward-cards.amount .reward-card{width:min(280px,100%);cursor:default;animation:none!important}
.reward-sheet .reward-card.revealed .gacha-front{position:relative;inset:auto;min-height:235px;width:100%;transform:none;backface-visibility:visible;animation:none!important;display:flex!important;flex-direction:column;justify-content:center;gap:9px}
.reward-sheet .reward-card.revealed .gacha-front strong{font-size:17px;color:#435f4b}
.reward-sheet .reward-card.turning{width:min(280px,100%);animation:reward-turn .42s ease-in-out both!important}
.reward-sheet .reward-card.turning .gacha-back{inset:0}
.reward-sheet .prize-amount{display:flex;justify-content:center;gap:12px;flex-wrap:wrap;width:100%;animation:reward-amount .38s ease-out both}
.reward-sheet .prize-amount span{font-size:14px;color:#455f4d}
.reward-sheet .prize-amount b{font-size:23px}
@keyframes reward-turn{50%{transform:rotateY(88deg)}100%{transform:rotateY(180deg)}}
@keyframes reward-amount{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}
.recitation .karaoke{position:relative;display:inline-block;max-width:100%;user-select:none;-webkit-user-select:none;--karaoke-progress:0%}
.recitation .karaoke>.karaoke-fill{position:absolute;inset:0;width:var(--karaoke-progress);overflow:hidden;white-space:nowrap;color:#2f9671;pointer-events:none;transition:width .1s linear}
.recitation .english.karaoke>.karaoke-fill{color:#e7a945}
.recitation .ally-hint.passive{display:grid;place-items:center;cursor:default}
.atlas-pin .pin-label{font-weight:900;stroke-width:1.5}
.atlas[data-region=japan] .pin-label{font-weight:900;stroke-width:.22}
/* Adjacent matching tablets share a conspicuous warm frame. */
.puzzle-tile.adjacent{border:3px solid #f4c965;background:linear-gradient(#fff8d4,#f3e2ad);box-shadow:0 0 0 3px #fff8df,0 0 20px #f5d979a8,0 5px #bd9e64;animation:match-breathe 1.5s ease-in-out infinite alternate}
.puzzle-tile.adjacent::after{content:'マッチ';position:absolute;right:5px;top:4px;border-radius:8px;background:#ba7842;color:#fff9df;padding:2px 5px;font-size:10px;line-height:1.2;font-weight:800;pointer-events:none}
@keyframes match-breathe{to{box-shadow:0 0 0 4px #fff4b8,0 0 30px #f5d979,0 5px #bd9e64}}
/* The first exhibition is a temporary culture-festival table. */
.museum-room.stage-0{position:relative;isolation:isolate;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;padding:30px 11px 32px;background:linear-gradient(180deg,#e8e0c9 0 20px,#b9926a 20px 26px,#d4b08a 26px 87%,#98724d 87% 100%);border:2px solid #e4d3b6;border-radius:15px;box-shadow:inset 0 5px #faf3df,0 9px 17px #4d482b2b}
.museum-room.stage-0::after{content:'';position:absolute;left:0;right:0;bottom:0;height:16px;border-radius:0 0 13px 13px;background:#866344;box-shadow:0 4px #5a4536;z-index:-1}
.museum-room.stage-0 .display-case{height:auto!important;min-height:174px;border:0;background:transparent;box-shadow:none;padding:4px;gap:4px}
.museum-room.stage-0 .display-case img{height:86px;filter:drop-shadow(2px 5px 4px #4e392a77)}
.museum-room.stage-0 .display-case .plinth{height:8px;width:96%;margin:0;background:#e5ca9b;border-radius:3px;box-shadow:0 5px #8c6f50}
.museum-room.stage-0 .display-case b{width:100%;min-height:27px;padding:4px 2px;background:#faf4e4;color:#3d5344;font-size:12px;line-height:1.3;border-radius:2px;box-shadow:0 2px #aa9271}
.museum-room.stage-0 .display-case>span:last-child{color:#f9f1dc;font-size:11px;font-weight:700}
@media(max-width:480px){.museum-room.stage-0{gap:4px;padding:22px 7px 25px}.museum-room.stage-0 .display-case{min-height:146px!important;height:auto!important}.museum-room.stage-0 .display-case img{height:64px}.museum-room.stage-0 .display-case b{font-size:10px}}
/* Detail screens share a restrained type scale; games and event scenes keep their own scale. */
#game:not([data-screen=discovery]) .phone-sheet:not(.chat-sheet) .sheet-head h1{font-size:18px;line-height:1.3;font-weight:700}
#game:not([data-screen=discovery]) .phone-sheet:not(.chat-sheet) .sheet-body>h2{font-size:20px;line-height:1.4;margin:15px 0}
#game:not([data-screen=discovery]) .phone-sheet:not(.chat-sheet) .detail-copy{font-size:15px;line-height:1.75}
#game:not([data-screen=discovery]) .phone-sheet:not(.chat-sheet) .detail-facts{font-size:14px;line-height:1.6}
#game:not([data-screen=discovery]) .phone-sheet:not(.chat-sheet) .tool-list-row b{font-size:16px}
#game:not([data-screen=discovery]) .phone-sheet:not(.chat-sheet) .tool-list-row small{font-size:13px}
#game:not([data-screen=discovery]) .phone-sheet:not(.chat-sheet) .specimen-card b{font-size:13px;line-height:1.35}
#game:not([data-screen=discovery]) .phone-sheet:not(.chat-sheet) .sheet-foot>.primary,#game:not([data-screen=discovery]) .phone-sheet:not(.chat-sheet) .sheet-foot>.secondary{font-size:16px}
.recitation{user-select:none;-webkit-user-select:none}
.discovery-card{position:relative;overflow:hidden}
.discovery-card .discovery-step{position:absolute;top:14px;left:14px;padding:5px 10px;border-radius:999px;background:#fff9e6dd;color:#566a52;font-size:12px;font-weight:700}
.discovery-card:not(.face)>img{animation:discovery-bag .6s ease-in-out both}
.discovery-card.face .stone-art{animation:discovery-stone .48s cubic-bezier(.16,.8,.2,1) both}
@keyframes discovery-bag{from{transform:translateY(28px) scale(.87);opacity:.4}to{transform:translateY(0) scale(1);opacity:1}}
@keyframes discovery-stone{from{transform:translateY(65px) scale(.75);opacity:0}to{transform:translateY(0) scale(1);opacity:1}}
.discovery-source{display:flex;align-items:center;justify-content:center;gap:9px;margin:4px auto 5px;color:#62735b;font-size:13px;font-weight:700}
.discovery-source img{width:48px;height:48px;object-fit:contain;filter:drop-shadow(0 3px 3px #3c49354a)}
.discovery-card .stone-art.coming{filter:brightness(.55) saturate(.45) blur(2px);transform:translateY(28px) scale(.7);opacity:.55}
.discovery-card.face .stone-art{filter:none}
.undiscovered-art{height:130px;width:100%;display:grid;place-items:center;font:400 68px Georgia,serif;color:#b4b9a8;background:radial-gradient(ellipse,#e6e8dc,transparent 72%)}
.undiscovered-hero{background:radial-gradient(ellipse,#e5e8dd,transparent 72%);color:#b0b7a7;font:400 110px Georgia,serif}
.undiscovered-part{height:70px;display:grid;place-items:center;font:400 32px Georgia,serif;color:#aeb6a7}
.undiscovered-goal,.undiscovered-site{display:grid;place-items:center;width:100%;height:100%;font:400 35px Georgia,serif;color:#9aa99b}
.reward-sheet .reward-cards.reveal .reward-card,.reward-sheet .reward-cards.all-open .reward-card,.reward-sheet .reward-cards.amount .reward-card{width:210px;min-width:0}
.reward-sheet .reward-card.chosen{box-shadow:0 0 0 3px #e8c77d,0 8px 24px #4a5c3028}
.reward-sheet .reward-card:not(.chosen).revealed{filter:saturate(.7);opacity:.82}
@media(max-width:700px){.undiscovered-art{height:86px;font-size:46px}.reward-sheet .reward-cards.reveal .reward-card,.reward-sheet .reward-cards.all-open .reward-card,.reward-sheet .reward-cards.amount .reward-card{width:calc(33.333% - 6px)}}

/* ---- TALK（暗唱）2026-10-02：縦に「日本語→英語→ふりがな→聞き取り→音のグラフ」 ---- */
#game .talk-screen.tk{display:flex;flex-direction:column;gap:10px}
#game .talk-screen.tk .encounter{flex:1;min-height:90px}
#game .talk-screen.tk .opponent{max-height:min(30vh,240px)}
.tk-card{align-self:center;width:min(720px,100%);background:#fbf5e6;color:#2d4a3c;border-radius:28px;padding:22px 20px 18px;box-shadow:0 6px 0 #c9bf9f;display:flex;flex-direction:column;align-items:center;gap:6px;text-align:center}
.tk-pips{display:flex;gap:6px;margin-bottom:4px}
.tk-pips i{width:26px;height:7px;border-radius:4px;background:#d9d2bd}
.tk-pips i.on{background:#e3a845}
.tk-ja{position:relative;font-size:clamp(18px,4.6vw,24px);font-weight:700;color:#7f8a80;line-height:1.3}
.tk-ja .tk-fill{position:absolute;inset:0;color:#2f7a5e;clip-path:inset(0 calc(100% - var(--sung,0%)) 0 0)}
.tk-en{font-size:clamp(34px,10vw,56px);font-weight:800;letter-spacing:.02em;line-height:1.1;word-break:break-word;
 background:linear-gradient(90deg,#e3a845 var(--sung,0%),#c9b98f var(--sung,0%));-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.tk-en span.typed{-webkit-text-fill-color:#2f7a5e}
.tk-en.masked{letter-spacing:.12em;-webkit-text-fill-color:#9aa59b;background:none}
.tk-en.masked span.typed{-webkit-text-fill-color:#2f7a5e}
.tk-kana{font-size:clamp(15px,3.8vw,19px);color:#8d8a7b;letter-spacing:.06em;min-height:1.2em}
.tk-heard{min-height:1.4em;font-size:15px;color:#6f7c72;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tk-heard[data-state="miss"]{color:#c0654b}
.tk-wave{display:flex;align-items:center;justify-content:center;gap:5px;height:34px;margin-top:2px}
.tk-wave i{width:6px;height:30px;border-radius:3px;background:#2f7a5e;transform:scaleY(.12);transition:transform 80ms linear}
.tk-note{margin-top:6px;border:0;border-radius:16px;background:#c0654b;color:#fff;font-size:14px;padding:10px 14px;cursor:pointer}
/* 2026-10-03 TALK：英語の下が切れない・高さを固定してガタつかない */
.tk-en{line-height:1.3;padding:0 .06em .1em;min-height:1.4em}
.tk-ja{min-height:1.35em}
.tk-kana{height:1.3em}
.tk-heard{height:1.5em;min-height:0}
.tk-wave{height:34px;overflow:hidden;flex:none}
.tk-pips{height:7px;flex:none}
/* パズル：文字の札を出さない（光る枠だけ） */
.puzzle-tile.adjacent::after{content:none!important;display:none!important}
/* スマホ型の枠：下のボタンが角に欠けない */
#game .phone-sheet:not(.chat-sheet) .sheet-foot{padding-bottom:calc(16px + env(safe-area-inset-bottom))}
/* 報酬：3枚とも表。選ばなかったカードは暗く */
#game .reward-sheet .reward-card.revealed.missed{filter:grayscale(.6) brightness(.55);opacity:1}
.reward-sheet .reward-card .prize-amount span{display:flex;align-items:baseline;gap:4px;justify-content:center}
.reward-sheet .reward-card .prize-amount s{color:#9a9a8a;font-size:15px}
.reward-sheet .reward-card .prize-full{display:inline-block;margin-top:2px;padding:2px 8px;border-radius:8px;background:#c0654b;color:#fff;font-size:12px;font-weight:700}
/* チャンクマップ */
.talk-map-sheet{width:min(430px,100%);height:min(820px,100%);border:7px solid #e9e4ce;border-radius:40px;background:#eef2df;overflow:hidden;display:flex;flex-direction:column}
.talk-map-sheet .sheet-head{display:flex;align-items:center;gap:10px;height:56px;padding:7px 12px;border-bottom:1px solid #dfe3cc;background:#faf7ec}
.talk-map-sheet .sheet-head h1{flex:1;font-size:18px;margin:0}
.cm-count{font-size:14px;color:#6b7a6d;font-weight:700;padding-right:6px}
.talk-map-sheet .cm-body{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;padding:0;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#82907180 transparent}
.cm{position:relative;width:100%;padding:40px 0;isolation:isolate;background:#aebd82}
.cm-terrain{position:absolute;inset:0;overflow:hidden;z-index:-2;pointer-events:none}
.talk-map-sheet{--talk-terrain:url('/art/talk/forest-trail-v1.webp')}
.talk-map-sheet[data-terrain=river]{--talk-terrain:url('/art/talk/river-trail-v2.webp')}
.talk-map-sheet[data-terrain=dry]{--talk-terrain:url('/art/talk/dry-trail-v1.webp')}
.talk-map-sheet[data-terrain=coast]{--talk-terrain:url('/art/talk/coast-trail-v1.webp')}
.talk-map-sheet[data-terrain=snow]{--talk-terrain:url('/art/talk/snow-trail-v1.webp')}
.cm-terrain-tile{height:640px;background:var(--talk-terrain) center/100% 100% no-repeat}
.cm-terrain-tile:nth-child(even){transform:scaleY(-1)}
.cm-route{position:absolute;left:0;top:0;z-index:-1;pointer-events:none}
.cm-step{display:flex;align-items:center;justify-content:center;height:104px;transform:translateX(calc(var(--bend) * .65))}
.cm-node{position:relative;width:60px;height:60px;border-radius:50%;border:3px solid #fffdf1;background:#fffaf0;color:#3e5a49;font-weight:700;font-size:18px;box-shadow:0 3px 0 #8f9870,0 5px 10px #314d3a40;cursor:pointer;transition:transform .15s,box-shadow .15s}
.cm-node:not(:disabled):hover{transform:translateY(-2px);box-shadow:0 5px 0 #8f9870,0 8px 14px #314d3a45}
.cm-node:focus-visible{outline:3px solid #365f50;outline-offset:4px}
.cm-node small{position:absolute;right:-4px;top:-4px;width:22px;height:22px;border-radius:50%;background:#2f7a5e;color:#fff;font-size:13px;line-height:22px}
.cm-node.done{background:#78ab91;color:#173f30}
.cm-node.boss{width:74px;height:66px;border-radius:19px;font-size:14px;background:#e9d7af;color:#5b4f33;box-shadow:0 3px 0 #98805c,0 5px 12px #314d3a40}
.cm-node.boss.done{background:#e9d3a8}
.cm-node.next{background:#d89c37;color:#fff;border-color:#fff3ce;box-shadow:0 3px 0 #a87831,0 0 0 5px #fff2c38c,0 8px 16px #314d3a45}
.cm-node.cur::after{content:'';position:absolute;left:50%;bottom:-14px;width:10px;height:10px;margin-left:-5px;border-radius:50%;background:#c0654b}
.cm-node:disabled{opacity:1;background:#e9eddd;color:#79826d;border-color:#f6f6e8;box-shadow:0 3px 0 #929c78,0 4px 8px #314d3a25;cursor:default}
.reward-sheet .prize-icon{width:30px;height:30px;object-fit:contain}

/* ホーム：アプリは4つ横並び（スマホのホーム画面の大きさ） */
#game .phone-wallpaper .phone-apps{grid-template-columns:repeat(4,minmax(0,1fr));gap:18px 14px;max-width:360px;margin-left:auto;margin-right:auto}
#game .phone-wallpaper .phone-app{border-radius:18px;max-width:78px;width:100%;justify-self:center}
#game .phone-wallpaper .phone-app .icon{width:30px;height:30px}
/* ---- TALK の戦い（2026-10-03） ---- */
#game .talk-screen.tk{position:absolute}
.tk-arena{position:relative;display:flex;align-items:center;justify-content:center}
.tk-foe-wrap{position:relative;display:flex;flex-direction:column;align-items:center;gap:8px}
.tk-foe-wrap.big .tk-foe{transform:scale(1.15)}
.tk-hp{width:min(220px,60vw);height:12px;border-radius:7px;background:#00000040;box-shadow:inset 0 0 0 2px #fff8;overflow:hidden}
.tk-hp i{display:block;height:100%;background:linear-gradient(#8fe08a,#4fb35a);border-radius:7px;transition:width .14s ease-out}
.tk-foe.enter{animation:tk-enter .35s ease-out both}
.tk-foe.down{animation:tk-down .26s ease-in forwards}
.tk-foe.blown{animation:tk-blown .45s ease-in forwards}
@keyframes tk-enter{from{opacity:0;transform:translateY(-18px) scale(.85)}to{opacity:1;transform:none}}
@keyframes tk-down{to{opacity:0;transform:translateY(14px) scale(.9) rotate(-8deg)}}
@keyframes tk-blown{to{opacity:0;transform:scale(1.35) translateY(-30px)}}
.tk-combo{position:absolute;right:6%;top:8%;display:flex;flex-direction:column;align-items:center;color:#fff9e6;text-shadow:0 2px 0 #0004}
.tk-combo b{font-size:34px;line-height:1}.tk-combo small{font-size:11px;font-weight:800;letter-spacing:.12em}
.tk-fx{position:absolute;inset:0;pointer-events:none}
.tk-mark{position:absolute;left:50%;top:50%;width:150px;height:8px;margin:-4px 0 0 -75px;border-radius:4px;background:linear-gradient(90deg,transparent,#fff,transparent);animation:tk-slash .18s ease-out forwards}
.tk-mark.thrust{transform:rotate(28deg)}.tk-mark.slash{transform:rotate(-28deg)}
.tk-mark.impact{width:120px;height:120px;margin:-60px 0 0 -60px;border-radius:50%;background:radial-gradient(#fff 0 18%,#ffe08a 30%,transparent 62%);animation:tk-impact .22s ease-out forwards}
.tk-mark.heavy{filter:drop-shadow(0 0 10px #ffd36e)}
@keyframes tk-slash{from{opacity:1;scale:.4 1}to{opacity:0;scale:1.25 1}}
@keyframes tk-impact{from{opacity:1;scale:.5}to{opacity:0;scale:1.3}}
.tk-float{position:absolute;left:50%;top:24%;transform:translateX(-50%);font-size:26px;font-weight:900;color:#fff7c9;text-shadow:0 3px 0 #b5762a,0 0 14px #0005;animation:tk-float 1s ease-out forwards;white-space:nowrap}
.tk-float.big{font-size:40px}
@keyframes tk-float{0%{opacity:0;translate:0 12px}18%{opacity:1;translate:0 -8px}70%{opacity:1;translate:0 -28px}100%{opacity:0;translate:0 -45px}}
.tk-banner{position:absolute;left:0;right:0;top:34%;display:flex;justify-content:center;pointer-events:none;z-index:5}
.tk-banner span{padding:12px 34px;background:linear-gradient(90deg,transparent,#2f7a5ee6 15%,#2f7a5ee6 85%,transparent);color:#fff;font-size:clamp(26px,7vw,44px);font-weight:900;letter-spacing:.08em;animation:tk-banner 1.3s ease-out forwards}
.tk-banner.boss span{background:linear-gradient(90deg,transparent,#a8342ae6 15%,#a8342ae6 85%,transparent)}
.tk-banner.burst span{background:linear-gradient(90deg,transparent,#c78a1ee6 15%,#c78a1ee6 85%,transparent)}
@keyframes tk-banner{0%{opacity:0;scale:1.25}15%{opacity:1;scale:1}80%{opacity:1}100%{opacity:0}}
.tk-arena.tk-unleash .tk-foe{animation:tk-glow .5s ease-in-out infinite alternate;filter:drop-shadow(0 0 18px #ffd36e)!important}
.tk-arena.tk-unleash .charge-orbit{--charge:100%!important}
@keyframes tk-glow{to{transform:scale(1.2)}}
.tk-arena.tk-unleash .tk-foe.blown{animation:tk-blown .45s ease-in forwards}
/* 2026-10-03 HPバーは控えめ、敵は大きく */
#game .talk-screen.tk .tk-hp{width:min(130px,40vw);height:7px;border-radius:4px}
#game .talk-screen.tk .opponent{max-height:min(45vh,380px)}
/* パズルのボーナスタイム（文字の説明なし：日本語と減っていく輪っか） */
.puzzle-screen{position:relative}
.pz-bonus{position:absolute;left:50%;top:56px;transform:translateX(-50%);z-index:6;display:flex;flex-direction:column;align-items:center;gap:8px;pointer-events:none;animation:pz-in .25s ease-out both}
@keyframes pz-in{from{opacity:0;transform:translate(-50%,-10px) scale(.9)}}
.pz-bonus-ring{position:relative;width:min(200px,46vw);aspect-ratio:1;display:grid;place-items:center;background:#fffaf0;border-radius:50%;box-shadow:0 6px 0 #c9a24f,0 0 0 6px #f6dc93,0 12px 30px #0003}
.pz-bonus-ring svg{position:absolute;inset:0;transform:rotate(-90deg)}
.pz-bonus-ring circle{fill:none;stroke-width:7}
.pz-bonus-ring .bg{stroke:#eee4c8}
.pz-bonus-ring .fg{stroke:#e3a845;stroke-linecap:round;stroke-dasharray:283;stroke-dashoffset:0;animation:pz-count var(--secs) linear forwards}
@keyframes pz-count{to{stroke-dashoffset:283;stroke:#c0654b}}
.pz-bonus-ring b{position:relative;font-size:clamp(20px,5vw,30px);color:#2d4a3c;padding:0 16px;text-align:center;line-height:1.25}
.pz-bonus-pips{display:flex;gap:8px}
.pz-bonus-pips i{width:16px;height:16px;border-radius:50%;background:#ffffff70;box-shadow:inset 0 0 0 2px #fff}
.pz-bonus-pips i.now{background:#f6dc93}.pz-bonus-pips i.ok{background:#4fb35a}.pz-bonus-pips i.ng{background:#c0654b}
.pz-bonus.hit .pz-bonus-ring{box-shadow:0 6px 0 #3d8f4a,0 0 0 10px #8fe08a,0 0 40px #8fe08a}
.pz-bonus.miss .pz-bonus-ring{box-shadow:0 6px 0 #8f3d2f,0 0 0 10px #e08a72;animation:pz-shake .3s}
@keyframes pz-shake{25%{translate:-6px 0}75%{translate:6px 0}}
.bonus-mode .puzzle-tile.ja{opacity:.35;pointer-events:none}
.bonus-mode .puzzle-tile.en{box-shadow:0 5px 0 #c9a24f,0 0 0 3px #f6dc93}
.bonus-mode .puzzle-board{padding-top:min(250px,52vw)}
/* 報酬：取れる枚数 */
.reward-picks{display:flex;justify-content:center;gap:8px;margin:0 0 14px}
.reward-picks i{width:22px;height:30px;border-radius:5px;background:linear-gradient(150deg,#f3d58a,#d9a94a);box-shadow:0 3px 0 #b3842f}
.reward-picks i.used{opacity:.3}
/* 2026-10-03 パズル：コマと盤は固定の大きさ（iPadで見やすい大きさが最大）。ボーナスの丸は決まった場所に */
#game .puzzle-screen .puzzle-board{--tw:min(170px,calc((100vw - 64px) / var(--cols) - 10px));--th:min(60px,calc((100dvh - 330px) / var(--rows) - 8px));flex:none;width:auto;max-height:none;min-height:0;margin:6px auto;padding:4px;gap:8px;justify-content:center;align-content:start;grid-template-columns:repeat(var(--cols),var(--tw))!important;grid-template-rows:repeat(var(--rows),var(--th))!important}
#game .bonus-mode .puzzle-board{padding-top:4px}
.pz-slot{position:relative;height:150px;flex:none;display:flex;align-items:center;justify-content:center}
#game .pz-slot .pz-bonus{position:relative;left:auto;top:auto;transform:none;animation:pz-in2 .25s ease-out both}
@keyframes pz-in2{from{opacity:0;transform:scale(.9)}}
#game .pz-slot .pz-bonus-ring{width:118px}
#game .pz-slot .pz-bonus-ring b{font-size:clamp(15px,2.4vw,20px);padding:0 10px}
#game .pz-slot .pz-bonus-ring .fg{animation:pz-count var(--secs) linear var(--wait) forwards}
.pz-banner{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;z-index:3;pointer-events:none}
.pz-banner span{padding:12px 34px;background:linear-gradient(90deg,transparent,#c78a1ee6 15%,#c78a1ee6 85%,transparent);color:#fff;font-size:clamp(26px,6vw,40px);font-weight:900;letter-spacing:.08em;animation:tk-banner 1.5s ease-out forwards}
.card-stack{position:absolute;right:18px;top:64px;z-index:4;display:flex;align-items:center;gap:6px;color:#fff9e6;font-weight:900;text-shadow:0 2px 0 #0004}
.card-stack i{position:relative;width:30px;height:40px;border-radius:6px;background:linear-gradient(150deg,#f3d58a,#d9a94a);box-shadow:3px 3px 0 #b3842f,6px 6px 0 #9c722a}
.card-stack b{font-size:22px}
.reward-stack-row{display:flex;justify-content:center;margin:0 0 16px}
.reward-stack-row .card-stack{position:static;color:#7a5a20;text-shadow:none}
.reward-stack-row .card-stack.empty{opacity:.35}
.fly-card{position:fixed;z-index:50;width:28px;height:38px;border-radius:6px;background:linear-gradient(150deg,#fff1b8,#e3b552);box-shadow:0 0 18px #ffe08a;pointer-events:none}
/* チュートリアル（お母さんの吹き出し） */
.tut-bubble{position:fixed;z-index:60;display:flex;align-items:center;gap:10px;max-width:min(360px,calc(100vw - 20px));padding:10px 14px 10px 10px;background:#fffaf0;border-radius:18px;box-shadow:0 6px 0 #d7c9a2,0 14px 30px #0004;color:#2d4a3c;pointer-events:none;animation:tut-in .25s ease-out both}
.tut-bubble img{width:46px;height:46px;border-radius:50%;background:#EBB07A;flex:none;object-fit:cover}
.tut-bubble p{margin:0;font-size:16px;font-weight:700;line-height:1.45}
.tut-arrow{position:absolute;left:var(--ax,50%);width:16px;height:16px;margin-left:-8px;background:#fffaf0;transform:rotate(45deg)}
.tut-bubble[data-side=above] .tut-arrow{bottom:-7px}.tut-bubble[data-side=below] .tut-arrow{top:-7px}.tut-bubble[data-side=none] .tut-arrow{display:none}
@keyframes tut-in{from{opacity:0;translate:0 8px}}
.tut-target{z-index:55;animation:tut-glow 1.1s ease-in-out infinite}
@keyframes tut-glow{0%,100%{box-shadow:0 0 0 3px #ffe08a,0 0 0 9px #ffe08a55}50%{box-shadow:0 0 0 5px #ffd36e,0 0 0 16px #ffd36e22}}
.tut-reward{position:fixed;left:50%;top:22%;transform:translateX(-50%);z-index:70;display:flex;gap:14px;padding:14px 22px;background:#fffaf0;border-radius:20px;box-shadow:0 6px 0 #c9a24f,0 0 0 6px #f6dc93,0 18px 40px #0005;animation:tut-pop 2.6s ease-out forwards;pointer-events:none}
.tut-reward .resource{display:flex;align-items:center;gap:6px;font-size:24px;font-weight:900;color:#2d4a3c}
.tut-reward .resource img{width:36px;height:36px}
@keyframes tut-pop{0%{opacity:0;scale:.7}10%{opacity:1;scale:1.05}18%{scale:1}85%{opacity:1}100%{opacity:0;translate:-50% -20px}}
/* クエスト */
button.expedition-goal{border:0;font:inherit;cursor:pointer}
.quest-sheet{text-align:center}
.quest-chapter{font-size:13px;color:#7b8a7e}
.quest-sheet h2{margin:4px 0 10px}
.quest-goal{font-size:16px;font-weight:700;color:#2d4a3c}
.quest-items{display:flex;justify-content:center;gap:12px;flex-wrap:wrap;margin-top:10px}
.quest-item{display:flex;flex-direction:column;align-items:center;gap:4px;width:96px;padding:10px 6px;border:0;border-radius:16px;background:#f1ecd9;color:#2d4a3c;font:inherit;position:relative}
.quest-item img{width:56px;height:56px;object-fit:contain;filter:grayscale(1) opacity(.45)}
.quest-item.found img{filter:none}.quest-item b{font-size:12px}
.quest-item span{position:absolute;right:6px;top:4px;color:#2f7a5e;font-weight:900}
.quest-progress{display:flex;align-items:center;justify-content:center;gap:10px;margin-top:10px}
.quest-progress meter{width:60%}

/* 掘り終わったら、受け取りを強く光らせる */
.job-chip.ready{background:linear-gradient(#fff3c4,#f3d27a);color:#5b3d10;font-weight:800;box-shadow:0 4px 0 #c9a24f,0 0 0 4px #ffe9a8,0 0 26px #ffd36e;animation:ready-pulse 1s ease-in-out infinite}
.job-chip-art{position:relative;display:grid;place-items:center;flex:none;width:38px;height:38px}
.job-chip-art img{display:block;width:36px;height:36px;filter:drop-shadow(0 2px 1px #59431d35)}
.job-chip-check{display:none}
.job-chip.ready .job-chip-check{display:grid;place-items:center;position:absolute;right:-3px;bottom:-2px;width:20px;height:20px;border:2px solid #fff9e8;border-radius:50%;background:#315f46;color:#fff;font:bold 13px/1 system-ui;box-shadow:0 1px 3px #0003}
.earth-target.completed{animation:ready-pulse 1s ease-in-out infinite;box-shadow:0 0 0 5px #ffe08a,0 0 28px #ffd36e,0 7px 18px #20463670!important}
.dig-choice[data-job-complete=true] [data-action="job"]{animation:ready-pulse 1s ease-in-out infinite;box-shadow:0 5px 0 #24584a,0 0 0 4px #ffe08a,0 0 26px #ffd36e}
@keyframes ready-pulse{50%{transform:scale(1.08);filter:brightness(1.12)}}
/* チュートリアルのスタンプカード */
.stamp-overlay{position:fixed;inset:0;z-index:80;display:grid;place-items:center;background:#1b2a2266;animation:tut-in .2s ease-out}
.stamp-card{width:min(440px,calc(100vw - 32px));background:#fffaf0;border-radius:24px;padding:20px 18px 18px;box-shadow:0 8px 0 #d7c9a2,0 20px 50px #0006;text-align:center;color:#2d4a3c}
.stamp-card h2{margin:0 0 8px;font-size:20px}
.stamp-got{display:flex;justify-content:center;align-items:center;gap:12px;margin:4px 0 14px;font-size:24px;font-weight:900}
.stamp-got .resource{display:flex;align-items:center;gap:6px}.stamp-got img{width:34px;height:34px}
.stamp-got em,.stamp-reward em{font-style:normal;font-weight:800;color:#b5762a}
.stamp-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;margin-bottom:16px}
.stamp-cell{position:relative;display:flex;flex-direction:column;align-items:center;gap:4px;padding:10px 4px 8px;border:2px dashed #d9cfae;border-radius:14px}
.stamp-cell b{font-size:11px;line-height:1.3}
.stamp-reward{display:flex;flex-wrap:wrap;justify-content:center;gap:2px;font-size:11px}
.stamp-reward .resource{display:flex;align-items:center;gap:2px}.stamp-reward img{width:16px;height:16px}
.stamp-mark{width:40px;height:40px;border-radius:50%;border:3px solid #e7dcbc}
.stamp-cell.done .stamp-mark{border-color:#c0392b;background:radial-gradient(#e0583f 0 38%,transparent 40%),#fff;box-shadow:inset 0 0 0 4px #fff}
.stamp-cell.now .stamp-mark{animation:stamp-hit .45s cubic-bezier(.2,1.6,.4,1) both .15s}
@keyframes stamp-hit{0%{transform:scale(2.4) rotate(-20deg);opacity:0}100%{transform:none;opacity:1}}
.stamp-card .primary{width:100%;min-height:46px;border-radius:16px}

/* TALK 相づち */
.tk-aizuchi{position:fixed;z-index:60;display:flex;align-items:center;gap:6px;max-width:min(70vw,260px);pointer-events:none;animation:tk-aizuchi 1.4s ease forwards}
.tk-aizuchi img{width:38px;height:38px;border-radius:50%;background:#fff7e8;border:2px solid #fff;box-shadow:0 2px 6px #0003;object-fit:cover}
.tk-aizuchi p{margin:0;padding:6px 11px;border-radius:14px;background:#fffdf6;color:#3b2f22;font-weight:700;font-size:14px;box-shadow:0 2px 8px #0003}
@keyframes tk-aizuchi{0%{opacity:0;transform:translateY(6px) scale(.9)}12%{opacity:1;transform:none}80%{opacity:1}100%{opacity:0;transform:translateY(-6px)}}

/* 自分の入力中（右側・緑） */
.typing-indicator.me{margin:12px 6px 12px auto;background:#a8e07a}
.typing-indicator.me i{background:#4f7a3a}

/* ホームのアプリ：画像のアイコンは台と影なし（画像が無く線画のときは台を残す） */
#game .phone-app:has(>img){padding:0;background:none;box-shadow:none}
#game .phone-app:has(>img){transition:transform .18s cubic-bezier(.3,1.6,.5,1),filter .18s}
@media(hover:hover){#game .phone-app:has(>img):hover{background:none;transform:translateY(-4px) scale(1.05);filter:drop-shadow(0 8px 10px #46644a33)}}
#game .phone-app:has(>img):active{transform:scale(.92);filter:none;transition-duration:.08s}
/* 隊のページ（V1 b78 の並び） */
.team-page{display:flex;flex-direction:column;gap:10px}
.team-head{background:#f3f1df;border-radius:18px;padding:12px 14px}
.team-head h3{margin:0 0 10px;font-size:16px;display:flex;align-items:baseline;gap:8px}
.team-head h3 span{font-size:13px;color:#6f8a6a}
.team-head .tcs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
.team-head .tc{display:flex;flex-direction:column;gap:3px;min-width:0}
.team-head .tc i{font-style:normal;font-size:11px;color:#7d8a74}
.team-head .tc b{font-size:16px;white-space:nowrap}.team-head .tc b small{font-size:11px;font-weight:500;color:#9aa38f}
.team-head .tb{height:5px;border-radius:3px;background:#dfe3cf;overflow:hidden}.team-head .tb em{display:block;height:100%;background:#6fa36a}
.team-head .tc.ng b{color:#c45a44}.team-head .tc.ng .tb em{background:#d98a6a}
.team-head .tc u{text-decoration:none;font-size:10px;color:#8b947f}
.team-acts{margin-top:10px;display:flex;justify-content:flex-end}.team-acts img{width:20px;height:20px;vertical-align:middle;margin-right:4px}
.team-row{display:flex;align-items:center;gap:12px;padding:8px 10px;border-radius:16px;background:#fbfaf1;cursor:pointer;transition:background .15s}
.team-row:hover{background:#eef1df}
.team-row>img{width:48px;height:48px;border-radius:50%;background:#f9f5e3;flex:none}
.team-row .tx{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}
.team-row .tx>b{font-size:14px}.team-row small{font-size:11px;color:#7d8a74}.team-row small b{color:#5b7a52}
.team-tag{margin-left:6px;font-size:10px;padding:1px 6px;border-radius:8px;background:#f0d8c8;color:#a0563c}
.team-row .hpb{height:5px;border-radius:3px;background:#e3e6d4;overflow:hidden}.team-row .hpb i{display:block;height:100%;background:#6fa36a}
.team-feed{flex:none;width:40px;height:40px;padding:4px;border-radius:50%;background:#fff3dc}.team-feed img{width:100%;height:100%}
.team-scout{display:flex;align-items:center;justify-content:space-between;padding:8px 10px;border-radius:16px;border:1px dashed #c8d2b8}
.team-ttl{margin:10px 0 0;font-size:12px;color:#8b947f}

/* チュートリアルの吹き出し：幅を中身で決め、置き場所で折り返しが変わらないように */
.tut-bubble{width:max-content}
/* ドックの LINE（メッセージ）ボタン */
.dock-line{display:grid;place-items:center;padding:0;background:none;box-shadow:none}
.dock-line img{width:100%;height:100%;border-radius:24%}
#dock:has(.dock-line){gap:12px}
/* 届いたメッセージの通知だけが出ているときは、下のドックや河原を押せるように（通知そのものは押せる） */
#content:has(> .incoming-card:only-child){pointer-events:none}
#content > .incoming-card{pointer-events:auto}

/* 章のタイトルカード */
.chapter-card{position:fixed;inset:0;z-index:230;display:grid;place-items:center;padding:24px;background:#d5ccbded;color:#4a4035;text-align:center;animation:chapter-in .4s ease;transition:opacity .25s}
.chapter-card.out{opacity:0}
.chapter-paper{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;width:min(600px,90vw);min-height:min(620px,85dvh);padding:clamp(38px,5vw,64px);border-radius:3px;background:radial-gradient(ellipse at 45% 35%,#fbf4e4,#efe1c4);box-shadow:0 2px 0 #d8c7a8,0 5px 0 #f4ead5,0 8px 0 #b8a68b,0 20px 50px #55463330;color:#4a4035;cursor:pointer}
.chapter-paper::before{content:'';position:absolute;inset:22px;border:1px solid #96826560;outline:1px solid #96826526;outline-offset:5px;pointer-events:none}
.chapter-brand{display:flex;flex-direction:column;align-items:center;margin-bottom:38px;color:#786650}
.chapter-emblem{position:relative;display:block;width:150px;height:145px;overflow:hidden}
.chapter-emblem>img{position:absolute;width:170px;height:255px;max-width:none;left:-10px;top:-24px}
.chapter-brand-name{display:flex;align-items:baseline;gap:8px;font:600 54px/1 'Iowan Old Style','Palatino Linotype','Book Antiqua',Georgia,serif;letter-spacing:-.025em;margin-top:4px}
.chapter-brand-the{font-size:21px;letter-spacing:0}
.chapter-number{font:400 clamp(18px,2.4vw,23px)/1.6 'Iowan Old Style','Yu Mincho',serif;color:#85725a;margin-bottom:16px}
.chapter-card h2{margin:0;width:100%;padding:20px 0;border-top:1px solid #96826555;border-bottom:1px solid #96826555;font:400 clamp(24px,3.5vw,34px)/1.6 'Iowan Old Style','Yu Mincho','Hiragino Mincho ProN',serif;letter-spacing:.04em}
.chapter-paper:focus-visible{outline:2px solid #85725a;outline-offset:6px}
@keyframes chapter-in{from{opacity:0}}
@keyframes chapter-line{from{transform:scaleX(.6);opacity:0}}

/* ミアの調査中（発掘中の表示の上に重ねる） */
.research-chip.stacked{translate:0 calc(-100% - 10px)}
.research-chip .chip-face{width:24px;height:24px;border-radius:50%;background:#efe6d2}

/* 図鑑：見つけたけれど組み立てる前の生き物はシルエット。新しいものに NEW */
.specimen-card{position:relative}
.specimen-card img.species-silhouette{filter:brightness(0);opacity:.32}
.new-badge{position:absolute;top:8px;right:8px;z-index:1;font-style:normal;font-size:10px;font-weight:800;letter-spacing:.06em;padding:2px 7px;border-radius:999px;background:#d26750;color:#fff}


/* Opening picture book. Only story text and reading controls appear. */
.prologue{position:fixed;inset:0;z-index:200;display:flex;align-items:center;justify-content:center;padding:clamp(14px,4vw,56px);padding-top:max(14px,env(safe-area-inset-top));padding-bottom:max(14px,env(safe-area-inset-bottom));background:#d5ccbd;color:#4a4035;font-family:-apple-system,BlinkMacSystemFont,'Hiragino Kaku Gothic ProN','Yu Gothic',sans-serif;overflow:hidden;transition:opacity .2s;letter-spacing:normal}
.prologue.out{opacity:0;pointer-events:none}
.pl-reader{width:min(1140px,100%);height:auto;max-height:100%;display:grid;grid-template-rows:minmax(0,1fr);min-height:0}


.prologue .icon{width:18px;height:18px;flex:none}
.pl-spread{aspect-ratio:1.58;position:relative;display:grid;grid-template-columns:1fr 1fr;min-height:0;background:#f0e3c9;filter:drop-shadow(0 16px 18px #55463338);border-radius:3% 3% 1% 1% / 2% 2% 1% 1%;box-shadow:0 3px 0 #d8c7a8,0 5px 0 #f4ead5,0 7px 0 #c7b494,0 10px 0 #8d806e;overflow:hidden}
.pl-spread::after{content:'';position:absolute;left:calc(50% - 16px);width:32px;top:0;bottom:0;background:linear-gradient(90deg,transparent,#6b584015 32%,#47351f25 48%,#fff7e67a 54%,#725c3b12 72%,transparent);pointer-events:none}
.pl-art{position:relative;margin:0;min-width:0;min-height:0;display:grid;place-items:center;padding:24px 0 24px 20px;background:radial-gradient(circle at 34% 40%,#f8efd9,#efe1c4 80%,#ddc9a5);clip-path:polygon(0 0,25% 1%,60% 2%,100% 5%,100% 99%,65% 97%,25% 97%,0 100%)}
.pl-art>img{position:absolute;inset:4% 2%;width:96%;height:92%;object-fit:contain;mix-blend-mode:multiply;filter:brightness(1.04) saturate(.9);display:block}
.pl-art-faded>img{position:relative;inset:auto!important;height:auto!important;max-height:92%;mask-image:linear-gradient(to right,transparent,#000 8%,#000 92%,transparent),linear-gradient(to bottom,transparent,#000 10%,#000 90%,transparent);mask-composite:intersect;-webkit-mask-composite:source-in}
.pl-page{display:flex;flex-direction:column;justify-content:center;min-height:0;min-width:0;overflow-y:auto;padding:clamp(34px,5.4vw,76px) clamp(28px,4.6vw,65px);background:radial-gradient(circle at 58% 44%,#f9f0dc,#efe1c4 80%,#dcc8a4);clip-path:polygon(0 5%,40% 2%,75% 1%,100% 0,100% 100%,75% 97%,35% 97%,0 99%);text-align:left}
.pl-story{margin:auto 0;padding:24px 0 32px}
.pl-english{font:400 clamp(27px,3.1vw,39px)/1.55 'Iowan Old Style','Palatino Linotype',Palatino,Georgia,serif;letter-spacing:-.018em;color:#4a4035;text-wrap:pretty;overflow-wrap:break-word}
.pl-japanese{font-size:15px;line-height:2;color:#746656;margin-top:28px;text-wrap:pretty}

.pl-audio{display:inline-flex;gap:9px;align-items:center;margin-top:26px;padding:9px 0;color:#756653;font-size:12px;min-height:40px;background:none}
.pl-audio-note{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}



.prologue button:focus-visible{outline:2px solid #72967b;outline-offset:3px;border-radius:3px}
.pl-spread{perspective:2200px;isolation:isolate}
.pl-turning{overflow:visible;pointer-events:none}
.pl-leaf{position:absolute;top:0;bottom:0;width:50%;z-index:4;transform-style:preserve-3d;pointer-events:none}
.pl-leaf-next{left:50%;transform-origin:left center}
.pl-leaf-prev{left:0;transform-origin:right center}
.pl-leaf-face{position:absolute;inset:0;backface-visibility:hidden;overflow:hidden;background:#efe1c4;box-shadow:0 0 18px #54412b25}
.pl-leaf-back{transform:rotateY(180deg)}
.pl-leaf-face>.pl-art,.pl-leaf-face>.pl-page{width:100%;height:100%;box-sizing:border-box}
.pl-leaf-face::after{content:'';position:absolute;inset:0;pointer-events:none;background:linear-gradient(90deg,#725c3b18,transparent 18%,transparent 75%,#725c3b10)}
@media(max-width:540px){
 .prologue{padding:12px 16px;padding-top:max(12px,env(safe-area-inset-top));padding-bottom:max(12px,env(safe-area-inset-bottom))}.pl-reader{height:100%;grid-template-rows:minmax(0,1fr)}
 .pl-spread{aspect-ratio:auto;height:min(600px,80dvh);display:grid;grid-template-columns:1fr 1fr;border-radius:3px}
 .pl-art{padding:12px 0 12px 8px}.pl-page{padding:18px 14px;overflow-y:auto}.pl-story{padding:12px 0 18px}.pl-english{font-size:20px;line-height:1.5}.pl-japanese{font-size:12px;line-height:1.9;margin-top:18px}.pl-audio{font-size:11px;padding:8px 0;gap:5px}
 .pl-footer{display:flex;justify-content:center;align-items:center;padding-top:5px}
}
@media(max-height:500px) and (min-width:541px){.prologue{padding:8px 22px}.pl-reader{grid-template-rows:minmax(0,1fr)}.pl-page{padding:24px 34px}.pl-story{padding:20px 0}.pl-english{font-size:26px}.pl-japanese{font-size:12px;margin-top:16px}.pl-audio{margin-top:14px}}
@media(prefers-reduced-motion:reduce){.prologue{transition:none}}

@media(min-width:541px) and (max-width:850px){.pl-page{padding:24px 26px}.pl-english{font-size:24px}.pl-japanese{font-size:13px;margin-top:20px;line-height:1.8}.pl-story{padding:12px 0 22px}.pl-listen{margin-top:12px}.pl-art>img{inset:2%;width:96%;height:96%}}

.prologue .pl-art[aria-disabled="false"],.prologue .pl-page{cursor:pointer}.prologue .pl-art[aria-disabled="true"]{cursor:default}.prologue [role="button"]:focus-visible{outline:2px solid #72967b;outline-offset:-8px}.pl-audio{padding:10px 16px;min-height:44px}

/* 登録画面のお母さんのひとこと */
.profile-guide{display:flex;align-items:center;gap:12px;margin:0 auto 8px;max-width:420px;padding:10px 14px;border-radius:18px;background:#fffaf0;box-shadow:0 4px 0 #e5d9b8}
.profile-guide img{width:48px;height:48px;border-radius:50%;background:#EBB07A;flex:none}
.profile-guide p{margin:0;font-weight:700;color:#2d4a3c}

/* 案内の前の短い会話（タップで次へ） */
.tut-scrim{position:fixed;inset:0;z-index:61;display:flex;align-items:center;justify-content:center;padding:16px;background:#1d2b2433;cursor:pointer}
.tut-scrim .tut-story{position:relative;left:auto;top:auto;transform:none;pointer-events:auto;max-width:min(380px,calc(100vw - 32px));padding-right:30px}
.tut-story .tut-next{position:absolute;right:12px;bottom:8px;font-size:11px;color:#8aa596;animation:tut-blink 1s steps(2) infinite}
@keyframes tut-blink{50%{opacity:0}}

/* 〜・… は言わなくていい印：薄い色で固定 */
.tk-en span.ph,.tk-en.masked span.ph{-webkit-text-fill-color:#b9b2a2;font-weight:400}

/* 連打：パンチと回数 */
.tk-mark.impact{width:220px;height:220px;margin:-110px 0 0 -110px}
.tk-flash{position:absolute;inset:-40px;background:#fff;opacity:.75;animation:tk-flash .26s ease-out forwards;pointer-events:none}
@keyframes tk-flash{to{opacity:0}}
.tk-hits{position:absolute;left:14px;top:6px;z-index:5;display:flex;align-items:baseline;gap:6px;color:#fff;text-shadow:0 3px 0 #b5462a,0 0 14px #ffb04a;font-weight:900;pointer-events:none}
.tk-hits b{display:inline-block;font-size:64px;line-height:1;color:#ffe27a}
.tk-hits span{font-size:18px}
.tk-hits.done{animation:tk-hits-done 1s ease-out forwards}
@keyframes tk-hits-done{0%{scale:1}20%{scale:1.3}100%{scale:1.3;opacity:0}}

/* 図鑑：骨は見つかったが姿はまだ分からない種。シルエットは出さず、もやの中に「調査中」 */
.specimen-haze{position:relative;display:flex;align-items:center;justify-content:center;width:100%;height:84px;overflow:hidden;border-radius:16px}
.specimen-haze::before{content:"";position:absolute;inset:-30%;background:radial-gradient(circle at 30% 40%,#c9cfbf 0 18%,transparent 42%),radial-gradient(circle at 70% 55%,#d8d2c0 0 20%,transparent 46%),radial-gradient(circle at 50% 70%,#cfd6c6 0 16%,transparent 40%);filter:blur(10px);opacity:.9;animation:haze-drift 6s ease-in-out infinite alternate}
.specimen-haze i{position:relative;font-style:normal;font-size:12px;font-weight:700;letter-spacing:.2em;color:#7d8a77;background:#f7f4ea;border-radius:999px;padding:2px 10px;box-shadow:0 1px 0 #0001}
.specimen-haze.big{height:240px}
.specimen-haze.big i{font-size:16px;padding:5px 16px}
@keyframes haze-drift{from{transform:translate(-4%,-2%) scale(1)}to{transform:translate(4%,3%) scale(1.08)}}

/* クエストコンプリート */
.quest-complete{position:fixed;inset:0;z-index:70;display:flex;align-items:center;justify-content:center;background:#1d2b2440;animation:qc-dim 1.9s ease-out forwards}
@keyframes qc-dim{0%,80%{opacity:1}100%{opacity:0}}
.quest-complete b{white-space:nowrap;font-size:clamp(20px,6vw,40px);font-weight:900;color:#fff;letter-spacing:.06em;padding:.35em 1.1em;border-radius:999px;background:linear-gradient(#f0b54a,#cf7a2a);box-shadow:0 6px 0 #9a5418,0 14px 30px #0005;text-shadow:0 2px 0 #9a5418;animation:qc-pop 1.9s ease-out forwards}
@keyframes qc-pop{0%{opacity:0;scale:.4}14%{opacity:1;scale:1.12}24%{scale:1}82%{opacity:1}100%{opacity:0;scale:1.05}}
.quest-sheet{position:relative}
.quest-sheet.complete .quest-stamp{position:absolute;right:6px;top:4px;rotate:12deg;font-style:normal;font-weight:900;font-size:15px;letter-spacing:.12em;color:#c0563a;border:3px solid #c0563a;border-radius:8px;padding:2px 8px;opacity:.85}
.quest-reward{margin-top:18px;padding:14px;border-radius:18px;background:#fff6dd;box-shadow:0 3px 0 #ead8a6;display:flex;flex-direction:column;align-items:center;gap:6px}
.quest-reward span{font-size:12px;font-weight:700;color:#a07a35;letter-spacing:.1em}
.quest-reward b{font-size:20px;color:#2d4a3c}
/* ミアとの出会い（絵のポップアップ） */
.meet-pop{position:fixed;inset:0;z-index:72;display:flex;align-items:center;justify-content:center;padding:16px;background:#1d2b2466;animation:tut-in .25s ease-out both}
.meet-pop-card{width:min(420px,100%);max-height:calc(100dvh - 32px);overflow-y:auto;background:#fbf5e6;border-radius:24px;box-shadow:0 8px 0 #c9bf9f,0 18px 40px #0005;display:flex;flex-direction:column;gap:10px;padding-bottom:16px}
/* 絵は正方形。3:2に切り抜くと顔が切れるので、絵の比率のまま入れる */
.meet-pop-card>img{width:100%;height:auto;aspect-ratio:auto;object-fit:contain;max-height:min(52dvh,430px);background:#e8e2cf;border-radius:24px 24px 0 0;flex:none}
.meet-pop-lines{display:flex;flex-direction:column;gap:8px;padding:0 16px}
.meet-pop-lines p{display:flex;align-items:center;gap:8px;margin:0}
.meet-pop-lines p img{width:34px;height:34px;border-radius:50%;object-fit:cover;background:#fff}
.meet-pop-lines p span{background:#fff;border-radius:14px;padding:6px 12px;font-size:15px;color:#2d4a3c}
.meet-pop-card>button{margin:4px 16px 0}

/* 組み立て：骨格の影の上に骨を置く */
.assembly-count{margin:0 0 8px;text-align:center;font-weight:700;color:#5d6f58;letter-spacing:.08em}
.assembly-stage{height:auto!important;aspect-ratio:7/5;max-height:420px;margin:0 auto 10px;background:radial-gradient(ellipse at 50% 60%,#f3f0e2,#e2e6d2);border-radius:20px;overflow:hidden;cursor:pointer;transition:box-shadow .2s}
.assembly-stage.near{box-shadow:inset 0 0 0 4px #deba62}
.assembly-stage>.skeleton-image{position:absolute;inset:6%;width:88%;height:88%;object-fit:contain;opacity:.16;filter:grayscale(1) brightness(.6);transition:opacity .6s,filter .6s}
.assembly-stage.complete>.skeleton-image{opacity:1;filter:none}
.assembly-stage.complete .assembly-bone{opacity:0;transition:opacity .6s .2s}
.assembly-spot{position:absolute;width:26px;height:26px;margin:-13px 0 0 -13px;border-radius:50%;border:2px dashed #a8b49866;background:#fff6}
.assembly-spot.hint{border-color:#deba62;background:#fff3c8;animation:tk-glow .5s ease-in-out infinite alternate}
.assembly-bone{position:absolute;transform:translate(-50%,-50%);pointer-events:none}
.assembly-bone img{width:100%;height:auto;display:block;filter:drop-shadow(0 3px 2px #0003)}
.assembly-bone.snap{animation:bone-snap .35s ease-out}
@keyframes bone-snap{0%{scale:1.4;opacity:.3}70%{scale:.95;opacity:1}100%{scale:1}}
.assembly-say{display:flex;align-items:center;gap:8px;margin:0 0 10px}
.assembly-say img{width:36px;height:36px;border-radius:50%;object-fit:cover;background:#fff}
.assembly-say span{background:#fff;border-radius:14px;padding:6px 12px;color:#2d4a3c;font-size:14px}
.assembly-piece{position:relative;height:84px!important;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:4px}
.assembly-piece img{height:60px!important;max-width:100%;object-fit:contain}
.assembly-piece b{font-size:11px;color:#6d6a58;font-weight:700}
.assembly-ghost{position:fixed;z-index:80;width:90px;transform:translate(-50%,-50%);pointer-events:none;opacity:.9}
.assembly-ghost img{width:100%}

/* ===== 展示コーナー：段階ごとに部屋の作りを変える ===== */
.museum-room .room-sign{grid-column:1/-1;display:flex;justify-content:center;margin-bottom:4px}
.museum-room .room-sign span{font-size:13px;font-weight:700;letter-spacing:.14em;padding:4px 16px;border-radius:4px}
.museum-room.stage-0 .room-sign span{background:#fff7e2;color:#7a5a3a;box-shadow:0 2px #aa9271;rotate:-1.5deg}
.museum-room .display-case.empty>span:first-child{opacity:.7}

/* 1：ラボの展示（研究室の標本棚：白い壁・金属の棚・ガラスケース・標本ラベル） */
.museum-room.stage-1{position:relative;isolation:isolate;gap:10px 8px;padding:16px 12px 18px;border-radius:16px;background:
 linear-gradient(180deg,#eef2f1,#dfe7e6);box-shadow:inset 0 0 0 2px #cfd9d8,inset 0 10px 24px #ffffffaa}
.museum-room.stage-1::before{content:"";position:absolute;inset:0 0 auto;height:6px;border-radius:16px 16px 0 0;background:linear-gradient(90deg,#b8c4c8,#e9eeee,#b8c4c8);z-index:-1}
.museum-room.stage-1 .room-sign span{background:#2f4a52;color:#e6f1ef;font-family:ui-monospace,monospace;font-size:12px}
.museum-room.stage-1 .display-case{height:auto!important;min-height:146px!important;border:0;border-radius:6px;padding:8px 4px 6px;gap:3px;
 background:linear-gradient(115deg,#ffffffcc 0 18%,#ffffff33 19% 40%,#ffffff66 41% 46%,#ffffff22 47%),linear-gradient(#e9f3f4aa,#d6e5e7aa);box-shadow:inset 0 0 0 2px #fff,inset 0 0 0 3px #b7c9cc,0 4px 0 #8d9ea3}
.museum-room.stage-1 .display-case img{height:66px;filter:drop-shadow(0 4px 3px #2c3e4444)}
.museum-room.stage-1 .display-case .plinth{display:none}
.museum-room.stage-1 .display-case>b{background:#fffdf4;color:#24343a;font-size:10px;line-height:1.3;padding:3px 5px;border-radius:2px;border-left:3px solid #c0563a;box-shadow:0 1px 2px #0002;text-align:left;width:92%}
.museum-room.stage-1 .display-case>span:last-child{font-size:10px;color:#4f6b72;font-family:ui-monospace,monospace}
.museum-room.stage-1 .display-case.empty{background:repeating-linear-gradient(135deg,#ffffff55 0 8px,#e3ecec55 8px 16px);box-shadow:inset 0 0 0 2px #c3d2d4}

/* 2：大学の常設コーナー（深緑の壁・木の床・台座の上のガラスケース・スポットライト・真鍮の銘板） */
.museum-room.stage-2{position:relative;isolation:isolate;gap:14px 10px;padding:18px 12px 26px;border-radius:16px;overflow:hidden;background:
 radial-gradient(ellipse 30% 40% at 18% 0,#fff3c840,transparent 70%),radial-gradient(ellipse 30% 40% at 50% 0,#fff3c840,transparent 70%),radial-gradient(ellipse 30% 40% at 82% 0,#fff3c840,transparent 70%),
 linear-gradient(180deg,#2f4d40 0 78%,#7b5636 78% 79%,#a7784c 79%,#8d6440 100%)}
.museum-room.stage-2 .room-sign span{background:linear-gradient(#e2c27a,#b88f45);color:#3a2a12;box-shadow:0 2px 0 #6b5126,0 6px 12px #0005;font-family:Georgia,serif}
.museum-room.stage-2 .display-case{height:auto!important;min-height:168px!important;border:0;border-radius:4px 4px 2px 2px;padding:10px 4px 0;gap:4px;
 background:linear-gradient(115deg,#ffffff30 0 14%,#ffffff08 15% 44%,#ffffff20 45% 49%,#ffffff05 50%);box-shadow:inset 0 0 0 1.5px #ffffff55,0 0 24px #fff1c022}
.museum-room.stage-2 .display-case img{height:70px;filter:drop-shadow(0 0 10px #fff3c880) drop-shadow(0 5px 3px #0006)}
.museum-room.stage-2 .display-case .plinth{display:block;height:26px;width:108%;margin:2px -4% 0;background:linear-gradient(#f1ece0,#cfc6b1);border-radius:2px;box-shadow:0 4px 0 #6d6553}
.museum-room.stage-2 .display-case>b{order:9;margin-top:-22px;z-index:1;background:linear-gradient(#e8cf8d,#c19a52);color:#3a2a12;font-size:9.5px;line-height:1.25;padding:2px 6px;border-radius:2px;box-shadow:0 1px 0 #6b5126}
.museum-room.stage-2 .display-case>span:last-child{order:10;font-size:10px;color:#f4e3b2;padding:6px 0 4px}
.museum-room.stage-2 .display-case.kind-species{grid-column:span 2}
.museum-room.stage-2 .display-case.kind-species img{height:96px}
.museum-room.stage-2 .display-case.empty>span:first-child{color:#ffffff55}

/* 3：自分の博物館（大広間：濃紺の壁・大理石の床・中央の大きな台座・金のロープ・光の筋） */
.museum-room.stage-3{position:relative;isolation:isolate;gap:16px 10px;padding:22px 12px 30px;border-radius:18px;overflow:hidden;background:
 linear-gradient(100deg,transparent 0 30%,#fff6d018 34% 40%,transparent 44%),linear-gradient(80deg,transparent 0 56%,#fff6d018 60% 66%,transparent 70%),
 linear-gradient(180deg,#1f2c4a 0 14%,#283a5e 14% 72%,#c9c2b4 72% 73%,#ebe6dc 73%,#d6cfc1 100%)}
.museum-room.stage-3::after{content:"";position:absolute;left:0;right:0;top:72%;height:28%;z-index:-1;background:repeating-linear-gradient(90deg,#ffffff22 0 1px,transparent 1px 60px),repeating-linear-gradient(0deg,#ffffff22 0 1px,transparent 1px 30px)}
.museum-room.stage-3 .room-sign span{background:linear-gradient(#f3dc98,#c9a048);color:#2a1d08;font-family:Georgia,serif;font-size:15px;letter-spacing:.2em;padding:6px 22px;box-shadow:0 3px 0 #7a5c22,0 0 20px #f3dc9866}
.museum-room.stage-3 .display-case{height:auto!important;min-height:170px!important;border:0;border-radius:4px;padding:10px 4px 0;gap:4px;
 background:radial-gradient(ellipse 60% 50% at 50% 30%,#fff6d033,transparent 70%);box-shadow:none}
.museum-room.stage-3 .display-case img{height:72px;filter:drop-shadow(0 0 14px #fff1c099) drop-shadow(0 6px 4px #0007)}
.museum-room.stage-3 .display-case .plinth{display:block;height:30px;width:100%;margin:2px 0 0;background:linear-gradient(90deg,#d9d4c9,#fbf8f2 40%,#d0cabd);border-radius:3px 3px 0 0;box-shadow:0 5px 0 #8f887b,0 12px 14px #0004}
.museum-room.stage-3 .display-case>b{order:9;margin-top:-25px;z-index:1;background:#1f2c4a;color:#f3dc98;font-size:9.5px;line-height:1.25;padding:2px 6px;border-radius:2px;border:1px solid #c9a048}
.museum-room.stage-3 .display-case>span:last-child{order:10;font-size:10px;color:#3a3a4a;padding:7px 0 4px}
.museum-room.stage-3 .display-case.kind-species{grid-column:1/-1;min-height:230px!important}
.museum-room.stage-3 .display-case.kind-species img{height:150px}
.museum-room.stage-3 .display-case.empty>span:first-child{color:#ffffff44}
.museum-room.stage-1 .display-case{overflow:visible}
.museum-room.stage-1 .display-case::after{content:"";position:absolute;left:-7px;right:-7px;bottom:-9px;height:6px;border-radius:1px;background:linear-gradient(#c3ced1,#7f8f95);box-shadow:0 2px 3px #0002}
.museum-room.stage-2 .display-case .plinth{width:100%;margin:2px 0 0}

/* ===== 採掘結果：発掘現場の上に、掘りたての石が置かれる（紙吹雪・斜めの縞はやめる） ===== */
#game[data-screen=discovery] .discovery-card{height:430px;padding:0;border:0;border-radius:22px;justify-content:flex-end;
 background:var(--reveal-bg),radial-gradient(ellipse 70% 40% at 50% 72%,#8a7558,transparent 70%),linear-gradient(180deg,#b9a98a 0 38%,#a08c6c 38% 40%,#c2ae8b 40% 58%,#8f7a5c 58% 60%,#a58f6d 60%);
 background-size:cover;background-position:center;box-shadow:0 10px 24px #2b221844,inset 0 0 80px #1d150c88;transition:none}
#game[data-screen=discovery] .discovery-card.face{background:var(--reveal-bg),radial-gradient(ellipse 70% 40% at 50% 72%,#8a7558,transparent 70%),linear-gradient(180deg,#b9a98a 0 38%,#a08c6c 38% 40%,#c2ae8b 40% 58%,#8f7a5c 58% 60%,#a58f6d 60%);background-size:cover;background-position:center;animation:reveal-thud .32s ease-out}
.discovery-card .reveal-ground{position:absolute;left:0;right:0;top:12%;height:58%;display:grid;place-items:center}
.discovery-card .reveal-ground .stone-art{width:210px;height:210px}
.discovery-card .reveal-ground .stone-art::after{content:"";position:absolute;left:18%;right:18%;bottom:10%;height:16%;border-radius:50%;background:radial-gradient(#0008,transparent 70%);z-index:-1;opacity:0}
.discovery-card.face .reveal-ground .stone-art::after{animation:reveal-shadow .45s ease-out .18s both}
@keyframes reveal-shadow{0%{opacity:0;transform:scale(.4)}100%{opacity:1;transform:none}}
.discovery-card .reveal-ground .stone-art img{filter:drop-shadow(0 10px 6px #0006) contrast(1.05)}
.discovery-card .reveal-ground .stone-art.coming{opacity:0}
.discovery-card.face .reveal-ground .stone-art{animation:reveal-drop .45s cubic-bezier(.3,1.4,.5,1) both}
.discovery-card .reveal-dust{position:absolute;left:50%;bottom:16%;width:300px;height:90px;margin-left:-150px;pointer-events:none;border-radius:50%;
 background:radial-gradient(ellipse at 30% 60%,#e9dcc2cc,transparent 55%),radial-gradient(ellipse at 70% 55%,#e2d3b6bb,transparent 55%),radial-gradient(ellipse at 50% 70%,#d8c8a8aa,transparent 60%);filter:blur(4px);animation:reveal-dust 1s ease-out .2s both}
.discovery-card .reveal-label{position:relative;z-index:1;display:block;width:calc(100% - 28px);margin:0 14px 14px;padding:10px 14px;border-radius:12px;background:#f7efd9ee;box-shadow:0 4px 10px #0003;text-align:center}
.discovery-card .reveal-label h2{margin:0 0 4px;font-size:22px;color:#3d4a36}
.discovery-card .reveal-label p{margin:0;font-size:14px;line-height:1.6;color:#5b5a45}
.discovery-card.hint-4.face .reveal-ground .stone-art img{filter:drop-shadow(0 10px 6px #0006) drop-shadow(0 0 16px #f2d36e)}
.discovery-card.hint-3.face .reveal-ground .stone-art img{filter:drop-shadow(0 10px 6px #0006) drop-shadow(0 0 8px #d4a75188)}
@keyframes reveal-drop{0%{transform:translateY(70px) scale(.8) rotate(5deg);opacity:0}45%{opacity:1}75%{transform:translateY(-5px) scale(1.03) rotate(-1deg)}100%{transform:none}}
@keyframes reveal-dust{0%{opacity:0;transform:scale(.5)}35%{opacity:1}100%{opacity:0;transform:scale(1.35) translateY(-14px)}}
@keyframes reveal-thud{0%{transform:none}40%{transform:translateY(3px)}100%{transform:none}}

/* 組み立て：iPad など横長・低い画面でも、骨のトレイまで見えるように舞台の大きさを画面の高さに合わせる */
.assembly-stage{width:min(100%,calc((100dvh - 430px) * 1.4));min-width:240px}
.assembly-tray{grid-template-columns:repeat(auto-fill,minmax(84px,1fr))!important}
@media (min-width:700px){.assembly-piece{height:76px!important}.assembly-piece img{height:52px!important}}

/* パンチは拳の絵文字（👊）に戻す。後ろの星（.pow）と画像は使わない */
.tk-mark.slash,.tk-mark.thrust{margin:-4px 0 0 -75px}
.tk-mark.thrust{width:120px;height:12px;margin:-6px 0 0 -60px;background:linear-gradient(90deg,transparent,#fff 60%,#fff6d0)}

/* 過去問BOSS：どの回・大問かを下に小さく */
.cm-node.boss.exam{position:relative}
.cm-node.boss.exam .cm-exam{position:absolute;top:100%;left:50%;transform:translateX(-50%);margin-top:4px;white-space:nowrap;font-size:11px;font-weight:700;color:#5d4a2a;background:#fff7e0;border-radius:999px;padding:2px 8px;box-shadow:0 1px 0 #0002}
.exam-boss-result{display:flex;flex-direction:column;align-items:center;gap:4px;margin:6px 0 10px;padding:12px;border-radius:16px;text-align:center}
.exam-boss-result b{font-size:20px}
.exam-boss-result span{font-size:13px}
.exam-boss-result.pass{background:#fff3cf;color:#7a4b12;box-shadow:0 3px 0 #e6c879}
.exam-boss-result.fail{background:#eef1ea;color:#4d5f4a}

/* 組み立て（骨格の絵を部位の形に切ったピース） */
.assembly-stage{width:min(100%,calc((100dvh - 400px) * 1.6))}
.assembly-stage .asm-frame,.asm-tile .asm-frame{position:absolute;display:block}
.assembly-stage .asm-frame>img,.assembly-stage .asm-frame>svg,.asm-tile .asm-frame>img{position:absolute;inset:0;width:100%;height:100%;object-fit:fill}
.assembly-stage>.asm-frame>.skeleton-image{inset:0!important;width:100%!important;height:100%!important;opacity:.13;filter:grayscale(1) brightness(.5)}
.assembly-stage.complete>.asm-frame>.skeleton-image{opacity:1;filter:none;transition:opacity .6s,filter .6s}
.assembly-stage.complete .asm-piece{opacity:0;transition:opacity .6s .3s}
.asm-piece{filter:drop-shadow(0 2px 2px #0003)}
.asm-piece.snap{animation:bone-snap .35s ease-out}
.asm-outline{pointer-events:none}
.asm-outline polygon{fill:#fff3;stroke:#8f9a84;stroke-width:.35;stroke-dasharray:1.2 1;vector-effect:non-scaling-stroke}
.asm-outline polygon{stroke-width:1.5}
.asm-outline polygon.hint{fill:#fff3c899;stroke:#d39a2a;stroke-width:2.5;animation:tk-glow .5s ease-in-out infinite alternate}
.assembly-stage.complete .asm-outline{display:none}
.asm-tile{position:relative;display:block;width:64px;height:56px;overflow:hidden}
.asm-tile .asm-frame>img{filter:drop-shadow(0 2px 1px #0003)}
.assembly-ghost .asm-tile{width:96px;height:84px}
.asm-outline polygon{fill:transparent;stroke:#9aa58f88;stroke-dasharray:4 4}
.asm-outline polygon.hint{fill:#fff3c855}
.assembly-piece{height:70px!important;justify-content:center}
.assembly-ghost{width:auto}
.assembly-ghost .asm-tile{transform:scale(1.6);transform-origin:center}
.assembly-piece .asm-tile img{height:100%!important;width:100%!important;max-width:none!important;object-fit:fill!important}
.asm-tile{width:84px!important;height:66px!important}
.assembly-piece{height:78px!important}

/* 河原に置く物（章や採掘の回数で増える） */
.camp-props{position:absolute;inset:0;pointer-events:none;z-index:1}
.camp-prop{position:absolute;transform:translate(-50%,-50%);height:auto;filter:drop-shadow(0 4px 3px #0003);animation:prop-in .5s ease-out both}
@keyframes prop-in{from{opacity:0;transform:translate(-50%,-40%) scale(.9)}to{opacity:1}}
/* 採掘中：発掘マーカーに残り時間の輪。掘り終わったら「！」 */
.dig-marker .marker-status{position:absolute;left:50%;top:-14px;transform:translateX(-50%);display:none;align-items:center;gap:4px;padding:3px 9px 3px 4px;border-radius:999px;background:#fffaf0;box-shadow:0 2px 0 #0002,0 4px 10px #0002;z-index:3;white-space:nowrap}
.dig-marker.digging .marker-status,.dig-marker.ready .marker-status{display:flex}
.dig-marker .marker-status i{width:18px;height:18px;border-radius:50%;background:conic-gradient(#d39a2a var(--p,0%),#e8e0c8 0);box-shadow:inset 0 0 0 4px #fffaf0}
.dig-marker .marker-status b{font-size:12px;font-weight:800;color:#5d4a2a;font-variant-numeric:tabular-nums}
.dig-marker.ready .marker-status{background:#d9542f;padding:4px 10px;animation:ready-bounce 1s ease-in-out infinite}
.dig-marker.ready .marker-status i{display:none}
.dig-marker.ready .marker-status b{color:#fff;font-size:16px}
@keyframes ready-bounce{0%,100%{transform:translateX(-50%) translateY(0)}50%{transform:translateX(-50%) translateY(-5px)}}
/* 採掘結果：石は背景の「掘った穴」の真ん中に、道具と同じくらいの大きさで置く */
#game[data-screen=discovery] .discovery-card .reveal-ground{left:50%;top:61%;right:auto;width:38%;height:auto;aspect-ratio:1;transform:translate(-50%,-50%);display:block}
#game[data-screen=discovery] .discovery-card .reveal-ground .stone-art{width:100%;height:100%;max-width:none}
#game[data-screen=discovery] .discovery-card .reveal-ground .stone-art img{width:100%;height:100%;object-fit:contain}
#game[data-screen=discovery] .discovery-card .reveal-ground .stone-art::after{left:12%;right:12%;bottom:4%;height:14%;background:radial-gradient(#2a1d10aa,transparent 70%)}
#game[data-screen=discovery] .discovery-card .reveal-ground .stone-art.coming{opacity:0}
#game[data-screen=discovery] .discovery-card .reveal-dust{left:50%;top:auto;bottom:-6%;width:170%;height:40%;margin-left:-85%}
#game[data-screen=discovery] .discovery-card .reveal-label{margin:0 10px 10px;padding:6px 12px;width:calc(100% - 20px)}
#game[data-screen=discovery] .discovery-card .reveal-label h2{font-size:18px;margin:0}
#game[data-screen=discovery] .discovery-card .reveal-label p{font-size:12px}
@keyframes reveal-drop{0%{transform:translateY(55%) scale(.82) rotate(5deg);opacity:0}45%{opacity:1}75%{transform:translateY(-4%) scale(1.03) rotate(-1deg)}100%{transform:none}}
/* 採掘結果：上にアニメ（カード）、下に石ぶくろ・何こ目・出てきた石。iPad でも1画面に収まる高さ */
#game[data-screen=discovery] .discovery-card{height:auto!important;aspect-ratio:4/5;max-height:calc(100dvh - 300px);width:auto;max-width:100%;margin:0 auto}
.discovery-under{display:flex;align-items:center;justify-content:center;gap:14px;flex-wrap:wrap;margin-top:12px}
.discovery-under .discovery-source{margin:0}
.discovery-under .discovery-count{margin:0 0 0 4px;font-size:15px;color:#4d5f4a}
.discovery-under .discovery-history{min-height:0}
/* ゆっくり：落ちる・ぼこりが立つ・ラベルが出る */
.discovery-card.face .reveal-ground .stone-art{animation-duration:.85s!important}
.discovery-card .reveal-dust{animation-duration:1.6s!important;animation-delay:.45s!important}
.discovery-card.face .reveal-label{animation:label-in .5s ease-out .7s both}
@keyframes label-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
#game[data-screen=discovery] .discovery-card{width:min(100%,calc((100dvh - 290px) * .8))!important;max-height:none;display:flex}

.discovery-card .discovery-tap{position:absolute;top:14px;right:14px;z-index:2;padding:4px 10px;border-radius:999px;background:#1d2b24aa;color:#fff;font-size:12px;font-weight:700;animation:tap-blink 1.4s ease-in-out infinite}
@keyframes tap-blink{50%{opacity:.45}}

/* 初めて見つけたもの：NEW の札と、ひとこと */
.find-reveal .detail-hero{position:relative}
.find-new{position:absolute;top:8px;left:50%;transform:translateX(-50%) rotate(-6deg);z-index:2;padding:4px 14px;border-radius:999px;background:linear-gradient(#f0b54a,#d9542f);color:#fff;font-style:normal;font-weight:900;font-size:18px;letter-spacing:.12em;box-shadow:0 3px 0 #9a3e1e,0 8px 16px #0003;animation:new-pop .6s cubic-bezier(.3,1.6,.5,1) both}
@keyframes new-pop{from{transform:translateX(-50%) rotate(-6deg) scale(.2);opacity:0}to{transform:translateX(-50%) rotate(-6deg) scale(1);opacity:1}}
.find-new-line{margin:2px 0 12px;text-align:center;font-weight:700;color:#c0563a;font-size:14px}
.find-reveal.is-new .detail-hero img{filter:drop-shadow(0 0 18px #ffd36e99)}

/* LINE：スタンプを選ぶところを低く（会話のスタンプはそのままの大きさ） */
.chat-compose{padding:2px 12px!important}
.chat-compose .icon-button{width:38px;height:38px;min-height:0}
.chat-sheet .sheet-foot>.sticker-drawer{flex:0 0 178px!important;height:178px!important;max-height:178px!important}
.chat-sheet .sticker-pack-tabs{height:40px;padding:2px 8px}
.chat-sheet .sticker-pack-tabs button{width:38px}
.chat-sheet .sticker-pack-tabs img{height:34px;width:34px}
.chat-sheet .sticker-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(58px,1fr))!important;gap:4px!important;padding:4px 8px 8px!important}
.chat-sheet .sticker-grid button{min-height:0;height:58px;aspect-ratio:auto}
.chat-sheet .sticker-grid img{object-fit:contain}
.chat-sheet .sheet-foot>.chat-compose{flex:0 0 42px!important;height:42px!important;align-items:center}
.chat-sheet .sheet-foot{padding-top:0!important;padding-bottom:0!important;gap:0!important}

/* 組み立て（中高生向け）：上にピース数・タイム・ミス。ヒントの光や点線は出さない */
.assembly-head{display:flex;justify-content:center;gap:18px;margin:0 0 8px;font-weight:800;color:#4d5f4a;font-variant-numeric:tabular-nums}
.assembly-head .asm-clock{min-width:3.2em;text-align:center;color:#2d4a3c}
.assembly-stage .asm-outline{display:none}
.assembly-stage.near{box-shadow:none}
.assembly-stage>.asm-frame>.skeleton-image{opacity:.1!important}
.assembly-stage.complete>.asm-frame>.skeleton-image{opacity:1!important}

/* 組み立て完成の調査書 */
.report-pop{position:fixed;inset:0;z-index:74;display:flex;align-items:center;justify-content:center;padding:16px;background:#1d2b2466;animation:tut-in .25s ease-out both}
.report-card{position:relative;width:min(440px,100%);max-height:calc(100dvh - 32px);overflow:auto;background:#fbf6e6;border-radius:18px;padding:18px 18px 16px;box-shadow:0 8px 0 #cfc3a0,0 18px 40px #0005;border:1px solid #e3d6b2}
.report-tag{position:absolute;top:12px;left:12px;font-size:12px;font-weight:800;letter-spacing:.2em;color:#9a5b2a;border:2px solid #9a5b2a;border-radius:6px;padding:1px 8px;rotate:-4deg}
.report-art{position:relative;height:170px;margin:14px 0 6px;display:grid;place-items:center}
.report-art img{grid-area:1/1;max-height:170px;max-width:100%;object-fit:contain}
.report-art img.bone{opacity:0;animation:report-bone 3s ease-in-out .6s infinite alternate}
@keyframes report-bone{0%,40%{opacity:0}60%,100%{opacity:1}}
.report-card h2{margin:4px 0 0;text-align:center;font-size:24px;color:#2d4a3c}
.report-en{margin:0 0 10px;text-align:center;font:italic 14px Georgia,serif;color:#7a7a62}
.report-card dl{display:grid;grid-template-columns:auto 1fr;gap:4px 12px;margin:0 0 10px;font-size:14px}
.report-card dt{color:#8a7f62;font-weight:700}
.report-card dd{margin:0;color:#2d4a3c}
.report-note{margin:0 0 8px;padding:8px 10px;border-radius:10px;background:#f1ead3;font-size:14px;line-height:1.6;color:#3d4a36}
.report-note b{display:block;font-size:11px;color:#9a5b2a;letter-spacing:.1em}
.report-card>button{width:100%;margin-top:6px}

/* 組み立て：シートの高さは最大780px。下のピースが footer に隠れないよう、骨格の台はその残りに収める（絵は縦横比のまま） */
.assembly-stage{--asm-h:calc(min(780px,100dvh - 48px) - 468px);min-width:200px;margin:0 auto 8px}
.assembly-tray{grid-template-columns:repeat(auto-fit,minmax(84px,96px))!important;justify-content:center}
@media (max-width:700px){.assembly-stage{--asm-h:calc(min(780px,100dvh - 20px) - 408px)}
 .assembly-tray{grid-template-columns:repeat(auto-fit,minmax(70px,84px))!important;gap:7px}
 .asm-tile{width:70px!important;height:56px!important}.assembly-piece{height:66px!important}}

/* パンチの跡：芯の閃光＋薄い衝撃波＋細い放射。調整台で決めた数値（36本・3px・29〜86px・衝撃波4.5px・芯62px・0.20s・75%）
   濃さは --tk-punch-a の1か所。合成は「ふつう」。足し込む合成（plus-lighter）だと、砂や雪の明るい地形では
   ほとんど見えなくなるため使わない（暗い地形での見え方はほぼ変わらない） */
.tk-mark.punch{--tk-punch-a:.75;width:0;height:0;margin:0;padding:0;background:none;font-size:0;
  transform:none;animation:none;filter:none;scale:.75;opacity:var(--tk-punch-a)}
.tk-mark.punch .tk-core{position:absolute;left:0;top:0;width:62px;height:62px;margin:-31px 0 0 -31px;border-radius:50%;
  background:radial-gradient(#fffdf4 0 34%,#fffdf4aa 58%,transparent 74%);filter:blur(2px);
  animation:tk-pcore .1s ease-out forwards}
@keyframes tk-pcore{0%{transform:scale(.35);opacity:1}100%{transform:scale(1.7);opacity:0}}
.tk-mark.punch .tk-wave{position:absolute;left:0;top:0;width:150px;height:150px;margin:-75px 0 0 -75px;
  border:4.5px solid #fffdf4;border-radius:50%;filter:blur(.6px);
  animation:tk-pwave .2s cubic-bezier(.05,.9,.15,1) forwards}
@keyframes tk-pwave{0%{transform:scale(.1);opacity:.9}100%{transform:scale(1.5);opacity:0;border-width:1px}}
.tk-mark.punch s{position:absolute;left:0;top:0;width:0;height:0;display:block}
.tk-mark.punch s b{position:absolute;top:0;left:-1.5px;width:3px;display:block;border-radius:999px;
  background:linear-gradient(#fffdf4 0 35%,#fffdf400);transform-origin:50% 0;
  animation:tk-pspoke .164s cubic-bezier(.08,.85,.2,1) forwards}
@keyframes tk-pspoke{0%{transform:translateY(4px) scaleY(.25);opacity:1}70%{opacity:.95}100%{transform:translateY(26px) scaleY(1);opacity:0}}
/* 当たった瞬間だけ敵が光る。影は消さずに明るさだけ足す */
.opponent.tk-lit{filter:drop-shadow(0 16px 7px #17462450) brightness(2.3) saturate(.3)!important}

/* マップの目印：白い丸をやめて、絵そのものを押せるようにする。
   押せることは、足元のうっすらした光と、小さな名前札で示す */
.landmark{background:none;border:0;box-shadow:none;border-radius:0;width:102px;height:102px;overflow:visible}
.landmark>img{width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 7px 6px #3a523a55)}
.landmark:hover{scale:1.06}
.camp-marker{width:104px;height:104px}
.landmark .ground-ring{inset:auto auto -5px 50%;width:70%;height:21px;border:2px solid #fffdf2;border-radius:50%;
  transform:translateX(-50%);background:radial-gradient(ellipse,#6f5c3c55,transparent 72%);
  box-shadow:0 0 13px 5px #fff3c899,inset 0 0 6px #fff;
  animation:marker-glow 2.8s ease-in-out infinite}
@keyframes marker-glow{0%,100%{opacity:.62;transform:translateX(-50%) scale(.92)}50%{opacity:1;transform:translateX(-50%) scale(1.07)}}
.marker-name{position:absolute;left:50%;bottom:-19px;transform:translateX(-50%);white-space:nowrap;
  font-size:11px;font-weight:800;color:#49603f;background:#fff9e8ee;border-radius:999px;padding:3px 10px;
  box-shadow:0 2px 0 #00000014;pointer-events:none;z-index:3}
.landmark:hover .marker-name{background:#fff;color:#2d4a3c}
.landmark .badge{right:4px;top:4px}
@media(max-width:700px){
 .landmark{width:78px;height:78px}
 .landmark>img{width:100%;height:100%}
 .camp-marker{width:80px;height:80px}
 .marker-name{font-size:10px;padding:2px 8px;bottom:-16px}
}
@media(prefers-reduced-motion:reduce){.landmark .ground-ring{animation:none;opacity:.7}}

/* 地図の上の物は、すべて camp.csv の同じルール（同じ画風・同じ俯瞰・背景の絵の中の座標と幅）で置く。
   そのうち押せる3つ（作業机＝研究室／掘った跡＝発掘／支度＝フィールドワーク）だけ、
   足元の光る輪と小さな名前札を足す。白い丸や、他の画面用のアイコンは使わない */
.camp-props{pointer-events:none}
.camp-button{pointer-events:auto;position:absolute;transform:translate(-50%,-50%);height:auto;padding:0;background:none;border:0;
  filter:drop-shadow(0 4px 3px #0003);transition:scale .2s;overflow:visible}
.camp-button>img{width:100%;height:auto;display:block}
.camp-button:hover{scale:1.05}
/* 共通の button:not(:disabled):active より優先し、中央配置の補正を押下中も維持する。 */
.camp-button:not(:disabled):active{transform:translate(-50%,calc(-50% + 2px))}
.camp-button .marker-name{position:absolute;left:50%;bottom:-20px;transform:translateX(-50%);white-space:nowrap;
  font-size:11px;font-weight:800;color:#49603f;background:#fff9e8ee;border-radius:999px;padding:3px 10px;
  box-shadow:0 2px 0 #00000014;pointer-events:none;z-index:3}
.camp-button:hover .marker-name{background:#fff;color:#2d4a3c}
.camp-button .badge{position:absolute;right:-4px;top:-6px;z-index:3}
@media(max-width:700px){.camp-button .marker-name{font-size:10px;padding:2px 8px;bottom:-16px}}
/* 透明な余白ではなく、絵の上下端に札と通知を接続する。 */
.camp-button[data-art="camp/table.png"]{--marker-art-top:13.1%;--marker-art-bottom:88.7%;--marker-art-right:90%}
.camp-button[data-art="camp/hole-small.png"]{--marker-art-top:29.5%;--marker-art-bottom:75.2%}
.camp-button[data-art="camp/hole-medium.png"]{--marker-art-top:21.9%;--marker-art-bottom:83.2%}
.camp-button[data-art="camp/hole-large.png"]{--marker-art-top:15.6%;--marker-art-bottom:86.5%}
.camp-button[data-art="camp/fieldwork-kit.png"]{--marker-art-top:3.2%;--marker-art-bottom:94.7%}
.camp-button .marker-name{top:calc(var(--marker-art-bottom,100%) - 2px);bottom:auto}
.camp-button .marker-status{top:auto;bottom:calc(100% - var(--marker-art-top,0%) - 4px)}
.camp-button .badge{top:calc(var(--marker-art-top,0%) - 4px);right:calc(100% - var(--marker-art-right,100%) - 4px)}

/* お手本は、英語そのものを押すと鳴る。行を増やすと iPad で押しにくくなるのでボタンは置かない */
.tk-en.tappable{cursor:pointer;-webkit-tap-highlight-color:transparent}
.tk-en.tappable:active{opacity:.75}

/* 返事の選択肢：送信済みの吹き出しと同じ見た目だったので、押せるものだと分からなかった。
   「タップして返事」の小さな札と、ゆっくりした浮き沈みで、待っていることを示す */
.chat-choice-row{flex-direction:column;align-items:flex-end;gap:5px}
.chat-choice-hint{font-size:11px;font-weight:800;color:#4f7044;background:#ffffffe0;border-radius:999px;
  padding:2px 10px;box-shadow:0 1px 0 #0000000f;animation:choice-hint 1.9s ease-in-out infinite}
@keyframes choice-hint{0%,100%{opacity:.5}50%{opacity:1}}
.line-sheet .chat-choice-row .chat-reply{box-shadow:0 3px 0 #5fae48,0 6px 14px #4f8c3a26;
  animation:choice-float 2.4s ease-in-out infinite}
@keyframes choice-float{0%,100%{transform:translateY(0)}50%{transform:translateY(-3px)}}
.line-sheet .chat-choice-row .chat-reply:active{animation:none;transform:translateY(2px);box-shadow:0 1px 0 #5fae48}
@media(prefers-reduced-motion:reduce){.chat-choice-hint,.line-sheet .chat-choice-row .chat-reply{animation:none}}

/* 小物は背景と同じ中心で拡大する（倍率は scene-layout.js が毎フレーム合わせる） */
.camp-props{transform-origin:50% 50%}

/* 暗唱カードの高さを変えない。行を消すと上下に動いて読みにくいので、場所は残したまま見えなくする */
.tk-kana.hide,.tk-pips.hide{visibility:hidden}

/* 小さな窓でも情報と操作が収まる、共通のポップアップ寸法。 */
:root{--popup-width:520px;--popup-height:640px;--popup-inset:clamp(8px,2dvh,20px)}
#content{padding:var(--popup-inset)}
.sheet{min-width:0;min-height:0;max-height:100%;max-width:100%}
.sheet-body{min-height:0;min-width:0;overflow:auto}
.sheet-head,.sheet-foot{flex-shrink:0}
#game:not([data-screen=discovery]) .phone-sheet:not(.chat-sheet){width:min(var(--popup-width),100%);height:min(var(--popup-height),100%);border-width:3px;border-radius:26px}
#game:not([data-screen=discovery]) .phone-sheet:not(.chat-sheet) .sheet-head{height:50px;min-height:50px;padding:6px 12px;gap:10px}
#game:not([data-screen=discovery]) .phone-sheet:not(.chat-sheet) .sheet-head h1{font-size:16px;min-width:0}
#game:not([data-screen=discovery]) .phone-sheet:not(.chat-sheet) .sheet-body{padding:14px 18px;font-size:14px;line-height:1.5}
#game:not([data-screen=discovery]) .phone-sheet:not(.chat-sheet) .sheet-body>h2{font-size:19px;margin:10px 0}
#game:not([data-screen=discovery]) .phone-sheet:not(.chat-sheet) .detail-copy{font-size:14px;line-height:1.6;margin:10px 0}
#game:not([data-screen=discovery]) .phone-sheet:not(.chat-sheet) .detail-hero{height:clamp(90px,18dvh,150px);max-height:150px;margin:0 auto 10px}
#game:not([data-screen=discovery]) .phone-sheet:not(.chat-sheet) .detail-facts{font-size:13px;gap:8px 14px;margin:12px 0;padding:10px 0}
#game:not([data-screen=discovery]) .phone-sheet:not(.chat-sheet) .sheet-foot>.primary,
#game:not([data-screen=discovery]) .phone-sheet:not(.chat-sheet) .sheet-foot>.secondary{font-size:14px;min-height:44px;margin:8px 12px;width:calc(100% - 24px)}
.phone-sheet .app-section-nav{width:100%;min-height:54px;padding:4px 10px}
.phone-sheet .app-section-nav button{width:48px;height:44px;border-radius:12px}
.phone-sheet .app-section-nav img{width:30px;height:30px}
.phone-sheet .fact-row{display:flex;justify-content:center;flex-wrap:wrap;gap:6px 16px;margin:8px 0;font-size:13px}
.phone-sheet .item-detail h2,.phone-sheet .storage-detail h2{margin:8px 0;font-size:19px}
.phone-sheet .detail-price{font-size:20px}
.phone-sheet .purchase-quantity{font-size:14px;margin:10px 0}

/* 採掘：情報だけがスクロールし、採掘と資料の操作は窓内に残る。 */
#dig-detail:not(:empty){display:grid;place-items:center;padding:12px}
#dig-detail .dig-choice{position:relative;left:auto;bottom:auto;transform:none;animation:none;display:flex;flex-direction:column;width:min(420px,100%);min-width:0;max-height:100%;padding:14px 16px!important;border-radius:22px!important;overflow:hidden}
.dig-choice-heading{flex:none;gap:8px}
.dig-choice-heading>span{font-size:13px;text-align:left;line-height:1.4;min-width:0}
.dig-choice-heading .icon-button{width:36px;height:36px;min-width:36px}
.dig-choice-body{min-height:0;overflow:auto;padding:0 2px}
.dig-choice-body h2{font-size:22px;margin:10px 0 8px;line-height:1.3}
.dig-choice .stratum-rank{font-size:12px;margin:0;padding:4px 14px}
.dig-choice .stratum-summary{font-size:13px;line-height:1.5;margin:10px 0}
.dig-choice .dig-cost{gap:12px 20px;flex-wrap:wrap;margin:12px 0 8px!important;padding-top:12px}
.dig-choice .dig-cost>span{font-size:14px}
.dig-choice .dig-cost img{width:24px!important;height:24px!important}
.dig-choice .dig-hits{font-size:15px;line-height:1.5;margin:8px 0 12px}
.dig-choice .dig-requirements{font-size:13px;line-height:1.5;margin:8px 0 12px}
.dig-choice .dig-progress-copy{font-size:14px;margin:8px 0;padding:8px 0}
.dig-choice-actions{flex:none;display:grid;grid-template-columns:minmax(0,1fr);align-items:center;gap:8px;padding-top:12px;border-top:1px solid #dde1ce}
.dig-choice-actions .primary{min-height:44px;font-size:14px;padding:10px 12px;border-radius:14px;line-height:1.4}
.dig-choice-actions .text-button{min-height:44px;padding:8px 10px;font-size:13px;text-decoration:underline;text-underline-offset:3px}

/* 持ち物：絵・個数・名前を横に並べ、保管まで一覧で見渡せるようにする。 */
.laboratory .lab-section{margin:0 0 14px}
.laboratory .lab-section:last-child{margin-bottom:0}
.laboratory .lab-section h2{font-size:14px;margin:0 0 8px;line-height:1.5}
.laboratory .lab-materials{gap:8px}
.laboratory .lab-materials button{flex-direction:row;gap:7px;padding:9px 8px;border-radius:12px;min-height:64px;text-align:left}
.laboratory .lab-materials img{width:30px;height:30px;flex:none}
.laboratory .lab-materials button>span{text-align:left;gap:1px;min-width:0}
.laboratory .lab-materials b{font-size:18px;line-height:1.2}
.laboratory .lab-materials span>span{font-size:12px;line-height:1.4}
.laboratory .lab-capacities{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.laboratory .lab-capacities button{padding:8px;gap:8px;border-radius:12px;min-width:0}
.laboratory .lab-capacities img{width:30px;height:36px;flex:none}
.laboratory .lab-capacities button>span{grid-template-columns:minmax(0,1fr);gap:3px;min-width:0}
.laboratory .lab-capacities b{font-size:12px;line-height:1.4}
.laboratory .lab-capacities span>span{font-size:12px}
.laboratory .lab-capacities meter{height:4px}
.laboratory .lab-capacities button:last-child{grid-column:1/-1}

/* 道具：大きな絵を縦積みにせず、名称と性能を並べて操作に場所を譲る。 */
.phone-sheet .tool-summary{display:grid;grid-template-columns:100px minmax(0,1fr);gap:14px;align-items:center;text-align:left}
#game .phone-sheet .tool-current .tool-summary .tool-hero{height:88px;width:100%;margin:0}
.phone-sheet .tool-identity h2{font-size:19px;line-height:1.4;margin:0 0 8px}
.phone-sheet .tool-identity .fact-row{justify-content:flex-start;margin:0}
.phone-sheet .upgrade-route{display:grid;grid-template-columns:48px minmax(0,1fr);gap:8px 12px;margin:12px 0;padding:12px 0;border-top:1px solid #dde1ce;text-align:left}
.phone-sheet .upgrade-route>img{width:48px;height:56px}
.phone-sheet .upgrade-route b{font-size:14px}
.phone-sheet .upgrade-route p{font-size:12px;line-height:1.5;margin:4px 0}
.phone-sheet .upgrade-route .cost-list{flex-wrap:wrap;font-size:12px;gap:4px 10px}
.phone-sheet .upgrade-route>.primary{grid-column:1/-1;min-height:44px;font-size:14px}
.phone-sheet .tool-notes{font-size:13px;line-height:1.6;margin:10px 0 0;text-align:left}
.phone-sheet .tool-notes summary{min-height:44px;padding:10px 0;color:#617363}
.phone-sheet .tool-notes p{padding:0}
.phone-sheet .tool-current{padding-bottom:8px}
.phone-sheet .tool-current>.secondary,.phone-sheet .upgrade-route>.primary{width:100%;min-height:44px;font-size:14px;padding:8px 12px;border-radius:14px;grid-column:1/-1}
.phone-sheet .tool-current>.secondary .resource{font-size:13px}
.phone-sheet .tool-current>.secondary img{width:24px;height:24px}
.phone-sheet .tool-section-label{display:block;font-size:11px;color:#74816b;margin-bottom:2px}
.phone-sheet .upgrade-route{padding:12px;border:1px solid #e0e4d0;margin:0 0 10px}
/* 主操作と補助操作は全て縦に並べる。右側に別の操作を置かない。 */
.sheet-foot{flex-direction:column}
.sheet-foot>:is(.primary,.secondary,.text-button){width:100%;max-width:none;min-height:44px}
.dig-choice-actions .text-button{justify-self:center;width:100%;text-align:center}
@media(max-width:380px){
 .laboratory .lab-materials button{flex-direction:column;gap:3px;padding:6px 4px}
 .laboratory .lab-materials button>span{text-align:center}
 .phone-sheet .tool-summary{grid-template-columns:80px minmax(0,1fr);gap:10px}
 #game .phone-sheet .tool-current .tool-summary .tool-hero{height:80px}
}
@media(max-height:540px){
 #game:not([data-screen=discovery]) .phone-sheet:not(.chat-sheet) .sheet-body{padding:10px 14px}
 #game:not([data-screen=discovery]) .phone-sheet:not(.chat-sheet) .sheet-head{height:46px;min-height:46px}
 #dig-detail .dig-choice{padding:10px 12px!important}
 .dig-choice-body h2{margin:6px 0;font-size:20px}
 .dig-choice .dig-cost{margin:8px 0!important;padding-top:8px}
 .dig-choice .stratum-summary,.dig-choice .dig-hits{margin:6px 0}
 .dig-choice-actions{padding-top:8px}
}

/* 人物・標本・説明・報酬など、別の画像枠を持つ窓にも同じ密度を適用する。 */
#game .phone-sheet .person-portrait{height:clamp(90px,18dvh,150px);margin:0 0 10px}
#game .phone-sheet .person-portrait img{max-height:100%;max-width:100%;object-fit:contain}
#game .phone-sheet .dinosaur{height:clamp(110px,22dvh,190px);margin:0 0 10px}
#game .phone-sheet .story-image{max-height:clamp(100px,23dvh,190px);object-fit:contain;margin:0 auto 10px}
#game .phone-sheet .story-line{font-size:14px;line-height:1.6;margin:12px 0;gap:8px}
#game .phone-sheet .story-line>img{width:34px;height:34px}
#game .phone-sheet .lab-empty{padding:14px 4px}
#game .phone-sheet .lab-empty>img{width:70px;height:70px;margin-bottom:10px}
#game .phone-sheet .lab-empty p{font-size:14px;line-height:1.6;margin:10px 0 16px}
#game .phone-sheet .lab-empty h2,#game .phone-sheet .lab-empty h3{font-size:17px;margin:8px 0}
#game .phone-sheet .find-comment{margin:10px 0 14px;gap:8px}
#game .phone-sheet .find-comment p{font-size:14px;line-height:1.6;padding:9px 12px}
#game .phone-sheet .find-note{margin:10px 0;padding:10px 12px}
#game .phone-sheet .research-paper h2{font-size:21px}
#game .phone-sheet .research-paper>p{font-size:14px;line-height:1.6;margin:10px 0}
#game .phone-sheet .paper-facts{margin:12px 0;padding:10px 0;gap:8px 12px;font-size:13px}
#game .phone-sheet .paper-parts{margin:12px 0;gap:6px}
#game .phone-sheet .paper-parts span{font-size:13px;padding:6px 10px}
#game .phone-sheet .geology-facts{margin:12px 0;gap:8px 12px;font-size:13px}
#game .phone-sheet .model-note{font-size:12px;line-height:1.6;margin-top:14px}
#game .phone-sheet blockquote{font-size:14px;line-height:1.6;margin:10px 0;padding:8px 12px}
#game .phone-sheet details{margin:10px 0;line-height:1.6}
#game .phone-sheet details>summary{min-height:44px;align-content:center}
#game .phone-sheet .profile-form{gap:10px}
#game .phone-sheet .profile-art{width:75px;height:65px}
#game .phone-sheet .profile-form label{gap:5px}
#game .phone-sheet .fieldwork-land{gap:20px;min-height:0;flex-wrap:wrap}
#game .phone-sheet .field-destination{width:160px;padding:14px;gap:8px}
#game .phone-sheet .field-destination img{width:80px;height:80px}
#game .phone-sheet .field-destination strong{font-size:18px}
#game .phone-sheet .field-destination:nth-of-type(2){margin-top:16px}
#game .phone-sheet .trail-progress{padding:12px}
#game .phone-sheet.fieldwork .fieldwork-land{gap:10px}
#game .phone-sheet.fieldwork .field-destination{width:100%;min-width:0;min-height:150px;margin:0;padding:12px 8px;align-self:stretch}
#game .phone-sheet.fieldwork .field-destination img{width:70px;height:70px}
#game .phone-sheet.fieldwork .field-destination strong{font-size:16px}
#game .phone-sheet.fieldwork .field-destination:nth-of-type(2){margin:0}
#game .phone-sheet .crack-stage{height:clamp(130px,30dvh,230px);margin:8px auto}
#game .phone-sheet .crack-rock{max-height:100%;max-width:100%;aspect-ratio:1;width:auto}
#game .sheet:not(.phone-sheet) .detail-hero{height:clamp(100px,22dvh,190px)}
#game .reward-sheet .sheet-body{padding:12px 16px 18px}
#game .reward-sheet .reward-cards{gap:10px}
#game .reward-sheet .reward-card{min-height:clamp(130px,28dvh,210px)}
#game .reward-sheet .reward-card.revealed .gacha-front{min-height:clamp(130px,28dvh,210px);padding:10px 6px;gap:6px}
#game .reward-sheet .reward-card.revealed .gacha-front strong{font-size:14px}
#game .reward-sheet .prize-amount b{font-size:19px}
.stamp-card{max-height:calc(100dvh - 24px);overflow:auto;padding:14px}
.stamp-card h2{font-size:18px}
.meet-pop-card>img{max-height:clamp(100px,25dvh,220px)}
.meet-pop-lines p span{font-size:14px;line-height:1.5}
/* 出会いは既定の幅と最大高さ。3:2の画像の下に会話と操作を収める。 */
.encounter-pop{padding:var(--popup-inset)}
.encounter-pop .meet-pop-card{width:min(var(--popup-width),100%);height:auto;max-height:min(var(--popup-height),100%);display:grid;grid-template-rows:auto minmax(0,auto) auto;overflow:hidden;border-radius:26px}
.encounter-pop .meet-pop-card>img{width:100%;height:auto;aspect-ratio:3/2;min-height:0;max-height:none;object-fit:contain;border-radius:26px 26px 0 0}
.encounter-pop .meet-pop-lines{min-height:0;overflow:auto;justify-content:center}
@media(orientation:landscape) and (max-height:540px){.encounter-pop .meet-pop-card{width:min(var(--popup-width),calc((100dvh - 180px)*1.5),100%)}}
.encounter-pop .meet-pop-lines p{min-width:0}
.encounter-pop .meet-pop-lines p img{flex:none}
.encounter-pop .meet-pop-lines p span{min-width:0;overflow-wrap:anywhere}

.meet-pop-card>button,.report-card>button,.stamp-card>.primary{position:sticky;bottom:0;flex:none;min-height:44px}
.report-card{padding:14px;max-height:calc(100dvh - 24px)}
.report-art{height:clamp(90px,18dvh,140px);margin:18px 0 6px}
.report-art img{max-height:100%}
.report-card h2{font-size:20px}
.report-card dl,.report-note{font-size:13px;line-height:1.5}
.stamp-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;margin-bottom:12px}
.stamp-cell{padding:7px 3px;gap:3px}
.stamp-mark{width:30px;height:30px}
.stamp-got{font-size:20px;margin-bottom:10px;flex-wrap:wrap}
.chapter-card{padding:12px}
.chapter-paper{min-height:0;max-height:calc(100dvh - 24px);overflow:auto;padding:clamp(24px,4dvh,40px);width:min(520px,100%)}
.chapter-brand{margin-bottom:20px}
.chapter-emblem{width:105px;height:100px}
.chapter-emblem>img{width:119px;height:179px;left:-7px;top:-17px}
.chapter-brand-name{font-size:40px}
.chapter-number{font-size:18px;margin-bottom:12px}
.chapter-card h2{font-size:clamp(20px,3vw,28px);line-height:1.5;padding:14px 0}
#game:not([data-screen=discovery]) .phone-sheet:not(.chat-sheet).atlas-sheet{width:min(1060px,100%)}
#game .phone-sheet .profile-form{max-width:none;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 12px}
#game .phone-sheet .profile-form label{min-width:0;font-size:13px}
#game .phone-sheet .profile-form input,#game .phone-sheet .profile-form select{padding:8px 10px;font-size:14px;min-width:0;min-height:44px}
#game .phone-sheet .profile-form>.profile-art,#game .phone-sheet .profile-form>button,#game .phone-sheet .profile-form>details{grid-column:1/-1}
#game .phone-sheet .profile-form>.profile-art{height:50px;width:60px}
#game .phone-sheet .profile-form>.primary{margin-top:2px}
#game .phone-sheet .profile-form>.debug-entry{margin:0}
@media(min-width:360px){
 .phone-sheet .upgrade-route{grid-template-columns:40px minmax(0,1fr);gap:8px}
 .phone-sheet .upgrade-route>img{width:40px;height:48px}
 .phone-sheet .upgrade-route>.primary{grid-column:1/-1;font-size:14px;padding:8px 12px}
}
@media(max-width:600px){
 .laboratory .lab-section{margin-bottom:10px}
 .laboratory .lab-section h2{margin-bottom:6px}
 .laboratory .lab-capacities{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}
 .laboratory .lab-capacities button{padding:7px 5px;gap:5px;flex-direction:column;align-items:center;text-align:center}
 .laboratory .lab-capacities img{width:24px;height:24px}
 .laboratory .lab-capacities button>span{width:100%;gap:2px}
 .laboratory .lab-capacities button:last-child{grid-column:auto}
 .laboratory .lab-capacities span>span{font-size:11px;line-height:1.4}
}
@media(max-height:540px){
 #game .phone-sheet .person-portrait{height:90px}
 #game .phone-sheet .dinosaur{height:110px}
 #game .phone-sheet .tool-summary{grid-template-columns:72px minmax(0,1fr)}
 #game .phone-sheet .tool-current .tool-summary .tool-hero{height:72px}
 #game .phone-sheet .upgrade-route{margin:8px 0;padding:8px 0;gap:6px 10px}
}
.tk-note{position:absolute;left:50%;bottom:-54px;transform:translateX(-50%);margin:0;white-space:nowrap}
.tk-card{position:relative}
/* ショップとスタンプの売り場は同じカード・カート位置を使う。 */
#game .phone-sheet.shop-sheet .shop-wallet{display:flex;flex-wrap:wrap;justify-content:space-between;gap:8px;padding:8px 10px;background:#edeedc;border-radius:12px;font-size:12px}
#game .shop-wallet>span{display:flex;align-items:center;gap:6px}
#game .shop-wallet .resource{font-size:13px;gap:4px}
#game .shop-wallet img{width:22px;height:22px}
#game .shop-stamp-entrance{display:flex;align-items:center;gap:12px;width:100%;margin:12px 0;padding:12px;background:linear-gradient(115deg,#f1e4bc,#f6edcf);border:1px solid #d9c89e;border-radius:16px;text-align:left;color:#405d4d}
#game .shop-stamp-entrance>span:nth-child(2){flex:1;min-width:0}
#game .shop-stamp-entrance b{display:block;font-size:16px}
#game .shop-stamp-entrance small{display:block;font-size:12px;margin-top:4px;line-height:1.5}
#game .shop-stamp-samples{display:flex;align-items:center;width:96px;flex:none}
#game .shop-stamp-samples img{width:44px;height:56px;object-fit:contain;margin-right:-14px;filter:drop-shadow(0 2px 2px #6d60352a)}
#game .shop-stamp-entrance>.icon{width:20px;flex:none}
#game .shop-categories{display:flex;gap:6px;flex-wrap:wrap;margin:12px 0}
#game .shop-categories a,#game .shop-categories button{display:block;padding:8px 12px;min-height:40px;align-content:center;background:#e5ead5;border-radius:20px;color:#405d4d;text-decoration:none;font-size:13px;font-weight:600}
#game .shop-section{margin:16px 0 20px;scroll-margin-top:8px}
#game .shop-section-heading{display:flex;align-items:baseline;justify-content:space-between;gap:8px;margin-bottom:8px}
#game .phone-sheet .shop-section-heading h2{font-size:16px;margin:0;line-height:1.4;text-align:left}
#game .shop-section-heading>span{font-size:11px;color:#73816c;flex:none}
#game .shop-products{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
#game .shop-product{display:flex;flex-direction:column;align-items:center;min-width:0;gap:5px;padding:10px 6px;background:#f0efdd;border:1px solid #e1dfc8;border-radius:16px;box-shadow:0 3px 0 #d7d6bd;text-align:center;color:#405b4b}
#game .shop-product-art{display:grid;place-items:center;width:100%;height:78px}
#game .shop-product-art img{max-width:100%;width:78px;height:78px;object-fit:contain}
#game .shop-product>b{font-size:13px;line-height:1.4;overflow-wrap:anywhere}
#game .shop-product small{font-size:11px;line-height:1.4;color:#73816c}
#game .shop-product-price{margin-top:auto;font-size:13px;font-weight:600;display:flex;align-items:center;justify-content:center;gap:4px;min-height:24px}
#game .shop-product-price .resource{font-size:13px;gap:4px}
#game .shop-product-price img{width:24px;height:20px}
#game .shop-product-price .icon{width:16px;height:16px}
#game .phone-sheet.shop-sheet .sheet-foot{padding:10px 14px;gap:8px}
#game .phone-sheet.shop-sheet .sheet-foot>.primary{width:100%;margin:0}
#game .shop-cart-link{display:flex;align-items:center;gap:8px;width:100%;max-width:none;min-height:44px;padding:6px 12px;background:#e5ead5;border-radius:12px;font-size:14px;color:#405d4d}
#game .phone-sheet.shop-sheet .sheet-foot .detail-price{margin:0;font-size:16px}
#game .phone-sheet.shop-sheet .sheet-foot .detail-price .resource{font-size:16px}
#game .phone-sheet.shop-sheet .sheet-foot .detail-price img{width:24px;height:24px}
#game .shop-cart-link>img{width:30px;height:30px;object-fit:contain}
#game .shop-cart-link>span{flex:1;text-align:left}
#game .shop-cart-link>b{font-size:12px}
#game .shop-cart-link>.icon{width:18px;height:18px}
#game .phone-sheet .shop-intro{margin:12px 0;font-size:13px;line-height:1.6;color:#73816c}
#game .phone-sheet .shop-pack-title{font-size:18px;margin:0;text-align:left}
#game .shop-pack-preview{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
#game .shop-pack-preview figure{margin:0;padding:8px;background:#f0efdd;border:1px solid #e1dfc8;border-radius:16px;min-width:0;text-align:center}
#game .shop-pack-preview img{width:100%;height:88px;object-fit:contain}
#game .shop-pack-preview figcaption{font-size:11px;line-height:1.4}
#game .shop-owned{font-size:14px;margin:0;text-align:center}
@media(max-width:420px){#game .shop-products{grid-template-columns:repeat(2,minmax(0,1fr))}#game .shop-product-art,#game .shop-product-art img{height:65px}#game .shop-stamp-samples{width:72px}#game .shop-stamp-samples img{width:36px;height:48px}#game .shop-stamp-entrance{gap:8px;padding:10px}#game .shop-pack-preview img{height:70px}}

/* TALK: keep kana/heard rows and microphone controls; resize only the composition. */
.tk-enemy-title{max-width:42%;line-height:1.25;overflow-wrap:anywhere}
.tk-enemy-title small{display:block;font-size:11px;color:#ffe49d;margin-top:3px;font-weight:800}
.tk-foe[role="button"]{cursor:pointer;-webkit-tap-highlight-color:transparent;touch-action:manipulation}
.tk-foe[role="button"]:focus-visible{outline:2px solid #ffe399;outline-offset:3px;border-radius:20px}
.tk-finisher-stars{position:absolute;left:50%;top:55%;width:0;height:0;pointer-events:none}
.tk-finisher-stars i{position:absolute;color:#ffe075;text-shadow:0 2px 0 #b57435;font:900 27px sans-serif;animation:tk-star-burst .45s ease-out forwards;--dx:-80px;--dy:-60px}
.tk-finisher-stars i:nth-child(2){--dx:-120px;--dy:5px;color:#ff997c}
.tk-finisher-stars i:nth-child(3){--dx:-50px;--dy:70px;color:#a9e5e1}
.tk-finisher-stars i:nth-child(4){--dx:60px;--dy:75px;color:#d2a6ff}
.tk-finisher-stars i:nth-child(5){--dx:115px;--dy:10px}
.tk-finisher-stars i:nth-child(6){--dx:75px;--dy:-65px;color:#ff997c}
.tk-finisher-stars i:nth-child(7){--dx:0px;--dy:-95px;color:#a9e5e1}
@keyframes tk-star-burst{from{opacity:1;transform:translate(-50%,-50%) scale(.4)}to{opacity:0;transform:translate(var(--dx),var(--dy)) scale(1.2) rotate(100deg)}}
@keyframes tk-blown{to{opacity:0;transform:translate(85px,-95px) rotate(32deg) scale(.65)}}
@media(prefers-reduced-motion:reduce){.tk-finisher-stars i{animation:none;display:none}}
#game .talk-screen.tk{display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr) auto;gap:10px;min-height:0}
#game .talk-screen.tk .encounter{min-height:0;min-width:0}
#game .talk-screen.tk .tk-foe-wrap{height:100%;max-height:560px;aspect-ratio:1;width:auto;max-width:100%;display:block}
#game .talk-screen.tk .opponent{height:100%;width:100%;max-height:none;max-width:none;object-fit:contain}
#game .talk-screen.tk .tk-foe-wrap.big .tk-foe{transform:none}
#game .talk-screen.tk .tk-hp{position:absolute;left:50%;top:52%;transform:translate(-50%,-50%);z-index:3;width:clamp(100px,38%,160px);height:9px;border-radius:6px;background:#273c36b3;box-shadow:0 0 0 2px #fff4dfb3,0 2px 5px #253f3b33;pointer-events:none}
#game .talk-screen.tk .tk-card{justify-self:center;width:min(600px,100%);min-width:0;padding:16px 18px 14px;overflow:visible}
#game .talk-screen.tk .tk-en{font-size:clamp(30px,7vw,46px)}
#game .talk-screen.tk .tk-note{position:static;transform:none;white-space:normal;max-width:100%}
@media(max-height:540px) and (min-width:600px){
 #game .talk-screen.tk{grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);grid-template-rows:auto minmax(0,1fr);gap:8px 18px}
 #game .talk-screen.tk .play-head{grid-column:1/-1}
 #game .talk-screen.tk .tk-card{align-self:center;width:100%;padding:12px 14px}
 #game .talk-screen.tk .tk-en{font-size:clamp(26px,4.5vw,40px)}
}

/* Entrance must hand over to idle instead of freezing with forwards fill. */
.tk-foe{--idle-y:-4px;--idle-x:2px;--idle-turn:1.5deg;--idle-stretch:1.015;--idle-time:2.2s;transform-origin:50% 90%;animation:tk-idle var(--idle-time) ease-in-out infinite}
.tk-foe.enter{animation:tk-enter .35s ease-out both,tk-idle var(--idle-time) ease-in-out .35s infinite}
.tk-foe[data-foe-art="foe-mouse"]{--idle-y:-7px;--idle-turn:2deg;--idle-time:1.65s}
.tk-foe[data-foe-art="foe-cat"]{--idle-x:5px;--idle-turn:-2deg;--idle-time:2.1s}
.tk-foe[data-foe-art="foe-heron"]{--idle-x:5px;--idle-y:-3px;--idle-turn:3deg;--idle-time:2.4s}
.tk-foe[data-foe-art="foe-rabbit"]{--idle-y:-12px;--idle-stretch:1.035;--idle-time:1.5s}
.tk-foe[data-foe-art="foe-mushroom"]{--idle-y:-4px;--idle-stretch:1.03;--idle-turn:-2deg;--idle-time:1.8s}
.tk-foe[data-foe-art="foe-sabertooth"]{--idle-y:-2px;--idle-x:0px;--idle-turn:.5deg;--idle-stretch:1.025;--idle-time:2.8s}
.tk-foe[data-foe-art="foe-rock-dragon"]{--idle-y:-1px;--idle-x:0px;--idle-turn:-.8deg;--idle-time:3s}
.tk-foe[data-foe-art="foe-poison-pot"]{--idle-turn:5deg;--idle-y:-3px;--idle-time:1.65s}
.tk-foe[data-foe-art="foe-fossil-flower"]{--idle-turn:-4deg;--idle-x:4px;--idle-time:2.3s}
@keyframes tk-idle{0%,100%{transform:translate(0,0) rotate(0) scale(1)}50%{transform:translate(var(--idle-x),var(--idle-y)) rotate(var(--idle-turn)) scale(1,var(--idle-stretch))}}
.tk-foe.down{animation:tk-down .26s ease-in forwards}
.tk-foe.blown,.tk-arena.tk-unleash .tk-foe.blown{animation:tk-blown .45s ease-in forwards}
@keyframes tk-blown{0%{opacity:1;transform:translate(0,0) rotate(0) scale(1)}65%{opacity:1}100%{opacity:0;transform:translate(340px,-280px) rotate(540deg) scale(.3)}}
.tk-mark.punch{scale:1.05;--tk-punch-a:.92}
.tk-mark.uppercut .tk-wave{border-color:#a8eaff;box-shadow:0 0 16px #63d7ff}
.tk-mark.spin .tk-wave{border-color:#d5a8ff;box-shadow:0 0 18px #b878ff}
.tk-mark.heavy{filter:drop-shadow(0 0 18px #ffd36e)}
.tk-finisher-stars i{font-size:38px}
.tk-combo b{font-size:42px}
@media(prefers-reduced-motion:reduce){.tk-foe,.tk-foe.enter{animation:none}}

/* Use the body centre for the final launch, independently of the idle foot pivot. */
.tk-foe.blown{transform-origin:50% 50%}

/* Keep pronunciation attached to the English word; meaning follows directly below. */
#game .talk-screen.tk .tk-card{gap:0;padding:12px 18px 10px}
.tk-card .tk-pips{margin-bottom:8px}
.tk-card .tk-kana{font-size:12px;line-height:1.2;height:15px;min-height:15px;letter-spacing:.04em;margin-top:3px}
.tk-card .tk-en{line-height:1.12;min-height:1.15em;padding:0 .06em;max-width:100%}
.tk-card .tk-ja{font-size:clamp(17px,3.4vw,21px);line-height:1.25;min-height:1.25em;margin-bottom:5px}
.tk-card .tk-heard{font-size:12px;height:18px;margin-top:6px}
.tk-card .tk-wave{height:22px;margin-top:0}
.tk-card .tk-wave i{height:20px;width:4px}
.tk-banner{top:43%;padding:0 20px}
.tk-banner span,.tk-banner.boss span,.tk-banner.burst span{display:flex;flex-direction:column;align-items:center;gap:3px;padding:12px 26px;background:#fbf5e6;color:#2f6856;border:2px solid #fff6d5;border-radius:18px;box-shadow:0 5px 0 #b5c9a2,0 10px 22px #203c3530;letter-spacing:.02em;animation:tk-call 1.3s ease-out forwards}
.tk-banner small{font-size:12px;font-weight:700;letter-spacing:.1em;color:#78816b}
.tk-banner b{font-size:clamp(23px,5vw,34px);font-style:italic;line-height:1.15}
.tk-banner.boss span{background:#473847;color:#ffe2a1;border-color:#a78975;box-shadow:0 5px 0 #2b2430,0 10px 22px #203c3530}
.tk-banner.boss small{color:#ebc4bc}
.tk-banner.burst span{background:#fff0bd;color:#79541f;box-shadow:0 5px 0 #c9a24f}
@keyframes tk-call{0%{opacity:0;transform:translateY(10px) scale(.94)}12%,78%{opacity:1;transform:none}100%{opacity:0;transform:translateY(-8px)}}
/* Bonus rewards: a timed ring and three collectable cards, without explanatory labels. */
#game .puzzle-screen.bonus-mode{isolation:isolate;background:radial-gradient(ellipse at 50% 10%,#f8dc9975,transparent 60%),linear-gradient(155deg,#58435fea,#35495ded);border-radius:24px;color:#fff4d3;box-shadow:0 0 0 100vmax #40345a50}
#game .bonus-mode .play-head{color:#fff4d3}
#game .bonus-mode .pz-slot{height:145px;isolation:isolate}
#game .pz-slot .pz-bonus{width:100%;gap:0}
.bonus-challenge{display:flex;align-items:center;justify-content:center;gap:24px}
#game .pz-slot .pz-bonus-ring{width:112px;flex:none}
.bonus-challenge .pz-bonus-pips{gap:9px}
.bonus-challenge .pz-bonus-pips i{position:relative;display:grid;place-items:center;width:42px;height:62px;border-radius:8px;background:linear-gradient(140deg,#fff9e018,#e1bd5a10);border:1px solid #ffe8b18c;box-shadow:0 3px 0 #292638;color:#f9df9b;font-size:20px;font-style:normal;font-weight:800}
.bonus-challenge .pz-bonus-pips i>b{display:none;font-size:26px;color:#9c7029;text-shadow:0 1px #fff3c6}
.bonus-challenge .pz-bonus-pips i.ok{background:linear-gradient(140deg,#fff3b9,#e3b750);border:2px solid #fff2bd;box-shadow:0 4px 0 #a97735,0 0 15px #f8cf6966}
.bonus-challenge .pz-bonus-pips i.ok>span{position:absolute;top:2px;left:5px;font-size:10px;color:#82602f}
.bonus-challenge .pz-bonus-pips i.ok>b{display:block}
.bonus-treasure{position:absolute;inset:0;z-index:-1;pointer-events:none;overflow:hidden}
.bonus-treasure img{position:absolute;left:-15px;bottom:0;width:clamp(110px,21vw,185px);height:125px;object-fit:contain;opacity:.72}
.bonus-treasure img:last-child{left:auto;right:-15px;transform:scaleX(-1)}
#game .bonus-mode .card-stack{display:none}
.bonus-flying-card{position:fixed;z-index:45;width:48px;height:68px;display:grid;place-items:center;border:3px solid #fff3bd;border-radius:8px;background:linear-gradient(140deg,#fff4c7,#e3b451);box-shadow:0 5px 0 #9b6b2e,0 0 24px #ffe27fa0;pointer-events:none;color:#a5732d;font-size:32px}
.event-title{position:absolute;inset:24% 0 auto;z-index:40;text-align:center;pointer-events:none;isolation:isolate;animation:event-out var(--event-time,900ms) ease-out both}
.event-title strong{position:relative;display:flex;flex-direction:column;align-items:center;font:1000 italic clamp(38px,8vw,82px)/1.02 Impact,'Arial Black',system-ui,sans-serif;letter-spacing:.015em;color:#ffe29a;-webkit-text-stroke:3px #3a4938;paint-order:stroke fill;text-shadow:3px 4px 0 #3a4938;animation:event-pop var(--event-time,900ms) cubic-bezier(.2,.75,.3,1) both}
.event-title.complete strong{color:#fff0b1;font-size:clamp(39px,9vw,94px);-webkit-text-stroke-color:#67502e;text-shadow:4px 5px 0 #67502e}
.event-title-rays{position:absolute;inset:-65px 12%;z-index:-1;background:repeating-conic-gradient(from 10deg,#ffe0a440 0deg 8deg,transparent 8deg 26deg);mask-image:radial-gradient(ellipse,#000 15%,transparent 65%);animation:event-rays var(--event-time,900ms) ease-out both}
.event-title-stars{position:absolute;left:50%;top:50%;width:0;height:0}
.event-title-stars i{position:absolute;left:-10px;top:-12px;color:#ffe39e;font-style:normal;font-size:25px;text-shadow:0 2px #b88b3e;animation:event-star var(--event-time,900ms) ease-out both}
.event-title.complete .event-title-stars i{font-size:34px}
@keyframes event-pop{0%{opacity:0;transform:scale(.65) rotate(-6deg)}17%{opacity:1;transform:scale(1.08) rotate(-3deg)}30%,78%{opacity:1;transform:scale(1) rotate(-3deg)}100%{opacity:0;transform:scale(1.12) rotate(-3deg)}}
@keyframes event-out{0%,80%{opacity:1}100%{opacity:0}}
@keyframes event-rays{from{opacity:0;transform:scale(.7)}22%{opacity:1}to{opacity:0;transform:scale(1.25)}}
@keyframes event-star{0%{opacity:0;transform:rotate(var(--angle)) translateX(25px) scale(.3)}18%{opacity:1}100%{opacity:0;transform:rotate(var(--angle)) translateX(var(--reach)) rotate(calc(-1 * var(--angle))) scale(1)}}
@media(max-width:480px){#game .bonus-mode .pz-slot{height:135px}#game .pz-slot .pz-bonus-ring{width:98px}.bonus-challenge{gap:18px}.bonus-challenge .pz-bonus-pips{gap:7px}.bonus-challenge .pz-bonus-pips i{width:36px;height:53px}.bonus-treasure img{width:100px;height:88px;opacity:.5}.event-title-stars i{--reach:100px!important}.event-title.complete .event-title-stars i{--reach:130px!important}}
@media(max-height:540px){#game .bonus-mode .pz-slot{height:112px}#game .pz-slot .pz-bonus-ring{width:86px}.event-title{top:20%}}
@media(prefers-reduced-motion:reduce){.event-title strong,.event-title{animation:none}.event-title-rays,.event-title-stars{display:none}}
/* Expedition titles use chalk and stone, rather than gold lettering. */
.event-title strong,.event-title.complete strong{color:#f4f0df;-webkit-text-stroke-color:#2d473b;text-shadow:3px 4px 0 #2d473b}
.event-title-rays{background:repeating-conic-gradient(from 10deg,#dbe6cf40 0deg 8deg,transparent 8deg 26deg)}
.event-title-stars i{color:#e4ead6;text-shadow:0 2px #55735a}

/* Approved raster rock mission; eight image fragments, no SVG. */
/* Long puzzle translations retain every word and stay inside their tile. */
.puzzle-tile-label{display:block;width:100%;min-width:0;flex:none;line-height:1.22;overflow-wrap:anywhere;text-align:center;pointer-events:none}
#game .puzzle-screen .puzzle-board{grid-template-rows:repeat(var(--rows),max(var(--th),var(--text-min-height,0px)))!important}
#game .puzzle-screen{overflow-y:auto}

.dig-pop-quest{margin:0 16px;padding:6px 12px;background:#fff3c4;border-radius:12px;font-weight:700;text-align:center}
.dig-pop .meet-pop-lines small{display:block;font-size:11px;opacity:.6}
.dig-pop .meet-pop-lines img{background:#8A7F96}

/* Transparent material icons: compass, home and messages. */
.dock-home-only>img,.dock-line>img{width:100%;height:100%;object-fit:contain;border-radius:0}
/* 街 Jewelford（town.js）。iPad 横向きで縦にスクロールしない高さに収める */
#game[data-site=jewelford] #landscape{background-position:50% 60%}
.town-dest{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap;margin:0 0 14px}.town-dest span{font-size:12px;color:#74886a}.town-dest b{font-size:22px}.town-dest small{color:#74886a}
.town-supplies{list-style:none;margin:0 0 16px;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px}.town-supplies li{display:grid;grid-template-columns:40px 1fr auto;grid-template-rows:auto auto;align-items:center;column-gap:10px;padding:10px 12px;border-radius:14px;background:#eef1e4}.town-supplies li img{grid-row:span 2;width:40px;height:40px}.town-supplies li span{font-variant-numeric:tabular-nums;font-size:13px}.town-supplies li em{grid-row:span 2;grid-column:3;font-style:normal;font-weight:700;color:#387c69}.town-supplies li.short{background:#f7e6d8}.town-supplies li.short em{color:#b0552e;font-size:13px}
.town-lines{display:grid;gap:8px}.town-line{display:flex;gap:10px;align-items:flex-start;margin:0}.town-line img{width:40px;height:40px;border-radius:50%;background:#dfe3cf;flex:none}.town-line span{background:#fffdf3;border-radius:14px;padding:8px 12px;display:grid;gap:2px}.town-line small{font-size:11px;color:#74886a}
.town-foe{position:absolute;left:50%;top:22%;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:4px;background:none;border:0;padding:0;z-index:4;cursor:pointer;animation:town-foe-bob 1.6s ease-in-out infinite}.town-foe img{height:min(24dvh,170px);filter:drop-shadow(0 6px 8px #1d2c2150)}.town-foe .town-sign{background:#b0552e;box-shadow:0 3px 0 #7b3519}@keyframes town-foe-bob{50%{transform:translate(-50%,-6px)}}
.lab-keepsakes{display:grid;gap:8px}.lab-keepsakes p{display:flex;justify-content:space-between;gap:12px;margin:0;padding:10px 14px;border-radius:12px;background:#f3eedc}.lab-keepsakes span{font-size:12px;color:#74886a}.lab-section h2>span{font-size:12px;font-weight:400;color:#74886a;margin-left:8px}

/* ドックの通知：件数を中央に表示。2桁以上は横幅を広げる。 */
.dock-app[data-badge]:after{display:grid;place-items:center;box-sizing:border-box;min-width:22px;width:auto;height:22px;padding:0 5px;border-radius:999px;font:700 12px/1 system-ui;box-shadow:0 1px 3px #49342a26}

.town-sign{font:700 13px/1 system-ui;letter-spacing:.06em;color:#fffdf2;background:#b0552e;padding:6px 12px;border-radius:12px;box-shadow:0 3px 0 #7b3519}
/* 街のミア：吹き出しで支度のクエストの進み具合。そろったら「よし！旅に出よう」 */
.town-mia{background:none;border:0;padding:0;overflow:visible}.town-mia>img{filter:drop-shadow(0 8px 6px #1d2c2140)}
.town-bubble{position:absolute;left:50%;bottom:100%;transform:translate(-50%,-6px);white-space:nowrap;font:700 13px/1.2 system-ui;color:#2d4a3c;background:#fffdf3;border:2px solid #fff;border-radius:16px;padding:7px 12px;box-shadow:0 4px 0 #d6c79f,0 8px 16px #29432c30}.town-bubble::after{content:'';position:absolute;left:50%;top:100%;transform:translateX(-50%);border:7px solid transparent;border-top-color:#fffdf3}
.town-mia.ready .town-bubble{background:#c6843b;color:#fffdf2;border-color:#e0a565;box-shadow:0 4px 0 #8a5a26,0 8px 16px #29432c30;animation:town-bubble-pop 1.4s ease-in-out infinite}.town-mia.ready .town-bubble::after{border-top-color:#c6843b}@keyframes town-bubble-pop{50%{transform:translate(-50%,-10px)}}

/* 次の旅の準備：ミアの吹き出し＋羊皮紙の旅のメモ（手書き風。フォントが読めないときは丸ゴシック） */
.town-memo-wrap{position:relative;margin:auto;width:min(560px,100%);max-height:100%;display:flex;flex-direction:column;gap:10px;padding:8px 0}
.town-memo-close{position:absolute;left:0;top:0;z-index:3;background:#fcf8e6;box-shadow:0 3px 0 #d6c79f}
.town-memo-mia{display:flex;align-items:flex-end;gap:10px;padding-left:56px}.town-memo-mia>img{width:64px;height:64px;border-radius:50%;background:#e9d9f0;border:3px solid #fffdf3;box-shadow:0 4px 0 #d6c79f;flex:none}
.town-memo-mia>p{position:relative;margin:0 0 14px;background:#fffdf3;border-radius:18px;padding:10px 16px;font-size:16px;line-height:1.5;font-weight:700;color:#3a4b3c;box-shadow:0 4px 0 #d6c79f}.town-memo-mia>p::before{content:'';position:absolute;left:-12px;bottom:10px;border:8px solid transparent;border-right-color:#fffdf3}
.town-memo{position:relative;overflow:auto;padding:28px 30px 22px;color:#4a3826;font-family:'Klee One','Hiragino Maru Gothic ProN',system-ui,sans-serif;font-weight:600;background:radial-gradient(ellipse at 30% 20%,#fbf1d6 0%,#f1dfb4 55%,#e2c78f 100%);border-radius:6px 10px 8px 12px;box-shadow:inset 0 0 40px #b08a4a55,inset 0 0 6px #8a6a3466,0 12px 28px #2b211540;transform:rotate(-.6deg)}
.town-memo::after{content:'';position:absolute;inset:0;pointer-events:none;border-radius:inherit;background:repeating-linear-gradient(transparent 0 35px,#a5844a22 35px 36px)}
.memo-tape{position:absolute;top:-10px;left:50%;width:110px;height:24px;transform:translateX(-50%) rotate(2deg);background:#f4ecd2cc;box-shadow:0 1px 3px #0002}
.memo-label{margin:0;font-size:13px;color:#8a6a3c;letter-spacing:.08em}
.town-memo h2{margin:2px 0 0;font-size:30px;line-height:1.2;color:#3b2a18}.memo-chapter{margin:2px 0 14px;font-size:14px;color:#7a5c36}
.memo-list{list-style:none;margin:6px 0 0;padding:0;display:grid;gap:6px}
.memo-list li{display:grid;grid-template-columns:28px 38px 1fr auto auto;align-items:center;gap:10px;font-size:18px}
.memo-list img{width:38px;height:38px}.memo-count{font-variant-numeric:tabular-nums}
.memo-box{width:24px;height:24px;border:2px solid #6b4f2e;border-radius:4px 6px 5px 3px;display:grid;place-items:center;color:#b0402a;font-size:22px;line-height:1;transform:rotate(-3deg)}
.memo-list li.ok b,.memo-list li.ok .memo-count{color:#8a7a62;text-decoration:line-through;text-decoration-color:#b0402a99}
.memo-list em{font-style:normal;color:#b0402a;font-size:15px}
.memo-shop{margin-top:18px;width:100%}
@media(max-height:540px) and (orientation:landscape){.town-memo{padding:18px 24px 14px}.town-memo h2{font-size:24px}.memo-list li{font-size:16px}.town-memo-mia>img{width:52px;height:52px}}

/* 街の TALK の道（チャンクマップ）。town-trail-v1.webp が無いあいだは後ろの川の絵が見える */
.talk-map-sheet[data-terrain=town] .cm-terrain-tile{background:url('/art/talk/town-trail-v1.webp') center/100% 100% no-repeat,url('/art/talk/river-trail-v2.webp') center/100% 100% no-repeat}
.memo-actions{display:flex;gap:10px;margin-top:18px}.memo-actions .memo-shop{margin-top:0;flex:1}

/* 地図：全体を見渡す道すじと、地点の状態（行った・次・まだ） */
.atlas-route{fill:none;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}.atlas-route.done{stroke:#c6843b;stroke-width:1.6}.atlas-route.ahead{stroke:#6c8174;stroke-width:1.1;stroke-dasharray:3 3;opacity:.7}
.atlas-pin.locked{opacity:.55}.atlas-pin.been circle.pin-core{fill:#c6843b}.atlas-pin.next circle.pin-core{fill:#b0402a}.atlas-pin.next .pin-pulse{fill:#b0402a55;animation:pin-next 1.6s ease-out infinite;transform-box:fill-box;transform-origin:center}@keyframes pin-next{0%{transform:scale(.6);opacity:1}100%{transform:scale(2.2);opacity:0}}
.site-hero{margin:-18px -20px 0;height:150px;overflow:hidden}.site-hero img{width:100%;height:100%;object-fit:cover;display:block}
.site-catch{margin:0;font-size:20px;font-weight:800;line-height:1.35;color:#2d4a3c}
.site-more summary{cursor:pointer;font-size:13px;color:#6d7d64}.site-more .site-description{margin-top:8px}
.atlas-pin:not(.current) .pin-label{display:none}
.atlas[data-region=world] .pin-label{font-size:12px;stroke-width:3.5}.atlas[data-region=world] .atlas-route.done{stroke-width:3}.atlas-sheet .sheet-body{display:flex;flex-direction:column;justify-content:center}
.atlas .atlas-pin.has-icon.state-locked{opacity:.8}
.atlas .atlas-pin .pin-icon{pointer-events:none}
.atlas .atlas-pin.current .pin-label{display:block;opacity:1}
.atlas .atlas-pin.next circle.pin-pulse{fill:#e5a34a;stroke:none;opacity:.5}
.stamp-gift{display:grid;gap:6px;padding:10px 12px}.stamp-gift span{display:flex;gap:6px}.stamp-gift img{width:56px;height:56px}.phone-title{display:block;font-size:11px;color:#b0402a;font-weight:700}.site-complete{margin-left:10px;font-size:12px;font-weight:700;color:#8a6a3c}.site-complete.done{color:#b0402a}

/* All artwork stays visible before collection; ownership never dims the previews. */
.stamp-shop-sheet .sheet-body{background:#fffdf8}
.stamp-collection-summary{padding:14px;background:#eef5ee;border-radius:16px;color:#36564a}
.stamp-collection-summary>div{display:flex;justify-content:space-between;align-items:center;gap:8px}
.stamp-collection-summary strong{font-size:24px;white-space:nowrap}
.stamp-collection-summary strong small{font-size:13px;font-weight:500}
.stamp-collection-summary meter{display:block;width:100%;height:10px;margin:10px 0;accent-color:#619985}
.stamp-collection-summary p{font-size:12px;margin:0;line-height:1.6}
.stamp-series-nav{display:flex;flex-wrap:wrap;gap:7px;margin:16px 0}
.stamp-series-nav a{padding:9px 10px;background:#f0ede4;border-radius:18px;font-size:12px;color:#405d4d;text-decoration:none}
.stamp-series{scroll-margin-top:12px;margin:22px 0}
.stamp-series>header{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-bottom:10px}
.stamp-series>header h2,.stamp-detail-title{margin:0;font-size:16px;line-height:1.5;text-align:left}
.stamp-series>header>span{font-size:12px;white-space:nowrap;color:#617568}
.stamp-set-list{display:grid;gap:14px}
.stamp-set-card{display:block;width:100%;min-width:0;padding:12px;border:1px solid #dedfd5;border-radius:16px;background:#fff;text-align:left;color:#344d42;box-shadow:0 2px 0 #e7e8df}
.stamp-set-heading,.stamp-detail-status{display:flex;justify-content:space-between;align-items:center;gap:8px;font-size:12px;margin-bottom:8px}
.stamp-ownership{display:inline-flex;align-items:center;gap:3px;padding:4px 8px;border-radius:12px;background:#f3eee5;color:#766950;font-size:11px;white-space:nowrap}
.stamp-ownership.owned{background:#e3f0e7;color:#37684d}
.stamp-ownership .icon{width:13px;height:13px}
.stamp-catalog-preview{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px;background:#fff}
.stamp-catalog-preview figure{margin:0;min-width:0;text-align:center}
.stamp-catalog-preview img{display:block;width:100%;height:auto;aspect-ratio:1;object-fit:contain;background:#fff}
.stamp-catalog-preview figcaption{font-size:11px;line-height:1.5;color:#53665a;overflow-wrap:anywhere}
.stamp-source{display:grid;gap:4px;margin-top:12px;padding-top:10px;border-top:1px solid #ebece5;font-size:12px;line-height:1.6}
.stamp-source>span,.stamp-source>small{color:#697767}
.stamp-source em{display:flex;align-items:center;justify-content:flex-end;gap:6px;font-size:12px;font-style:normal;color:#347763}
.stamp-source .icon{width:15px;height:15px}
.stamp-detail-status{margin:12px 0}
.stamp-detail-preview{grid-template-columns:repeat(2,minmax(0,1fr));padding:10px;border-radius:12px}
.stamp-acquisition{display:grid;grid-template-columns:4em minmax(0,1fr);gap:12px 10px;font-size:13px;line-height:1.7;margin:20px 0}
.stamp-acquisition dt{color:#74816e}.stamp-acquisition dd{margin:0}
.stamp-delivery-note{font-size:12px;line-height:1.7;color:#637160}
.chat-compose .sticker-shop-link{display:flex;align-items:center;gap:5px;margin-left:auto;padding:8px 12px;font-size:12px;color:#466956}
.sticker-shop-link .icon{width:15px;height:15px}
#toast.go{pointer-events:auto;cursor:pointer;padding-right:38px}#toast.go::after{content:'›';position:absolute;right:16px;top:50%;transform:translateY(-52%);font-size:22px;font-weight:700;color:#387c69}
.home-wallet .resource small{font-size:.75em;color:#8a9a80;font-weight:600}
/* Town departure and ticket duel: scoped to the town flow. */
.town-memo,.town-memo button,.rm-writing strong,.rm-word{font-family:'Hiragino Maru Gothic ProN','Hiragino Kaku Gothic ProN','Yu Gothic',system-ui,sans-serif}
.town-mia.ready .town-bubble{color:#60411d;background:linear-gradient(125deg,#fff8cb,#f6d36d 60%,#ffedaa);border-color:#fff4bd;box-shadow:0 4px 0 #c49a42,0 0 18px #ffe9a07a,0 8px 16px #29432c30;animation:town-ready-arrive .45s ease-out both}
.town-mia.ready .town-bubble::before{content:'✦';margin-right:6px;color:#aa702a}.town-mia.ready .town-bubble::after{border-top-color:#f6d36d}
@keyframes town-ready-arrive{from{opacity:0;transform:translate(-50%,0) scale(.9)}to{opacity:1;transform:translate(-50%,-6px) scale(1)}}
.travel-ticket{display:flex;gap:24px;align-items:stretch;transform:none;padding:26px;border-radius:18px;overflow:visible}.travel-ticket:after{background:none;border:1px solid #98784755;inset:8px}.ticket-stub{writing-mode:vertical-rl;transform:rotate(180deg);text-align:center;letter-spacing:.2em;font-size:12px;font-weight:800;color:#776048;border-left:2px dashed #a58c5b66;padding-left:18px;flex:none}.ticket-destination{min-width:0;flex:1}.ticket-destination h2{font-size:clamp(22px,4vw,32px);line-height:1.4;overflow-wrap:anywhere}.ticket-perforation{border-top:2px dashed #a58c5b66;margin:24px 0}.ticket-destination .primary{width:100%;font-size:17px}.ticket-pop .meet-pop-card{width:min(650px,94vw)}.ticket-pop .town-memo-mia{padding-left:0;margin:20px 0}.ticket-pop .ticket-event-image{display:block;width:100%;aspect-ratio:3/2;max-height:none;object-fit:cover;border-radius:20px}.ticket-pop .meet-pop-card>.primary{width:100%}
.ticket-game{position:relative;width:min(950px,100%);max-height:100%;overflow:auto;margin:auto;padding:20px 24px 28px;border-radius:30px;background:radial-gradient(ellipse at 50% 15%,#74708b66,transparent 65%),linear-gradient(145deg,#526c69f5,#55516ef5);color:#fff9e9;box-shadow:0 16px 60px #25353344;isolation:isolate}.ticket-game .play-head{position:relative;padding:0;gap:12px;margin:0 0 8px}.ticket-game .play-head>b{flex:1;font-size:18px}.ticket-game .play-head>span{font-size:15px;white-space:nowrap}.ticket-arena{display:grid;grid-template-columns:1fr 1fr;align-items:center;max-width:600px;margin:0 auto;height:230px}.ticket-thief{height:100%;min-height:0;display:grid;place-items:center}.ticket-thief img{width:100%;height:100%;max-height:230px;object-fit:contain;filter:drop-shadow(0 9px 5px #24223145)}.ticket-thief.normal img{animation:ticket-hover 2.3s ease-in-out infinite}.ticket-thief.hurt img{animation:ticket-hit .35s ease-out}.ticket-thief.happy img{animation:ticket-hop .55s ease-out}.ticket-call{display:grid;place-items:center;gap:4px}.ticket-game .ticket-ring{position:relative;width:170px;height:170px;display:grid;place-items:center;border-radius:50%;padding:20px;background:conic-gradient(#efd580 var(--remaining),#ffffff25 0);box-shadow:0 4px 0 #31334055}.ticket-ring:before{content:'';position:absolute;inset:9px;border-radius:50%;background:#fff9e8}.ticket-game .ticket-ring>b{position:relative;font-size:clamp(16px,2.8vw,25px);line-height:1.4;color:#36594e;overflow-wrap:anywhere;text-align:center;max-height:100%;overflow:auto}.ticket-verdict{height:28px;margin:0;color:#fff5c7;font-size:22px;font-weight:800;letter-spacing:.04em}.ticket-score{display:grid;gap:6px;margin:5px 0 18px;padding:12px;border-radius:16px;background:#263b405e}.ticket-score>div{display:flex;gap:10px;align-items:center}.ticket-score>div>b{width:66px;flex:none;font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ticket-score strong{font-size:18px;margin-left:7px;color:#ffe8a5}.ticket-score>div>span{display:grid;grid-template-columns:repeat(25,minmax(0,1fr));gap:3px;flex:1}.ticket-score i{display:grid;place-items:center;aspect-ratio:1;border:1px solid #f4e9c048;border-radius:50%;font-size:clamp(9px,1.4vw,16px);font-style:normal;color:#e8dcc0}.ticket-score i.current{border-color:#fff3bd;background:#fff3bd22}.ticket-score i.won{background:#f9e7a5;color:#3c634f;border-color:#fff3bd;font-weight:900}.ticket-score i.lost{opacity:.5}.ticket-cards{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:9px}.ticket-game .ticket-cards .puzzle-tile{position:relative;width:100%;height:auto;min-height:58px;margin:0;padding:9px 5px;border:2px solid #f6e5ac;border-radius:15px;background:linear-gradient(#fffdf0,#efe8cd);box-shadow:0 5px 0 #c7ad65;font-size:clamp(12px,1.8vw,19px);line-height:1.15;color:#345b50;overflow-wrap:anywhere;word-break:normal}.ticket-game .ticket-cards .puzzle-tile:disabled{opacity:.72}.ticket-game .ticket-cards .puzzle-tile:not(:disabled):active{transform:translateY(3px);box-shadow:0 2px 0 #c7ad65}.ticket-reconnect{color:white;margin:12px auto 0}
@keyframes ticket-hover{50%{transform:translateY(-7px) rotate(1deg)}}@keyframes ticket-hit{25%{transform:translateX(-14px) rotate(-7deg)}70%{transform:translateX(5px)}100%{transform:none}}@keyframes ticket-hop{40%{transform:translateY(-15px) rotate(4deg)}100%{transform:none}}
@media(max-width:520px){.ticket-game{padding:12px 10px 20px;border-radius:22px}.ticket-game .play-head>b{font-size:14px}.ticket-arena{height:180px}.ticket-thief img{max-height:175px}.ticket-game .ticket-ring{width:136px;height:136px;padding:18px}.ticket-score{padding:8px 5px}.ticket-score>div{gap:4px}.ticket-score>div>b{width:42px;font-size:9px}.ticket-score strong{margin-left:3px;font-size:13px}.ticket-score>div>span{gap:2px}.ticket-cards{gap:7px 5px}.ticket-game .ticket-cards .puzzle-tile{min-height:54px;border-radius:10px;font-size:12px}.travel-ticket{gap:14px;padding:22px 16px}.ticket-stub{padding-left:12px}}
@media(max-height:600px) and (min-width:600px){.ticket-game{padding:10px 18px 16px}.ticket-arena{height:145px}.ticket-thief img{max-height:145px}.ticket-game .ticket-ring{width:115px;height:115px;padding:16px}.ticket-game .ticket-ring>b{font-size:17px}.ticket-verdict{height:20px;font-size:16px}.ticket-score{margin:0 0 10px;padding:7px}.ticket-game .ticket-cards .puzzle-tile{min-height:40px;padding:5px;font-size:14px}}
@media(prefers-reduced-motion:reduce){.town-mia.ready .town-bubble,.ticket-thief img{animation:none!important}}
/* All 25 choices stay in view while the clock is running. */
.ticket-game{height:min(820px,calc(100dvh - 32px));display:grid;grid-template-rows:auto minmax(100px,1fr) auto minmax(0,1.5fr);gap:8px;overflow:hidden}.ticket-game .play-head{margin:0}.ticket-arena{height:100%;width:100%;min-height:0}.ticket-thief img{max-height:100%;min-height:0}.ticket-score{margin:0}.ticket-cards{min-height:0;grid-template-rows:repeat(5,minmax(0,1fr))}.ticket-game .ticket-cards .puzzle-tile{min-height:0;font-size:clamp(11px,1.8vw,19px);padding:4px}.ticket-reconnect{position:absolute;bottom:8px;left:50%;transform:translateX(-50%);background:#425b54;border-radius:12px;padding:8px 16px}.ticket-call{max-height:100%}.ticket-game .ticket-ring{width:min(170px,20dvh);height:min(170px,20dvh)}
@media(max-width:520px){.ticket-game{height:calc(100dvh - 20px);grid-template-rows:auto minmax(110px,.8fr) auto minmax(0,1.5fr)}.ticket-arena{height:100%}.ticket-game .ticket-ring{width:128px;height:128px}.ticket-game .ticket-cards .puzzle-tile{min-height:0;font-size:12px}}
.ticket-game .ticket-ring>b{padding:0;width:100%;font-size:clamp(15px,2vw,24px)}.ticket-game .ticket-ring{width:clamp(90px,17dvh,160px);height:clamp(90px,17dvh,160px)}.ticket-verdict{font-size:18px;height:24px;line-height:24px}.ticket-game .ticket-call{min-height:0}.ticket-game .ticket-score i:nth-child(5n){border-color:#f4e9c08c}
.ticket-cards button>span{display:block;width:100%;line-height:1.15;overflow-wrap:anywhere}
.ticket-pop .meet-pop-card{position:relative}.ticket-pop .ticket-dismiss{position:absolute;right:8px;top:8px;background:#fff9e8;width:34px;min-width:34px;height:34px}
/* Responsive duel: prioritize readable choices and touch targets. */
#content:has(>.ticket-game){padding:max(12px,env(safe-area-inset-top)) max(12px,env(safe-area-inset-right)) max(12px,env(safe-area-inset-bottom)) max(12px,env(safe-area-inset-left))}
.ticket-game{grid-template-columns:minmax(0,1fr);width:min(1100px,100%);height:100%;max-height:1000px;grid-template-rows:44px minmax(110px,1fr) auto minmax(250px,1.8fr);padding:18px 22px 24px;gap:12px}
.ticket-game .play-head .icon-button{width:44px;min-width:44px;height:44px}.ticket-game .play-head>b{line-height:1.3}.ticket-game .ticket-cards .puzzle-tile{font-size:clamp(16px,2vw,22px);border-radius:14px;padding:6px;touch-action:manipulation}.ticket-game .ticket-cards .puzzle-tile:disabled{opacity:.88}.ticket-cards{gap:10px}.ticket-thief img{max-height:240px}.ticket-score>div>span{min-width:0;position:relative}.ticket-score>div>b{width:70px;font-size:12px}.ticket-score strong{font-size:21px}.ticket-game .ticket-ring{width:clamp(120px,18dvh,190px);height:clamp(120px,18dvh,190px)}.ticket-game .ticket-ring>b{font-size:clamp(18px,2.5vw,28px)}
@media(max-width:600px){
 #content:has(>.ticket-game){padding:max(6px,env(safe-area-inset-top)) max(6px,env(safe-area-inset-right)) max(8px,env(safe-area-inset-bottom)) max(6px,env(safe-area-inset-left))}
 .ticket-game{padding:10px 10px 14px;gap:8px;border-radius:20px;grid-template-rows:40px minmax(100px,.8fr) 64px minmax(396px,2.7fr)}
 .ticket-game .play-head{gap:8px}.ticket-game .play-head>b{font-size:15px}.ticket-game .play-head>span{font-size:13px}.ticket-game .play-head .icon-button{width:40px;min-width:40px;height:40px}
 .ticket-arena{max-width:330px}.ticket-thief img{max-height:160px}.ticket-game .ticket-ring{width:110px;height:110px;padding:16px}.ticket-game .ticket-ring>b{font-size:19px}.ticket-verdict{font-size:14px;line-height:20px;height:20px}
 .ticket-score{padding:6px 8px;gap:4px}.ticket-score>div{gap:6px;min-height:0}.ticket-score>div>b{width:55px;font-size:11px}.ticket-score strong{font-size:17px;margin-left:4px}
 .ticket-score>div>span{display:flex;gap:4px;overflow-x:auto;scrollbar-width:none;overscroll-behavior-x:contain}.ticket-score i{flex:0 0 22px;width:22px;height:22px;font-size:16px}.ticket-score i.current{box-shadow:inset 0 0 0 1px #fff3bd}
 .ticket-cards{grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:repeat(9,minmax(0,1fr));gap:7px}.ticket-game .ticket-cards .puzzle-tile{font-size:15px;line-height:1.15;padding:4px;border-radius:11px;box-shadow:0 3px 0 #c7ad65}
 .ticket-cards>.puzzle-tile:last-child:nth-child(3n + 1){grid-column:2}
 .ticket-check .town-memo-mia{padding-left:40px;gap:8px}.ticket-check .town-memo-mia>img{width:44px;height:44px}.ticket-check .town-memo-mia>p{font-size:14px;padding:10px}.ticket-pop .meet-pop-card{max-height:calc(100dvh - 28px);overflow-y:auto}.ticket-pop .town-memo-mia>p{font-size:14px}.ticket-pop .town-memo-mia>img{width:44px;height:44px}
}
@media(max-width:600px) and (max-height:759px){
 .ticket-game{grid-template-rows:40px minmax(92px,.7fr) 60px minmax(294px,2.8fr);gap:6px;padding:8px 8px 12px}.ticket-cards{grid-template-columns:repeat(4,minmax(0,1fr));grid-template-rows:repeat(7,minmax(0,1fr));gap:6px}.ticket-game .ticket-cards .puzzle-tile{font-size:14px}.ticket-cards>.puzzle-tile:last-child:nth-child(3n + 1){grid-column:auto}.ticket-game .ticket-ring{width:86px;height:86px;padding:12px}.ticket-game .ticket-ring>b{font-size:16px}.ticket-thief img{max-height:108px}.ticket-verdict{font-size:12px;height:17px;line-height:17px}
}
@media(orientation:landscape) and (max-height:600px) and (min-width:601px){
 .ticket-game{display:grid;grid-template-columns:minmax(150px,24%) minmax(0,1fr);grid-template-rows:40px minmax(100px,1fr) 60px;gap:8px 14px;padding:10px 12px 16px;border-radius:20px}
 .ticket-game .play-head{grid-column:1/-1}.ticket-game .play-head>b{font-size:16px}.ticket-arena{grid-column:1;grid-row:2;display:flex;position:relative;align-items:flex-end;justify-content:center}.ticket-thief{position:absolute;left:0;top:0;width:48%;height:65%}.ticket-thief img{max-height:110px}.ticket-call{margin-left:35%;align-self:center}.ticket-game .ticket-ring{width:90px;height:90px;padding:12px}.ticket-game .ticket-ring>b{font-size:17px}.ticket-verdict{font-size:12px;height:18px;line-height:18px}
 .ticket-score{grid-column:1;grid-row:3;padding:5px;gap:4px}.ticket-score>div{gap:4px}.ticket-score>div>b{width:45px;font-size:10px}.ticket-score strong{font-size:16px;margin-left:3px}.ticket-score>div>span{display:flex;overflow-x:auto;scrollbar-width:none;gap:4px}.ticket-score i{flex:0 0 20px;width:20px;height:20px;font-size:14px}
 .ticket-cards{grid-column:2;grid-row:2/4;gap:7px;grid-template-columns:repeat(5,minmax(0,1fr));grid-template-rows:repeat(5,minmax(0,1fr))}.ticket-game .ticket-cards .puzzle-tile{font-size:14px;padding:3px;border-radius:10px;box-shadow:0 3px 0 #c7ad65}
}

.ticket-game>*{min-width:0}.ticket-score>div{min-width:0}
@media(max-width:600px) and (max-height:620px){.ticket-game{grid-template-rows:40px minmax(72px,.7fr) 56px minmax(344px,2.8fr)}.ticket-game .ticket-ring{width:66px;height:66px;padding:11px}.ticket-game .ticket-ring>b{font-size:14px}.ticket-thief img{max-height:80px}.ticket-verdict{height:14px;line-height:14px;font-size:11px}.ticket-score{padding:4px 6px}.ticket-game .ticket-cards .puzzle-tile{font-size:13px}}
/* Fieldwork opens on the map; the preparation page remains a separate view. */
.field-map-wrap{position:relative;width:min(640px,100%);height:min(940px,100%);display:flex;flex-direction:column;gap:10px;min-height:0;padding:6px 0}
.field-map-wrap>.icon-button{position:absolute;left:0;top:6px;z-index:2;background:#fff9e8;width:44px;height:44px;min-width:44px}
.field-map-wrap .fw-guide{padding-left:54px;flex:none;align-items:center}.field-map-wrap .fw-guide>p{font-size:16px;margin:0 0 5px;line-height:1.5}.field-map-wrap .fw-guide>img{width:56px;height:56px}
.field-map-wrap .field-parchment{width:100%;height:auto;flex:1;min-height:0;border:9px solid #ead8ad;border-radius:14px 20px 16px 12px;background:#f2e4c3;box-shadow:0 7px 0 #ae9365,0 16px 30px #29342a33}
.fw-map-status{display:grid;grid-template-columns:minmax(150px,.9fr) minmax(0,1.3fr);gap:20px;padding:14px 16px 16px;background:radial-gradient(ellipse at top,#fff5d9,#ead7ae);border-bottom:1px solid #b3966655;flex:none}
.fw-partner{display:flex;align-items:center;gap:10px;padding:0;background:none;border:0;color:#40584b;text-align:left;cursor:pointer;min-width:0}.fw-partner>img{width:58px;height:58px;object-fit:cover;border-radius:50%;border:3px solid #fff7df}.fw-partner>span{display:grid;gap:4px}.fw-partner b{font-size:16px}.fw-partner small{font-size:11px;line-height:1.4}.fw-partner:hover>img{border-color:#be8846}
.fw-year{min-width:0;display:grid;gap:5px;color:#40584b;text-align:left}.fw-year>div{display:flex;justify-content:space-between;align-items:baseline;gap:8px;flex-wrap:wrap}.fw-year b{font-size:16px}.fw-year span{font-size:23px;font-weight:700;white-space:nowrap}.fw-year small{font-size:11px}.fw-year progress{display:block;width:100%;height:8px;border:0;border-radius:8px;overflow:hidden;background:#d7c7a6;accent-color:#4c887d}.fw-year progress::-webkit-progress-bar{background:#d7c7a6}.fw-year progress::-webkit-progress-value{background:#4c887d;border-radius:8px}
.field-parchment .cm-body{border-radius:6px;position:relative}.field-parchment .cm{padding-top:45px;padding-bottom:45px}
.fw-team-sheet .fw-year{background:#f4ead2;padding:16px;border-radius:16px}.fw-team-intro{font-size:15px;margin:20px 0 12px}.fw-members{display:grid;gap:10px}.fw-member{display:flex;align-items:center;gap:12px;width:100%;padding:12px;background:#fffdf2;border:2px solid #e2e3cf;border-radius:16px;color:#40584b;text-align:left;cursor:pointer}.fw-member.selected{border-color:#498475;background:#e6f0df}.fw-member>img{width:64px;height:64px;object-fit:cover;border-radius:50%;flex:none}.fw-member>span{display:grid;gap:6px;flex:1;min-width:0}.fw-member b{display:flex;justify-content:space-between;gap:8px;font-size:16px}.fw-member em{font-size:11px;font-style:normal;color:#387c69}.fw-member small{font-size:12px;line-height:1.5}.fw-member meter{width:100%;height:9px}.fw-team-links{display:flex;gap:10px;margin:20px 0 4px}.fw-team-links button{flex:1;min-height:44px}
@media(max-width:600px){.field-map-wrap{gap:7px}.field-map-wrap .fw-guide{gap:7px;padding-left:48px}.field-map-wrap .fw-guide>img{width:42px;height:42px;border-width:2px}.field-map-wrap .fw-guide>p{font-size:13px;padding:8px 10px}.field-map-wrap .field-parchment{border-width:6px}.fw-map-status{grid-template-columns:minmax(105px,.8fr) minmax(0,1.2fr);gap:10px;padding:10px}.fw-partner{gap:6px;flex-direction:column;align-items:flex-start}.fw-partner>img{width:40px;height:40px}.fw-partner>span{gap:2px}.fw-partner b,.fw-year b{font-size:13px}.fw-partner small{font-size:10px}.fw-year span{font-size:20px}.fw-member>img{width:48px;height:48px}.fw-member{gap:8px;padding:10px}}
@media(orientation:landscape) and (max-height:600px){.field-map-wrap{width:min(960px,100%)}.field-map-wrap .fw-guide>img{width:38px;height:38px}.field-map-wrap .fw-guide>p{font-size:13px;padding:7px 12px}.fw-map-status{padding:8px 12px;grid-template-columns:190px 1fr}.fw-partner>img{width:42px;height:42px}.fw-year{grid-template-columns:1fr auto;gap:3px 12px}.fw-year>div{grid-column:1/-1}.fw-year progress{align-self:center}.fw-year>small:first-of-type{display:none}.fw-year span{font-size:18px}}

#game .phone-sheet.fw-team-sheet{height:min(880px,100%);max-height:100%}.fw-team-sheet .sheet-foot .fw-team-links{margin:10px 17px 0;flex:none}.fw-team-sheet .sheet-foot{flex:none}
#game:not([data-screen=discovery]) .phone-sheet.fw-team-sheet{height:min(880px,100%);max-height:100%}.fw-team-sheet .sheet-foot .fw-team-links{width:calc(100% - 34px);align-self:center}.fw-team-sheet .fw-team-links button{min-width:0;white-space:nowrap;padding:10px 12px}

/* Compact map status; the speaker portrait is also the party selector. */
.field-map-wrap .fw-map-status{display:block;padding:7px 12px}
.fw-progress-line{display:flex;align-items:center;gap:12px;min-width:0;min-height:26px;color:#40584b;white-space:nowrap;font-size:14px}
.fw-progress-line b{font-size:14px}.fw-progress-line small{font-size:11px}.fw-progress-line>span{font-size:17px;font-weight:700;margin-left:auto}.fw-progress-line progress{flex:1;min-width:20px;width:70px;height:5px;appearance:none;border:0;border-radius:4px;background:#d7c7a6;overflow:hidden}.fw-progress-line progress::-webkit-progress-bar{background:#d7c7a6}.fw-progress-line progress::-webkit-progress-value{background:#4c887d}.fw-progress-line progress::-moz-progress-bar{background:#4c887d}
.fw-guide-member{position:relative;display:block;flex:none;width:56px;height:56px;padding:0;border:3px solid #fffdf3;border-radius:50%;background:#ede5d4;box-shadow:0 3px 0 #c8b88d;cursor:pointer;color:#40584b}.fw-guide-member>img{display:block;width:100%;height:100%;object-fit:cover;border-radius:50%}.fw-guide-member>small{position:absolute;bottom:-2px;right:-3px;width:18px;height:18px;display:grid;place-items:center;border-radius:50%;background:#fff9e8;font-size:16px;line-height:1;box-shadow:0 1px 3px #36433233}.fw-guide-member:focus-visible{outline:3px solid #448775;outline-offset:3px}
@media(max-width:600px){.field-map-wrap .fw-map-status{padding:5px 8px}.fw-progress-line{gap:8px;font-size:12px}.fw-progress-line b{font-size:12px}.fw-progress-line>span{font-size:15px}.fw-progress-line .fw-section{display:none}.fw-guide-member{width:44px;height:44px;border-width:2px}}
@media(orientation:landscape) and (max-height:600px){.fw-guide-member{width:40px;height:40px;border-width:2px}.field-map-wrap .fw-map-status{padding:4px 12px}}
/* Ticket duel: three nine-question rounds, with readable 3 x 3 choices. */
.ticket-game.ticket-rounds{grid-template-rows:44px minmax(110px,1fr) auto minmax(230px,1.5fr)}
.ticket-rounds .play-head>span{display:grid;gap:2px;text-align:right;white-space:nowrap}.ticket-rounds .play-head>span>small{font-size:11px}
.ticket-rounds .ticket-score>div>span{display:grid;grid-template-columns:repeat(9,minmax(0,1fr));overflow:visible;gap:6px}.ticket-rounds .ticket-score i{width:auto;height:auto;max-height:32px;aspect-ratio:1;font-size:17px}.ticket-rounds .ticket-score>div>b{width:90px}.ticket-rounds .ticket-score strong>small{font-size:11px;margin-left:5px;white-space:nowrap}
.ticket-rounds .ticket-cards{position:relative;grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:repeat(3,minmax(0,1fr));gap:10px}.ticket-rounds .ticket-cards>.puzzle-tile:last-child{grid-column:auto}.ticket-game.ticket-rounds .ticket-cards .puzzle-tile{font-size:clamp(16px,2.2vw,24px)}
.ticket-game .ticket-cards .puzzle-tile.ticket-used{background:#818c8b;color:#d6ddda;border-color:#9aa8a2;box-shadow:0 3px 0 #576961;opacity:.55}
.ticket-round-break{position:absolute;inset:0;z-index:4;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;background:#344d4ef2;border-radius:16px;color:#fff9e8;text-align:center;padding:18px}.ticket-round-break>b{font-size:40px}.ticket-round-break .primary{min-height:48px}
@media(max-width:600px){.ticket-game.ticket-rounds{grid-template-rows:40px minmax(100px,.8fr) auto minmax(240px,2fr);gap:8px}.ticket-rounds .ticket-cards{gap:8px}.ticket-game.ticket-rounds .ticket-cards .puzzle-tile{font-size:16px}.ticket-rounds .ticket-score>div>b{width:66px}.ticket-rounds .ticket-score i{font-size:12px}.ticket-rounds .ticket-score>div>span{gap:3px}.ticket-rounds .ticket-score strong{font-size:16px}.ticket-rounds .ticket-score strong>small{font-size:10px;margin-left:3px}}
@media(orientation:landscape) and (max-height:600px) and (min-width:601px){.ticket-game.ticket-rounds{grid-template-rows:40px minmax(100px,1fr) 60px}.ticket-rounds .ticket-score>div>b{width:46px}.ticket-rounds .ticket-score>div>span{gap:2px}.ticket-rounds .ticket-score i{font-size:9px}.ticket-rounds .ticket-score strong>small{display:block;font-size:9px;margin:0}.ticket-rounds .ticket-cards{grid-template-rows:repeat(3,minmax(0,1fr))}}
.ticket-rounds .ticket-verdict{height:auto;min-height:24px;line-height:1.3;max-width:360px;overflow-wrap:anywhere;font-size:clamp(14px,2vw,22px)}
.ticket-game.ticket-outcome{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;text-align:center;color:#fff9e8;padding:24px}.ticket-outcome>img{height:min(30dvh,260px);max-width:70%;object-fit:contain}.ticket-outcome h1{margin:0;font-size:clamp(38px,8vw,76px);font-weight:900;line-height:1.1;color:#fff0ad}.ticket-outcome.lost h1{color:#d9d4e9}.ticket-outcome>p{font-size:32px;margin:0}.ticket-outcome>.primary{margin-top:10px;min-height:48px}.ticket-outcome>span{font-size:16px}
.ticket-rounds .ticket-score strong{display:inline-block;vertical-align:middle;line-height:1.2}.ticket-rounds .ticket-score strong>small{display:block;margin:2px 0 0;font-weight:400;opacity:.8}
/* Departure popup: keep art full width, inset dialogue and actions together. */
.ticket-pop .meet-pop-card{padding:0;gap:0;overflow-x:hidden}.ticket-pop .ticket-event-image{flex:none;border-radius:20px 20px 0 0}.ticket-popup-body{padding:24px;flex:none;min-width:0}.ticket-pop .ticket-popup-body .town-memo-mia{padding:0;margin:0 0 22px;align-items:center;gap:14px}.ticket-pop .ticket-popup-body .town-memo-mia>p{margin:0;padding:14px 18px;min-width:0;overflow-wrap:anywhere;line-height:1.6}.ticket-popup-body>.primary{display:block;box-sizing:border-box;width:100%;max-width:none;margin:0;padding:14px 20px;min-height:48px;white-space:normal}
@media(max-width:600px){.ticket-popup-body{padding:18px}.ticket-pop .ticket-popup-body .town-memo-mia{gap:10px;margin-bottom:20px}.ticket-pop .ticket-popup-body .town-memo-mia>p{padding:12px 14px}.ticket-pop .ticket-popup-body .town-memo-mia>img{width:44px;height:44px}}
/* Ticket chase: a street arena and a compact expedition score ledger. */
.ticket-game.ticket-stage{background:linear-gradient(135deg,#254f52f5,#393b54f7);border:1px solid #fff3d34a;box-shadow:0 16px 50px #172f4266;padding:16px 20px 22px;gap:12px;grid-template-rows:56px minmax(150px,1fr) auto minmax(220px,1.15fr)}
.ticket-stage .play-head>b{font-size:20px;line-height:1.4}.ticket-eyebrow{display:block;font-size:10px;letter-spacing:.22em;color:#bbded2}.ticket-stage .play-head>span{background:#a95840;color:#fff9e9;border:1px solid #f6b98d80;border-radius:4px 14px 4px 14px;padding:5px 16px;gap:0;box-shadow:0 3px 0 #572f35}.ticket-stage .play-head>span>small{font-size:9px;letter-spacing:.16em}.ticket-stage .play-head em{font-style:normal;font-size:25px;font-weight:800;line-height:1.1}.ticket-stage .play-head em small{font-size:12px;opacity:.8}
.ticket-stage .ticket-arena{position:relative;max-width:none;border-radius:18px;overflow:hidden;background:linear-gradient(90deg,#193e4140,#1b39439c),url('/art/town/day.png') center 65%/cover;border:1px solid #fff0ce4a;box-shadow:inset 0 -35px 40px #173b4480;grid-template-columns:1fr 1fr;padding:8px 12%;gap:15px}
.ticket-stage .ticket-thief{position:relative;min-width:0;padding-bottom:17px}.ticket-stage .ticket-thief:before{content:'';position:absolute;bottom:14px;left:20%;width:60%;height:12%;border-radius:50%;background:#172d3766;filter:blur(4px)}.ticket-stage .ticket-thief img{position:relative;z-index:1;max-height:245px}.ticket-foe-label{position:absolute;bottom:3px;z-index:2;background:#3a3c4bea;color:#fff6df;font-size:11px;padding:3px 16px;border-radius:4px;border:1px solid #cebca96b;letter-spacing:.1em}
.ticket-stage .ticket-call{gap:4px;position:relative}.ticket-question-count{font-size:11px;font-weight:700;background:#29464bd9;border-radius:20px;padding:3px 12px;color:#fff9e7}.ticket-stage .ticket-ring{background:conic-gradient(#91d9c3 var(--remaining),#fff6df40 0);box-shadow:0 5px 0 #173c4855,0 0 0 3px #f9eed640}.ticket-stage .ticket-verdict{color:#fffdf0;text-shadow:0 2px 3px #193638;font-size:18px}
.ticket-stage .ticket-ledger{padding:10px 14px 12px;gap:7px;background:linear-gradient(115deg,#fff7dc,#eee2be);border:1px solid #fff6db;border-radius:5px 16px 5px 16px;color:#355c57;box-shadow:0 4px 0 #ad9a73}
.ticket-ledger-head{display:flex;justify-content:space-between;align-items:center;gap:10px;border-bottom:1px dashed #a69c7a;padding-bottom:7px;font-size:12px;font-weight:800}.ticket-ledger-head>span small{margin-left:8px;font-size:10px;font-weight:400}.ticket-series{display:flex;gap:14px}.ticket-series>span{display:flex;align-items:center;gap:4px;font-size:10px;white-space:nowrap}.ticket-stage .ticket-series i{width:20px;height:20px;font-size:10px;aspect-ratio:1;border-radius:5px;border:1px solid #a49e8666;color:#888573;background:#dbd3b5}.ticket-stage .ticket-series i.claimed{background:#357e70;border-color:#357e70;color:white;box-shadow:0 2px 0 #25554b}.ticket-stage .ticket-series>span:last-child i.claimed{background:#ac6048;border-color:#ac6048;box-shadow:0 2px 0 #724031}.ticket-stage .ticket-series i.missed{opacity:.4}
.ticket-stage .ticket-score-row>b{display:flex;align-items:center;justify-content:space-between;width:90px;font-size:12px;padding-right:12px}.ticket-stage .ticket-score strong{color:#33796a;font-size:22px;margin:0}.ticket-stage .ticket-score-row.rival strong{color:#a65b47}.ticket-stage .ticket-score-row>span{gap:8px}.ticket-stage .ticket-score-row i{justify-self:center;width:28px;height:28px;max-height:none;border:1px solid #a99e7c80;color:#9a927b;background:#e4ddc7;font-size:11px;border-radius:7px;transform:rotate(-3deg)}.ticket-stage .ticket-score-row i.won{color:#fffdf1;background:#3c8b79;border:1px solid #276456;font-size:19px;box-shadow:0 2px 0 #256657}.ticket-stage .ticket-score-row.rival i.won{background:#b66a50;border-color:#984b37;box-shadow:0 2px 0 #884b3b}.ticket-stage .ticket-score-row i.current{outline:2px solid #387c70;outline-offset:1px;background:#fff9e8;color:#355c57}.ticket-stage .ticket-score-row i.lost{opacity:.45;font-size:17px}
.ticket-stage .ticket-cards{gap:11px}.ticket-game.ticket-stage .ticket-cards .puzzle-tile{border:1px solid #fff7dd;border-left:5px solid #76afa1;border-radius:6px 14px 6px 14px;padding:10px;background:linear-gradient(115deg,#fffcef,#eee7d3);box-shadow:0 4px 0 #a9a18a;font-size:clamp(16px,2.1vw,23px)}.ticket-game.ticket-stage .ticket-cards .ticket-used{background:#516665;border-color:#758785;color:#acb9b3;box-shadow:0 2px 0 #294542;opacity:.6}
.ticket-round-flash{position:absolute;inset:0;z-index:6;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:8px;pointer-events:none;background:radial-gradient(ellipse,#193d447a,transparent 70%);text-align:center;text-shadow:0 4px 0 #23504e,0 8px 24px #112e42;animation:ticket-result-hit .32s cubic-bezier(.2,.8,.2,1) both;color:#fff9e4}.ticket-round-flash>b{font-size:clamp(46px,10vw,104px);font-weight:900;line-height:1.1;letter-spacing:-.03em;transform:rotate(-6deg);-webkit-text-stroke:1px #fff9e4}.ticket-round-flash>small{font-size:14px;letter-spacing:.24em}.ticket-round-flash>span{font-size:34px;font-weight:800;margin-top:12px}.ticket-round-flash>em{font-style:normal;font-size:13px}.ticket-round-flash.lose{color:#e0d9f4;text-shadow:0 4px 0 #49405e,0 8px 24px #182634}.ticket-round-flash.lose>b{-webkit-text-stroke-color:#e0d9f4}
@keyframes ticket-result-hit{from{opacity:0;transform:translateY(16px) scale(.86)}to{opacity:1;transform:none}}
@media(max-width:600px){.ticket-game.ticket-stage{padding:10px 10px 16px;gap:10px;grid-template-rows:48px minmax(135px,1fr) auto minmax(230px,1.45fr)}.ticket-stage .play-head{gap:8px}.ticket-stage .play-head>b{font-size:14px}.ticket-stage .play-head>span{padding:5px 10px}.ticket-stage .play-head em{font-size:22px}.ticket-eyebrow{font-size:8px}.ticket-stage .ticket-arena{padding:6px 6%;gap:4px}.ticket-stage .ticket-ring{width:108px;height:108px;padding:17px}.ticket-stage .ticket-thief img{max-height:180px}.ticket-stage .ticket-verdict{font-size:13px;min-height:18px}.ticket-stage .ticket-ledger{padding:8px;gap:6px}.ticket-ledger-head{gap:4px;align-items:flex-start;font-size:10px}.ticket-ledger-head>span small{display:block;margin:2px 0 0;font-size:9px}.ticket-series{gap:7px}.ticket-series>span{font-size:9px;gap:3px}.ticket-stage .ticket-series i{width:16px;height:18px;font-size:9px}.ticket-stage .ticket-score-row>b{width:51px;padding-right:3px;font-size:10px}.ticket-stage .ticket-score strong{font-size:17px}.ticket-stage .ticket-score-row>span{gap:3px}.ticket-stage .ticket-score-row i{width:22px;height:22px;font-size:9px}.ticket-stage .ticket-score-row i.won{font-size:15px}.ticket-stage .ticket-cards{gap:9px}.ticket-game.ticket-stage .ticket-cards .puzzle-tile{padding:6px;border-left-width:3px;font-size:16px}}
@media(max-width:600px) and (max-height:700px){.ticket-game.ticket-stage{grid-template-rows:44px minmax(108px,1fr) auto minmax(180px,1.4fr);gap:7px}.ticket-stage .ticket-ring{width:80px;height:80px;padding:14px}.ticket-stage .ticket-thief img{max-height:110px}.ticket-foe-label{font-size:9px}.ticket-stage .ticket-question-count{font-size:9px}.ticket-stage .ticket-ledger{gap:4px}}
@media(orientation:landscape) and (max-height:600px) and (min-width:601px){.ticket-game.ticket-stage{grid-template-columns:minmax(260px,38%) minmax(0,1fr);grid-template-rows:44px minmax(90px,1fr) 108px;padding:8px 12px 14px;gap:8px}.ticket-stage .ticket-arena{padding:4px;gap:0}.ticket-stage .ticket-thief{position:relative;left:auto;top:auto;width:100%;height:100%;padding-bottom:15px}.ticket-stage .ticket-thief img{max-height:125px}.ticket-stage .ticket-call{margin:0}.ticket-stage .ticket-ring{width:72px;height:72px;padding:13px}.ticket-stage .ticket-verdict{font-size:11px;min-height:14px}.ticket-stage .ticket-question-count{font-size:9px}.ticket-stage .ticket-ledger{padding:6px;gap:4px}.ticket-ledger-head{font-size:9px;gap:4px;padding-bottom:4px}.ticket-ledger-head>span small{display:none}.ticket-series{gap:5px}.ticket-series>span{font-size:8px;gap:2px}.ticket-stage .ticket-series i{width:14px;height:16px;font-size:8px}.ticket-stage .ticket-score-row>b{width:43px;font-size:9px;padding-right:2px}.ticket-stage .ticket-score strong{font-size:16px}.ticket-stage .ticket-score-row>span{gap:2px}.ticket-stage .ticket-score-row i{width:19px;height:19px;font-size:9px}.ticket-stage .ticket-score-row i.won{font-size:13px}.ticket-foe-label{font-size:9px;padding:2px 8px}.ticket-game.ticket-stage .ticket-cards .puzzle-tile{font-size:17px}}
@media(prefers-reduced-motion:reduce){.ticket-round-flash{animation:none}}
@media(max-width:600px){.ticket-stage .ticket-score-row i{width:min(22px,100%)}}
@media(orientation:landscape) and (max-height:600px) and (min-width:601px){.ticket-stage .ticket-ring{width:90px;height:90px}.ticket-stage .ticket-ring>b{font-size:15px}}
.ticket-stage .ticket-cards button>span{overflow-wrap:normal;word-break:normal}

/* Grammar uses the original game's isolated document, not a second skin. */
#content:has(.grammar-frame-host){padding:0;background:#f4ecd6;overflow:hidden}
.grammar-frame-host{width:100%;height:100%;min-height:0;margin:0}
.grammar-original{display:block;width:100%;height:100%;border:0;background:#f4ecd6}
/* Grammar keeps its shape; progress colors come from the shared cm-node states. */
.cm-node.grammar{border-radius:22px;width:85px;height:75px;font-size:21px}.cm-node.grammar small{display:block;font-size:12px}
/* Ticket battle follows the same parchment material as the town memo. */
.ticket-game.ticket-stage,.ticket-game.ticket-outcome{background:linear-gradient(110deg,#faf3dc,#eee1b9);color:#40584b;border:2px solid #fff8e4;box-shadow:0 6px 0 #b9ab84,0 14px 40px #293d4333}
.ticket-stage .ticket-arena{background:transparent;border:0;border-bottom:1px solid #b9a87b70;border-radius:0;box-shadow:none}
.ticket-stage .ticket-eyebrow{color:#7b8069}.ticket-stage .ticket-question-count{background:#e2d5af;color:#52634e}.ticket-stage .ticket-foe-label{background:#f7edce;color:#52634e;border-color:#b9a87b70}.ticket-stage .ticket-verdict{color:#337c65;text-shadow:none}
.ticket-stage .ticket-ledger{background:#f7edcf;box-shadow:none;border:1px solid #c5b78f}
.ticket-game.ticket-stage .ticket-cards .puzzle-tile{box-shadow:0 4px 0 #b3a580;border-color:#d6c594;border-left-color:#6f9a88}
.ticket-game.ticket-stage .ticket-cards .ticket-used{background:#d7ceb7;color:#8c8878;border-color:#c4b999;box-shadow:0 2px 0 #b9af94;opacity:.7}
.ticket-outcome h1{color:#387d67}.ticket-outcome.lost h1{color:#79637c}

.ticket-stage .play-head>b{color:#40584b;text-shadow:none}
.ticket-stage .ticket-thief:before{background:#76634430;left:28%;width:44%;height:8%}

.cm-node.grammar .cm-grammar-number{width:auto;min-width:24px;height:24px;padding:0 4px;white-space:nowrap;font-size:11px;line-height:24px;font-variant-numeric:tabular-nums}.cm-node.grammar .cm-grammar-check{top:auto;bottom:-4px;right:-4px}

/* Past-paper BOSS: the same uninterrupted paper surface as grammar. */
.exam-battle{position:relative;isolation:isolate;width:min(1220px,100%);height:100%;display:flex;flex-direction:column;gap:20px;padding:48px 54px 42px;color:#425346}
.exam-battle:before{content:'';position:absolute;inset:0;z-index:-1;background:url('/art/grammar-blank-paper-v3.webp') center/100% 100% no-repeat;filter:drop-shadow(0 5px 5px #35261755);pointer-events:none}
.exam-battle-head{display:flex;align-items:center;gap:14px;flex-wrap:wrap;flex:none}.exam-battle-head .icon-button{width:44px;height:44px;background:#fff8e3cc;box-shadow:0 3px #b9a57a66}.exam-battle-pill{border-radius:30px;background:#755682;color:#fffbed;padding:8px 16px;font-weight:750;font-size:14px}.exam-battle-head progress{appearance:none;border:0;height:6px;width:min(24vw,240px);border-radius:6px;background:#b6a77e66}.exam-battle-head progress::-webkit-progress-bar{background:#b6a77e66;border-radius:6px}.exam-battle-head progress::-webkit-progress-value{background:#b99147;border-radius:6px}.exam-battle-head h1{font-size:15px;margin-left:auto}.exam-battle-count{white-space:nowrap;font-size:17px}
.exam-battle-prompt{flex:1;min-height:0;display:flex;flex-direction:column;justify-content:center;gap:12px}.exam-battle-number{font-size:14px;color:#7f735c}.exam-battle-prompt p{margin:0;font-size:clamp(19px,2.4vw,30px);line-height:1.65;overflow-wrap:anywhere}.exam-battle-prompt mark{background:#e7d6a2;color:#397e6b;border-radius:5px;white-space:nowrap}
.exam-battle-options{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;flex:none}.exam-battle-choice{position:relative;min-height:86px;padding:15px 12px;display:flex;align-items:center;gap:10px;text-align:left;color:#3e5848;background:#fff8e4;border:2px solid #c6b083;border-radius:14px;box-shadow:0 5px #aa956d;font-size:clamp(16px,1.8vw,23px)}.exam-battle-choice span{font-size:12px;flex:none;color:#857758}.exam-battle-choice b{font-weight:600;overflow-wrap:anywhere}.exam-battle-choice i{font-style:normal;margin-left:auto}.exam-battle-choice.correct{background:#80b39a;border-color:#397e6b;color:#173f30;box-shadow:0 5px #397e6b}.exam-battle-choice.incorrect{background:#e5c0ad;border-color:#a66855;box-shadow:0 5px #a66855}.exam-battle-choice:not(:disabled):active{transform:translateY(3px);box-shadow:0 2px #aa956d}
.exam-battle-foot{display:flex;align-items:center;justify-content:flex-end;gap:18px;min-height:46px;flex:none}.exam-battle-explanation summary{cursor:pointer;min-height:44px;display:flex;align-items:center}.exam-battle-explanation[open] p{position:absolute;z-index:4;left:7%;right:7%;bottom:140px;max-height:50%;overflow:auto;background:#fff8e4;padding:24px;border:1px solid #c6b083;box-shadow:0 8px 30px #33271944;line-height:1.7}
@media(max-width:699px){#content:has(.exam-battle){padding:0}.exam-battle{padding:40px 24px 34px;gap:12px}.exam-battle-head{gap:8px}.exam-battle-head h1{width:100%;margin:0;font-size:12px}.exam-battle-head progress{flex:1;width:auto}.exam-battle-pill{font-size:12px;padding:7px 12px}.exam-battle-count{font-size:14px}.exam-battle-prompt{gap:5px}.exam-battle-prompt p{font-size:18px;line-height:1.5}.exam-battle-options{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.exam-battle-choice{min-height:64px;padding:12px 10px;font-size:17px}.exam-battle-foot{min-height:44px}.exam-battle-explanation[open] p{bottom:110px}}
/* Raster parchment cards: matching backs and blank fronts share one texture atlas. */
#game .reward-sheet .reward-cards{gap:clamp(8px,2vw,22px);align-items:center}
#game .reward-sheet .reward-cards .reward-card{flex:0 1 auto;width:min(29%,220px,30dvh);height:auto;min-height:0;aspect-ratio:2/3;padding:0;border:0;border-radius:0;background:none;box-shadow:none;filter:drop-shadow(0 6px 4px #3f362833);overflow:visible}
#game .reward-sheet .reward-card .gacha-back,#game .reward-sheet .reward-card.revealed .gacha-front{position:absolute;inset:0;width:100%;height:100%;min-height:0;border:0;border-radius:0;background-color:transparent;background-image:url('/art/reward-parchment-pair-v1.webp');background-size:236% 108.2%;background-repeat:no-repeat;background-position:8.2% 50%;padding:14% 10%;box-shadow:none}
#game .reward-sheet .reward-card.revealed .gacha-front{background-position:91.8% 50%;gap:12px}
#game .reward-sheet .reward-card.chosen{filter:drop-shadow(0 0 5px #edbd53) drop-shadow(0 7px 5px #3f362833)}
#game .reward-sheet .reward-card.revealed .gacha-front strong{font-size:clamp(12px,1.5vw,17px);line-height:1.4;overflow-wrap:anywhere}
#game .reward-sheet .prize-amount{gap:8px}
#game .reward-sheet .reward-card .prize-amount span{flex-wrap:wrap}
#game .reward-sheet .prize-amount b{font-size:clamp(15px,2vw,23px)}
@media(max-width:600px){#game .reward-sheet .sheet-body{padding:12px 8px 20px}#game .reward-sheet .reward-card.revealed .gacha-front{padding:12% 9%;gap:8px}#game .reward-sheet .prize-amount{flex-direction:column;gap:6px}#game .reward-sheet .prize-icon{width:22px;height:22px}}
/* Matching puzzle shares grammar's raster paper and gemstone atlas. */
#game .puzzle-screen{position:relative;isolation:isolate;width:min(960px,100%);max-height:100%;padding:40px 34px 32px;background:none;color:#425346;box-shadow:none;border-radius:0}
#game .puzzle-screen:before{content:'';position:absolute;inset:0;z-index:-1;background:url('/art/grammar-blank-paper-v3.webp') center/100% 100% no-repeat;pointer-events:none}
#game .puzzle-screen .play-head>span{color:inherit;text-shadow:none}#game .puzzle-screen .progress-track{background:#b6a77e66}#game .puzzle-screen .progress-track i{background:#b99147}
#game .puzzle-screen .puzzle-board{--tw:min(170px,calc((100vw - 100px)/var(--cols) - 10px));--th:max(48px,min(74px,calc((100dvh - 330px)/var(--rows) - 8px)));box-shadow:none;background:none}
#game .puzzle-screen .puzzle-tile{position:relative;isolation:isolate;border:7px solid transparent;border-radius:5px;background:none;box-shadow:none;color:#19383e;padding:5px;filter:drop-shadow(0 3px 2px #294d4e40)}
#game .puzzle-screen .puzzle-tile:before{content:'';position:absolute;inset:-7px;z-index:-1;pointer-events:none;border:7px solid transparent;border-image:url('/vendor/english-repeat/assets/smoky-quartz.png') 235 fill / 7px / 0 stretch;background:#b6c7bf;background-clip:padding-box}
#game .puzzle-screen .puzzle-tile.ja:before{border-image-source:url('/vendor/english-repeat/assets/aqua-diamond.png');background-color:#91c4cb}
#game .puzzle-screen .puzzle-tile.selected{filter:drop-shadow(0 0 5px #e1a637) brightness(1.15)}
#game .puzzle-screen .puzzle-tile.adjacent,#game .puzzle-screen .puzzle-tile.claimable{outline:1px solid #c6a850;outline-offset:2px}
#game .puzzle-screen.bonus-mode{background:radial-gradient(ellipse at top,#936ba866,#281c44ed);color:#fff2ce;box-shadow:0 0 0 100vmax #302244b3;border-radius:12px}
#game .puzzle-screen.bonus-mode:before{filter:sepia(.25) saturate(.65) hue-rotate(210deg) brightness(.42)}
#game .bonus-mode .puzzle-tile:before{border-image-source:url('/vendor/english-repeat/assets/amber-topaz.png');background-color:#e9c464}
#game .bonus-mode .bonus-treasure img{opacity:.85;filter:drop-shadow(0 0 14px #ffdc7388)}
#game .bonus-mode .puzzle-board{filter:drop-shadow(0 0 10px #e3b54e55)}
.field-report-backdrop{position:absolute;inset:0;display:grid;place-items:center;pointer-events:none}.field-report-backdrop .puzzle-screen{pointer-events:none}
.field-report-shade{position:absolute;inset:0;z-index:90;display:grid;place-items:center;padding:24px;background:#233c344d;backdrop-filter:blur(2px)}
.field-report{width:min(520px,100%);max-height:90%;overflow:auto;pointer-events:auto}.field-report h2{font-size:30px}.field-report dl{margin:24px 0;display:grid;gap:14px}.field-report dl>div{display:flex;justify-content:space-between;gap:16px;border-bottom:1px solid #ac87542b;padding-bottom:10px}.field-report dt{font-size:15px}.field-report dd{margin:0;font-size:22px;text-align:right}.field-report>.primary{width:100%;position:relative;z-index:1}
@media(max-width:600px){#game .puzzle-screen{padding:34px 22px 26px}#game .puzzle-screen .pz-slot{height:110px}#game .bonus-mode .pz-slot{height:135px}.field-report-shade{padding:20px}.field-report{padding:24px 20px}.field-report h2{font-size:26px}.field-report dd{font-size:19px}}

#game .puzzle-screen:not(.bonus-mode) .puzzle-score{color:#425346;text-shadow:none}
/* Shared fieldwork checklist and in-place reward memo. */
.field-report dl>div{display:grid;grid-template-columns:26px minmax(0,1fr) auto;align-items:start;gap:12px}
.field-report .report-check{margin-top:3px;font-family:'Klee One',cursive;font-weight:600;line-height:1}
.field-report dt{overflow-wrap:anywhere;line-height:1.65}
.field-report dd{white-space:nowrap;margin:0;font-size:20px}
.reward-memo{width:min(760px,94%);max-height:90dvh;overflow:auto;padding:28px 30px 24px}
.field-report.reward-memo{width:min(760px,100%)}
.reward-memo h2{margin:0;font-size:28px}
.reward-memo .reward-stack-row{margin:12px 0}
.reward-memo .reward-cards{display:flex;justify-content:center;margin:14px 0 22px}
.reward-memo>.primary{width:100%}
@media(max-width:600px){.field-report dl>div{grid-template-columns:24px minmax(0,1fr);gap:8px 10px}.field-report dd{grid-column:2;font-size:19px}.reward-memo{padding:24px 16px}.reward-memo h2{font-size:24px}}
.challenge-intro{position:absolute;inset:0;z-index:100;background:#314e4966;display:grid;place-items:center;padding:24px;backdrop-filter:blur(5px)}
.challenge-intro [hidden]{display:none!important}
.challenge-stolen-report{position:absolute;inset:0}.challenge-stolen-report .primary:disabled{opacity:1;cursor:default}
.challenge-stolen-report.shattering .town-memo{animation:reward-memo-break .7s ease-in forwards}
@keyframes reward-memo-break{0%{transform:rotate(-.6deg)}15%{transform:translateX(-12px) rotate(-3deg)}30%{transform:translateX(12px) rotate(3deg)}50%{clip-path:polygon(0 0,44% 0,53% 25%,44% 48%,56% 68%,43% 100%,0 100%);transform:translate(-35px,20px) rotate(-8deg);opacity:1}100%{transform:translate(-150px,120px) rotate(-24deg);opacity:0}}
.challenge-taunt{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.2fr);align-items:center;gap:24px;width:min(1000px,100%)}
.challenge-taunt>img{width:100%;max-height:65dvh;object-fit:contain;filter:drop-shadow(0 12px 12px #30221855)}
.challenge-speech{background:#fff8df;padding:28px;border-radius:24px;color:#493d2b;font-size:clamp(18px,2.3vw,28px);box-shadow:0 8px #b9a577;line-height:1.65}
.challenge-support{font-size:.75em;color:#397d69}.challenge-support img{width:48px;height:48px;object-fit:cover;float:left;margin-right:10px;border-radius:50%}
.challenge-speech small{display:block;font-size:13px;margin:16px 0}.challenge-speech button{width:100%}
.challenge-start-flash{position:absolute;inset:0;display:grid;place-items:center;background:#213b31bb;color:#fff0ad;font:bold clamp(38px,7vw,90px) system-ui;text-shadow:0 5px #8e6132}
@media(max-width:600px){.challenge-intro{padding:18px}.challenge-taunt{grid-template-columns:1fr;gap:8px}.challenge-taunt>img{height:30dvh}.challenge-speech{padding:18px;font-size:19px}.challenge-speech p{margin:6px 0 14px}}
@media(prefers-reduced-motion:reduce){.challenge-stolen-report.shattering .town-memo{animation:none;opacity:0}}
.challenge-stolen-report .field-report{grid-area:1/1}
.challenge-stolen-report.shattering .break-right{animation-name:reward-memo-break-right}
@keyframes reward-memo-break-right{0%{transform:rotate(-.6deg)}15%{transform:translateX(-12px) rotate(-3deg)}30%{transform:translateX(12px) rotate(3deg)}50%{clip-path:polygon(44% 0,100% 0,100% 100%,43% 100%,56% 68%,44% 48%,53% 25%);transform:translate(35px,20px) rotate(8deg);opacity:1}100%{transform:translate(150px,120px) rotate(24deg);opacity:0}}
/* Intro dialogue occupies the battle's existing speech positions. */
.challenge-intro.revealed{background:transparent;backdrop-filter:none;pointer-events:none}
.challenge-intro.revealed .challenge-start-retry{pointer-events:auto;position:relative;z-index:2}
.reward-intro-board .tf-meaning{font-size:clamp(18px,2.3vw,30px);line-height:1.6}
.reward-intro-board .challenge-mia{animation:none}
@media(max-width:600px){.reward-intro-board .tf-meaning{font-size:17px}.reward-intro-board .tf-question{padding:16px 12px}.reward-intro-board .challenge-mia{font-size:12px}}
.challenge-countdown{position:relative;width:clamp(150px,25vw,240px);aspect-ratio:1;display:grid;place-items:center}
.challenge-countdown svg{position:absolute;inset:0;width:100%;height:100%;transform:rotate(-90deg);fill:none;stroke-width:5}
.challenge-countdown .count-track{stroke:#fff0ad40}
.challenge-countdown .count-progress{stroke:#fff0ad;stroke-linecap:round;stroke-dasharray:1;animation:challenge-count-progress var(--count-ms,1s) linear forwards}
.challenge-countdown b{font-size:clamp(70px,12vw,120px)}
@keyframes challenge-count-progress{from{stroke-dashoffset:0}to{stroke-dashoffset:1}}
.tf-foe.challenge-entrance img{animation:challenge-raccoon-entrance 1s cubic-bezier(.2,.75,.25,1) both;z-index:5}
@keyframes challenge-raccoon-entrance{0%{transform:translate(25%,-5%) scale(1.65);opacity:0}15%{transform:translate(25%,-5%) scale(1.65);opacity:1}45%{transform:translate(25%,-5%) scale(1.65);opacity:1}100%{transform:translate(0,0) scale(1);opacity:1}}
@media(prefers-reduced-motion:reduce){.tf-foe.challenge-entrance img{animation:none}}
/* クエストコンプリート：暗幕なしで全画面に浮かせる（光はCSS）。画面の端と中心は光を消す */
@property --cp-a{syntax:'<angle>';inherits:false;initial-value:0deg}
.complete-pop{position:fixed;inset:0;z-index:80;display:flex;align-items:center;justify-content:center;overflow:hidden}
.cp-rays{position:absolute;inset:10%;pointer-events:none;mix-blend-mode:screen;opacity:0;--cp-a:0deg;animation:cp-in .8s .1s ease-out forwards,cp-turn 60s linear infinite;background:repeating-conic-gradient(from var(--cp-a) at 50% 46%,#fff0a0e6 0 11deg,#fff0a000 11deg 30deg);-webkit-mask-image:radial-gradient(ellipse farthest-side at 50% 46%,#0000 0 16%,#000 40% 62%,#0000 100%);mask-image:radial-gradient(ellipse farthest-side at 50% 46%,#0000 0 16%,#000 40% 62%,#0000 100%)}
.cp-stage{position:relative;display:flex;flex-direction:column;align-items:center;gap:clamp(2px,.8vh,8px);width:min(92vw,470px);max-height:96vh;font-family:"Hiragino Maru Gothic ProN","Hiragino Kaku Gothic ProN",system-ui,sans-serif;text-align:center}
.cp-art{height:clamp(50px,12vh,110px);animation:cp-pop .5s .2s cubic-bezier(.3,1.6,.5,1) both}
.cp-art img{height:100%;width:auto;filter:drop-shadow(0 4px 6px #0006)}
.cp-stars{display:flex;align-items:flex-end;gap:2px;filter:drop-shadow(0 4px 5px #0006)}
.cp-stars i{width:clamp(44px,11vh,76px);aspect-ratio:1;background:url(/assets/images/ui/complete/star-on.png) center/contain no-repeat;animation:cp-pop .45s both}
.cp-stars i:nth-child(1){animation-delay:.6s}.cp-stars i:nth-child(2){animation-delay:.9s;scale:1.15;translate:0 -8px}.cp-stars i:nth-child(3){animation-delay:1.2s}
.cp-title{margin:0;font-size:clamp(38px,10vh,66px);line-height:1;font-weight:900;font-family:"Arial Black","Helvetica Neue",Impact,"Hiragino Kaku Gothic ProN",sans-serif;letter-spacing:.02em;color:transparent;background:linear-gradient(#fffbd0 0,#ffd83a 46%,#f29a00 100%);-webkit-background-clip:text;background-clip:text;-webkit-text-stroke:.06em #fff0b0;paint-order:stroke fill;filter:drop-shadow(0 0 0 #9c5200) drop-shadow(3px 0 0 #9c5200) drop-shadow(-3px 0 0 #9c5200) drop-shadow(0 3px 0 #9c5200) drop-shadow(0 -3px 0 #9c5200) drop-shadow(2px 2px 0 #9c5200) drop-shadow(-2px -2px 0 #9c5200) drop-shadow(0 6px 5px #0006);animation:cp-pop .5s 1.35s cubic-bezier(.3,1.6,.5,1) both}
.cp-plate{position:relative;width:100%;margin-top:clamp(12px,2.4vh,20px);padding:clamp(18px,3.4vh,26px) 16px 12px;border-radius:20px;background:#fffefa;border:4px solid #9dc2e6;box-shadow:0 0 0 3px #fff,0 8px 18px #0005;animation:cp-slide .45s 1.5s both;color:#4a3a28}
.cp-ribbon{position:absolute;left:50%;top:0;translate:-50% -55%;display:inline-block;margin:0 22px}
.cp-ribbon>span{position:relative;display:block;padding:4px 34px;background:linear-gradient(#ff8272,#d9372c);color:#fff;font-weight:900;font-size:clamp(13px,2.6vh,17px);letter-spacing:.16em;text-shadow:0 1px 0 #8d1f17;box-shadow:0 3px 0 #9c2018,0 5px 6px #0005;z-index:1}
.cp-ribbon::before,.cp-ribbon::after{content:"";position:absolute;top:7px;width:30px;height:100%;background:linear-gradient(#c92a20,#a01c14)}
.cp-ribbon::before{left:-22px;clip-path:polygon(0 0,100% 0,100% 100%,0 100%,26% 50%)}.cp-ribbon::after{right:-22px;clip-path:polygon(0 0,100% 0,74% 50%,100% 100%,0 100%)}
.cp-conds{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:clamp(3px,.9vh,8px)}
.cp-conds li{display:flex;align-items:center;gap:10px;font-weight:800;font-size:clamp(13px,2.5vh,16px);text-align:left;animation:cp-slide .35s var(--d) both}
.cp-box{flex:none;position:relative;width:22px;height:22px;border:3px solid #a89878;border-radius:6px;background:#fff}
.cp-box::after{content:"";position:absolute;left:5px;top:-6px;width:8px;height:16px;border:solid #2e9e4f;border-width:0 5px 5px 0;transform:rotate(45deg) scale(0);transform-origin:70% 80%;animation:cp-check .3s calc(var(--d) + .25s) cubic-bezier(.3,1.7,.5,1) both}
.cp-next{margin-top:clamp(6px,1.4vh,12px);padding-top:clamp(5px,1vh,10px);border-top:2px dashed #d9c9a4;animation:cp-slide .4s var(--d) both}
.cp-next-tag{display:inline-block;padding:1px 12px;border-radius:999px;background:#e8742b;color:#fff;font-size:12px;font-weight:900;letter-spacing:.14em}
.cp-next-site{margin:3px 0 0;font-size:clamp(17px,3.6vh,24px);font-weight:900;color:#3b2a18}
.cp-next-hook{margin:1px 0 0;font-size:clamp(12px,2.3vh,15px);font-weight:800;color:#b5471a}
.cp-go{margin-top:clamp(6px,1.4vh,12px);min-width:160px;animation:cp-slide .4s var(--d) both}
@keyframes cp-in{to{opacity:.55}}@keyframes cp-turn{to{--cp-a:360deg}}
@keyframes cp-pop{0%{opacity:0;transform:scale(.3)}100%{opacity:1;transform:scale(1)}}
@keyframes cp-slide{0%{opacity:0;transform:translateY(14px)}100%{opacity:1;transform:none}}
@keyframes cp-check{0%{transform:rotate(45deg) scale(0)}100%{transform:rotate(45deg) scale(1)}}
@media (prefers-reduced-motion:reduce){.cp-rays{animation:cp-in .1s forwards}}
/* 章の終わりのカード「第N章 完」：見つかったものの一覧が長いので、見出しを小さく（2026-10-15） */
.chapter-card .chapter-label{display:block;margin:0 0 8px;font-size:13px;letter-spacing:.08em;color:#85725a}
.chapter-card.chapter-end h2{font-size:clamp(15px,1.9vw,18px);line-height:1.6;border-bottom:0}
.cp-reward{margin-top:clamp(6px,1.4vh,12px);padding-top:clamp(5px,1vh,10px);border-top:2px dashed #d9c9a4;animation:cp-slide .4s var(--d) both}.cp-reward>b{display:block;font-weight:800;font-size:clamp(13px,2.4vh,16px)}.cp-stamps{display:flex;justify-content:center;gap:clamp(4px,1vw,10px);margin-top:6px}.cp-stamp{display:block;width:clamp(48px,9vh,72px);animation:cp-slam .32s var(--d) cubic-bezier(.3,1.6,.5,1) both}.cp-stamps.region .cp-stamp{width:clamp(96px,18vh,140px)}.cp-stamp img{display:block;width:100%;height:auto;object-fit:contain}@keyframes cp-slam{0%{opacity:0;transform:scale(2.6) rotate(calc(var(--r) - 14deg))}70%{opacity:1;transform:scale(.92) rotate(var(--r))}100%{opacity:1;transform:scale(1) rotate(var(--r))}}
.sticker-pack-tabs .region-tab{font-weight:800;font-size:13px;padding:0 10px;white-space:nowrap}.region-grid .region-unknown{display:grid;place-items:center;aspect-ratio:37/32;border:2px dashed #cfc6b4;border-radius:12px;color:#b2a78f;font:900 26px system-ui}
.region-grid img{object-fit:contain}
.team-row .team-ability{display:block;color:#6b7f62;margin-top:2px}
.typing-boss{display:grid;gap:12px;justify-items:center;padding:14px 12px 24px;max-width:760px;margin:0 auto}
.tb-foe{display:grid;justify-items:center;gap:4px}.tb-foe-img{width:clamp(130px,26vh,220px);height:clamp(130px,26vh,220px);object-fit:contain}
.tb-hp{width:min(320px,70vw);height:10px;border-radius:6px;background:#e5dccb;overflow:hidden}.tb-hp i{display:block;height:100%;background:#d9573f;transition:width .15s}
.tb-hit{animation:tb-hit .14s}.tb-big{animation:tb-big .32s}.tb-shake{animation:tb-shake .26s}.tb-down{animation:tb-down .7s forwards}
@keyframes tb-hit{50%{transform:translateX(6px) scale(.97)}}@keyframes tb-big{30%{transform:translateX(14px) rotate(6deg) scale(.92)}}@keyframes tb-shake{25%{transform:translateX(-5px)}75%{transform:translateX(5px)}}@keyframes tb-down{to{transform:translateY(30px) rotate(-12deg);opacity:.25}}
.tb-card{width:100%;background:#fffaf0;border-radius:16px;padding:12px 16px;box-shadow:0 2px 0 #e2d8bd;text-align:center}
.tb-count{margin:0;color:#6b7065;font-size:13px}.tb-text{margin:6px 0;font:700 clamp(20px,3.6vw,30px)/1.4 ui-monospace,Menlo,monospace;word-break:break-word}
.tb-done{color:#2f7a5e}.tb-now{background:#ffe08a;border-radius:4px;box-shadow:0 2px 0 #d39b1d}.tb-rest{color:#2d3a32}
.tb-ja{margin:0;color:#6b7065;font-size:14px}.tb-combo{margin:4px 0 0;font-weight:900;color:#d9573f;min-height:1.2em}
.tb-help{margin:0;font-size:13px;color:#6b7065}.tb-input{position:absolute;opacity:0;width:1px;height:1px;pointer-events:none}
.tb-end{text-align:center}.tb-end h2{margin:4px 0;font-size:28px;color:#d9573f}.tb-off{font-size:12px;color:#6b7065}
/* イラストつきポップアップ（大事な場面・ミアとママの出会い）：幅600px、絵は横幅いっぱい（3:2）。チケットを返すポップアップ（650px）より少し小さい。画面が低いときは絵を画面の高さの55%まで */
:root{--popup-width:600px}
.scene-pop .meet-pop-card{width:min(600px,94vw);padding:0 0 16px;gap:12px}
.scene-pop .meet-pop-card>img{width:100%;height:auto;aspect-ratio:3/2;max-height:min(55dvh,400px);object-fit:cover;border-radius:24px 24px 0 0}
.encounter-pop .meet-pop-card>img{max-height:55dvh;object-fit:cover}
.ticket-intro-flash{position:fixed;inset:0;z-index:80}
.ticket-intro [data-ticket-choice]{pointer-events:none} /* はじめの演出中は答えを押せない */
/* イラストつきポップアップは全部同じ幅（600px）にそろえる（2026-10-16） */
.ticket-pop .meet-pop-card{width:min(600px,94vw)}
/* 採掘画面の上の欄（2026-10-16）：戻る＋地点・地層・メンバー（体力）・装備・石の数。小さい画面でも2〜3行に収める */
.dig-top{max-width:min(620px,calc(100% - 20px));align-items:flex-start;padding:8px 14px 8px 8px}
.dig-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:5px}
.dig-where{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px}.dig-where strong{font-size:17px}.dig-where span{font-size:13px;color:#6b7065}.dig-where b{color:#2d4a3c}
.dig-team{display:flex;align-items:flex-end;gap:6px;flex-wrap:wrap}
.dig-mate{display:grid;justify-items:center;gap:3px;padding:0;background:none;border:0;width:44px}.dig-mate img{width:40px;height:40px;border-radius:50%;object-fit:cover;background:#e8e2cf}
.dig-mate.resting img{filter:grayscale(.8);opacity:.6}
.dig-hp{display:block;width:40px;height:5px;border-radius:3px;background:#e2dccb;overflow:hidden}.dig-hp b{display:block;height:100%;background:#6f9a63}.dig-hp.low b{background:#d0674a}
.dig-gear{display:flex;align-items:center;gap:4px;margin-left:auto;padding:3px 8px 3px 4px;border-radius:14px;background:#efe9d6;border:0;font-size:12px;color:#4d5a4f}.dig-gear img{width:30px;height:30px;object-fit:contain}
.dig-yield{margin:0;font-size:13px;color:#4d5a4f}.dig-yield b{font-size:16px;color:#2d4a3c}.dig-yield small{margin-left:6px;color:#a2563f}
.dig-equipment .object-button{position:relative}
.dig-equipment [data-alert="true"]::after{content:'';position:absolute;top:2px;right:2px;width:14px;height:14px;border-radius:50%;background:#e0453a;box-shadow:0 0 0 3px #fff9e9;animation:dig-alert 1.2s ease-in-out infinite}
@keyframes dig-alert{50%{transform:scale(1.25)}}
@media (max-width:520px){.dig-mate{width:36px}.dig-mate img{width:32px;height:32px}.dig-hp{width:32px}.dig-gear small{display:none}.dig-where strong{font-size:15px}}
/* 研究室アプリ（2026-10-16）：下のタブ5つ・やること・骨のロック・地層の表・研究メモ */
.lab-foot{padding:0}
.lab-foot .lab-nav{width:100%;gap:2px;padding:4px 6px;min-height:60px}
.lab-nav button{width:auto;flex:1;max-width:76px;height:54px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;border:0;background:none}
.lab-nav img{width:28px;height:28px}
.lab-nav button>span{font-size:11px;color:#55624f;white-space:nowrap}
.lab-nav button[aria-pressed=true]>span{color:#2f3a2b;font-weight:700}
.sheet:has(.lab-nav) .cart-fab{bottom:88px}
.todo-list{display:flex;flex-direction:column}
.todo-row{display:flex;align-items:center;gap:14px;min-height:64px;width:100%;text-align:left;padding:10px 4px;border:0;border-bottom:1px solid #e0e4d5;background:none;margin:0}
.todo-row>img{width:44px;height:44px;object-fit:cover;border-radius:50%;flex:none}
.todo-row>.icon{width:26px;flex:none}
.todo-row>.unread-dot{flex:none;margin:0 8px}
.todo-row>span{display:flex;flex:1;flex-direction:column;gap:4px;font-size:15px;min-width:0}
.todo-row>span>span{font-size:13px;color:#687561}
.todo-heading{font-size:15px;margin:22px 0 4px}
.bone-lock{display:inline-flex;align-items:center;gap:3px;font-size:12px;color:#7a6a4f}
.bone-lock .icon{width:13px;height:13px}
.specimen-card.locked{opacity:.92}
.strata-table table{width:100%;border-collapse:collapse;font-size:14px}
.strata-table th,.strata-table td{padding:8px 6px;border-bottom:1px solid #e0e4d5;text-align:left}
.strata-table th{font-size:12px;color:#687561;font-weight:600}
.strata-table tr.ng td:last-child{color:#a35d3c}
.strata-table tr.ok td:last-child{color:#4f7a45;font-weight:600}
.research-memo{margin:14px 0;padding:12px 14px;border-radius:12px;background:#f3f1e6}
.research-memo h3{font-size:14px;margin:0 0 6px}
.research-memo p{font-size:14px;line-height:1.7;margin:4px 0}
.research-memo .memo-next{color:#687561}
.research-memo,.research-memo p,.todo-heading{text-align:left}
/* 2026-10-16 午後：チュートリアルの吹き出しを小さく・発掘画面は上に戻るだけ、情報は下の帯に1行・やることに絵・持ち物と道具の切り替え */
.tut-bubble p{font-size:14px;font-weight:600;line-height:1.5}
.tut-bubble img{width:40px;height:40px}
.dig-screen .dig-top{right:auto;padding:0;background:none;box-shadow:none;border-radius:50%;max-width:none}
.dig-foot{position:absolute;left:0;right:0;bottom:0;z-index:3;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:12px;padding:0 18px 14px;pointer-events:none}
.dig-foot>*{pointer-events:auto}
.dig-foot .dig-equipment{position:static;transform:none}
.dig-foot .dig-where{display:flex;flex-direction:column;align-items:flex-start;gap:2px;min-width:0;color:#fff6de}
.dig-foot .dig-where strong{font-size:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.dig-foot .dig-where span{font-size:12px;color:#d8d3bd}
.dig-foot .dig-team{justify-content:flex-end;flex-wrap:nowrap;align-items:center;gap:6px}
.dig-foot .dig-gear{margin-left:4px;padding:4px;border-radius:50%;background:#fff9e9e6}
.dig-foot .dig-gear img{width:30px;height:30px}
.dig-job-status{bottom:96px}
.dig-job-status time{margin-left:8px}
@media (max-width:520px){.dig-foot{gap:6px;padding:0 8px 12px}.dig-foot .dig-where span{display:none}.dig-foot .dig-where strong{font-size:12px;white-space:normal;line-height:1.3}.dig-foot .dig-mate{width:28px}.dig-foot .dig-mate img{width:26px;height:26px}.dig-foot .dig-hp{width:26px;height:4px}.dig-foot .dig-team{gap:3px}.dig-foot .dig-gear img{width:24px;height:24px}.dig-foot .dig-equipment{gap:10px;padding:6px 12px}}
.team-yield{margin:8px 0 0;font-size:13px;color:#4d5a4f}
.team-yield b{font-size:15px;color:#2d4a3c}
.todo-list{gap:8px}
.todo-row{background:#efe9d3;border:0;border-radius:14px;padding:10px 12px;min-height:66px;color:#24342a;position:relative}
.todo-row>span>b{font-weight:700;color:#24342a}
.todo-row>.icon{color:#2d4a3c}
.todo-row .todo-art{width:46px;height:46px;object-fit:contain;flex:none;border-radius:10px;background:#fbf7ea}
.todo-row .unread-dot{position:absolute;left:46px;top:8px;margin:0}
.todo-row.research-record>img{border-radius:50%}
.mission-records .silhouette-art{width:82px;height:75px;object-fit:contain}
.lab-switch{margin:0 0 14px}
.dig-screen{padding-top:64px}
/* テント（夜ごはん）・発掘画面の燃料 2026-10-16 */
.tent-hero{display:grid;place-items:center;margin:4px 0 8px}
.tent-hero .tent-mom{max-height:260px;width:auto;object-fit:contain}
.tent-wait{text-align:center;font-size:15px;color:#4d5a4f}
.tent-wait time{font-weight:700;font-size:18px;color:#2d4a3c;margin-left:4px}
.tent-meal{margin:6px 0 12px;display:grid;gap:8px;justify-items:center}
.tent-meal img{width:100%;max-width:560px;aspect-ratio:4/3;object-fit:cover;border-radius:16px;background:#efe9d3}
.tent-meal figcaption{font-size:18px;font-weight:700;color:#2d4a3c}
.tent-line{display:flex;align-items:center;gap:10px;margin:0 0 8px;font-size:15px}
.tent-line .tent-face{width:44px;height:44px;border-radius:50%;object-fit:cover;flex:none}
.dig-foot .dig-fuel{display:inline-flex;align-items:center;gap:3px;font-size:13px;font-weight:700;color:#fff6de;margin-top:2px}
.dig-foot .dig-fuel img{width:18px;height:18px;object-fit:contain}
.dig-foot .dig-fuel small{font-weight:400;color:#d8d3bd}
@media (max-width:520px){.dig-foot .dig-fuel{font-size:12px}}
/* テントで休む：仲間画面のボタンと確認（2026-10-16） */
.team-acts{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.team-acts button{flex:1;min-width:140px;display:inline-flex;align-items:center;justify-content:center;gap:6px}
.team-acts button img{width:24px;height:24px;object-fit:contain}
.confirm-pop{position:fixed;inset:0;z-index:90;display:grid;place-items:center;background:#1d281f80;padding:16px}
.confirm-card{width:min(360px,100%);background:#fffaf0;border-radius:20px;padding:20px 18px 16px;text-align:center;box-shadow:0 6px 0 #d7c9a2,0 14px 30px #0005}
.confirm-card img{width:96px;height:auto}
.confirm-card p{font-size:17px;font-weight:700;color:#2d4a3c;margin:8px 0 16px}
.confirm-card>div{display:flex;gap:10px}
.confirm-card>div button{flex:1}
.team-acts button{min-width:0;white-space:nowrap;font-size:14px;padding:10px 8px;min-height:0;height:auto;flex-direction:row}
.team-acts button time{font-variant-numeric:tabular-nums}
/* 街のお店の段階（2026-10-16） */
.shop-stage{display:grid;justify-items:center;gap:4px;margin:0 0 10px}
.shop-stage-art{max-width:220px;max-height:160px;object-fit:contain}
.shop-stage b{font-size:16px;color:#2d4a3c}
.shop-upgrade .cost-list{display:flex;flex-wrap:wrap;gap:6px 12px;margin:6px 0 12px;font-size:14px}
.shop-upgrade .cost-list .ng{color:#a35d3c}
.shop-upgrade .cost-list .ok{color:#4f7a45}
/* テントで休んだあとの暗転（2026-10-16） */
.rest-fade{position:fixed;inset:0;z-index:95;background:#000;display:grid;place-items:center;opacity:0;animation:rest-in .8s forwards}
.rest-fade p{color:#fff6de;font-size:22px;font-weight:700;letter-spacing:.06em;opacity:0;transition:opacity .4s}
.rest-fade.lit p{opacity:1}
@keyframes rest-in{to{opacity:1}}
.museum-cost{display:flex;flex-wrap:wrap;gap:6px 12px;margin:6px 0 12px;font-size:14px}
.museum-cost .ng{color:#a35d3c}.museum-cost .ok{color:#4f7a45}
/* 同行者の吹き出し：画面の幅を超えたら折り返す・端では内側へずらす（--bx は scene-layout.js が入れる）2026-10-16 */
.town-bubble{white-space:normal;width:max-content;max-width:min(320px,calc(100vw - 16px));text-align:center;transform:translate(calc(-50% + var(--bx,0px)),-6px)}
.town-bubble::after{left:calc(50% - var(--bx,0px))}
@keyframes town-bubble-pop{50%{transform:translate(calc(-50% + var(--bx,0px)),-10px)}}
@keyframes town-ready-arrive{from{opacity:0;transform:translate(calc(-50% + var(--bx,0px)),0) scale(.9)}to{opacity:1;transform:translate(calc(-50% + var(--bx,0px)),-6px) scale(1)}}
/* 建設中（博物館・お店）と、街で河原に戻る確認 2026-10-16 */
.build-badge{position:absolute;left:50%;top:-10px;transform:translateX(-50%);white-space:nowrap;font-size:11px;font-weight:700;color:#fff6de;background:#b0703a;border-radius:10px;padding:2px 8px;z-index:3}
.build-wait{display:flex;align-items:center;justify-content:center;gap:6px;font-size:15px;font-weight:700;color:#8a5a26;margin:8px 0}
.build-wait .icon{width:18px;height:18px}
.confirm-card .confirm-face{width:72px;height:72px;border-radius:50%;object-fit:cover}
/* 地点の記録（パスポート風・2026-10-16） */
.passport{background:linear-gradient(#f7eed6,#efe2c2);border:1px solid #d9c79c;border-radius:14px;padding:16px 16px 10px;box-shadow:inset 0 0 0 4px #f9f3e2,inset 0 0 0 5px #e0cfa6;color:#3c3424}
.passport-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;border-bottom:2px solid #c9b383;padding-bottom:10px}
.passport-head h2{font-size:26px;margin:0;text-align:left;letter-spacing:.04em}
.passport-head p{margin:2px 0 0;font-size:13px;color:#7a6a48}
.passport-stamp{width:76px;height:76px;object-fit:contain;filter:grayscale(1) opacity(.35);transform:rotate(-8deg)}
.passport-stamp.got{filter:none}
.passport-rows{display:grid;grid-template-columns:5em 1fr;margin:0;font-size:15px}
.passport-rows dt,.passport-rows dd{margin:0;padding:9px 4px;border-bottom:1px dashed #cdb98c}
.passport-rows dt{color:#7a6a48;font-size:13px}
.passport-state{display:flex;align-items:center;gap:8px}
.passport-state img{width:24px;height:24px;object-fit:contain}
.passport-state em{font-style:normal;font-size:12px;color:#fff;background:#8a6a3a;border-radius:8px;padding:1px 7px}
.state-dot{width:14px;height:14px;border-radius:50%;display:inline-block;background:#687f72}
.state-dot.state-open{background:#bd7b39}.state-dot.state-quest,.state-dot.state-complete{background:#397e6b}
.passport-species{border-bottom:1px dashed #cdb98c;padding:10px 0}
.passport-species h3{display:flex;justify-content:space-between;font-size:14px;margin:0 0 8px;color:#5a4c30}
.passport-species h3 span{font-variant-numeric:tabular-nums}
.passport-species>div{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}
.passport .site-more{margin-top:6px}
.passport-sheet .sheet-body>.passport{display:block;width:100%;box-sizing:border-box}
.passport-sheet .passport>*{max-width:none}
.passport-head>div{flex:1;min-width:0}

/* 地図 2026-10-17：現在地はフワンフワンの輪だけ／矢印1本／未入手は点線○＋？ */
.atlas .atlas-pin.current circle.pin-pulse{fill:none;stroke:#e0a23c;opacity:1;animation:pin-here 1.8s ease-out infinite;transform-box:fill-box;transform-origin:center}
@keyframes pin-here{0%{transform:scale(.75);opacity:1}100%{transform:scale(1.7);opacity:0}}
.atlas-arrow{stroke:#c9772f;stroke-linecap:round;fill:none;pointer-events:none}
.unknown-mark{box-sizing:border-box;display:grid;place-items:center;width:64px;height:64px;margin:auto;border:3px dashed #b9a57a;border-radius:50%;color:#9c8a62;font:700 30px/1 Georgia,serif;background:transparent}
.unknown-mark.passport-stamp{width:76px;height:76px;filter:none;transform:none}
.atlas{position:relative}.atlas-tools{position:absolute;top:10px;right:10px;z-index:2;display:flex;flex-direction:column;gap:8px}.atlas-zoom-out,.atlas-home{display:grid;place-items:center;width:40px;height:40px;padding:0;border:1px solid #9ebfb4;border-radius:50%;background:#fffbedee;color:#274e40;font:700 24px/1 system-ui,sans-serif;box-shadow:0 2px 6px #345c4c30;cursor:pointer}
.atlas .atlas-pin .pin-label{font-size:12px;stroke-width:3px}.atlas-arrow line{stroke:#c9772f;stroke-linecap:round}.atlas-arrow path{fill:#c9772f}.atlas-arrow{pointer-events:none}
/* ご当地スタンプ：スタンプラリー帳（2026-10-17） */
.region-rally{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}
.region-cell{display:flex;flex-direction:column;align-items:center;gap:8px;padding:14px 8px 12px;border:1px solid #d9c9a3;border-radius:14px;background:#fffaf0;color:#3f5a4b;cursor:pointer}
.region-cell .region-stamp,.region-pop-card .region-stamp{display:grid;place-items:center;width:84px;height:84px}
.region-cell .region-stamp img,.region-pop-card .region-stamp img{width:100%;height:100%;object-fit:contain}
.region-cell .unknown-mark{width:72px;height:72px}
.region-cell b,.region-pop-card h3{display:flex;align-items:baseline;gap:5px;margin:0;font-size:13px;font-weight:700;line-height:1.3;text-align:center}
.region-cell b i,.region-pop-card h3 i{font-style:normal;color:#a3814a;font-size:12px}
.region-pop{position:fixed;inset:0;z-index:60;display:grid;place-items:center;padding:16px;background:#1d2a2366}
.region-pop-card{display:flex;flex-direction:column;align-items:center;gap:12px;width:min(420px,100%);padding:20px 16px;border-radius:18px;background:#fffaf0;box-shadow:0 10px 30px #0004}
.region-pop-card h3{font-size:16px}
.region-conds{display:flex;width:100%;margin:0;padding:0;list-style:none;border:1px solid #d9c9a3;border-radius:10px;overflow:hidden}
.region-conds li{flex:1;display:flex;flex-direction:column;align-items:center;gap:6px;min-width:0;padding:10px 4px;border-left:1px solid #d9c9a3}
.region-conds li:first-child{border-left:0}
.region-conds .star{display:grid;place-items:center;height:28px;font-size:24px;line-height:1}
.region-conds small{font-size:11px;color:#5b6b60;text-align:center;overflow-wrap:anywhere}
.atlas-home svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.atlas-sheet .sheet-body>.atlas{flex:1 1 auto;height:auto;min-height:220px}
.dig-cost .fuel-short,.dig-cost .fuel-short b{color:#c0392b}
/* 仲間にする・はずす（2026-10-18） */
.team-row .team-crew-btn{flex:none;margin-left:auto;padding:8px 14px;border:1px solid #9ebfb4;border-radius:999px;background:#fffbed;color:#274e40;font-size:13px;font-weight:700;cursor:pointer}.team-row .team-crew-btn:disabled{opacity:.45;cursor:default}
/* プロフィール（パスポート風・2026-10-19） */
.person-passport .person-face{flex:none;width:96px;height:96px;padding:0;border:3px solid #fffaf0;border-radius:50%;overflow:hidden;background:#efe5cc;box-shadow:0 2px 8px #5a4a2a33;cursor:zoom-in}
.person-passport .person-face img{width:100%;height:100%;object-fit:cover}
.person-passport .person-say{margin:12px 0 4px;font-size:15px;line-height:1.6;color:#4a4030}
.person-passport .passport-rows dd{overflow-wrap:anywhere}
.person-full-pop{position:fixed;inset:0;z-index:60;display:grid;place-items:center;padding:16px;background:#1d2a23aa;cursor:zoom-out}
.person-full-pop img{max-width:min(520px,92vw);max-height:88dvh;object-fit:contain;filter:drop-shadow(0 8px 24px #0006)}
.passport .site-description{margin:12px 0 0;font-size:14px;line-height:1.7;color:#4a4030}
/* 仲間・プロフィールのアイコン（2026-10-19） */
.team-head .tc i{display:inline-flex;align-items:center;gap:3px}.team-head .tc i .icon{width:15px;height:15px}
.team-head .tc b small{font-size:11px;margin-right:2px}
.team-row .team-stats{display:flex;flex-wrap:wrap;justify-content:center;gap:4px 12px}.team-row .team-stats span{display:inline-flex;align-items:center;gap:3px}
.team-row .team-stats .icon,.team-row .team-ability .icon{width:14px;height:14px;flex:none}
.team-row .team-ability{display:inline-flex;align-items:flex-start;gap:4px}
.person-passport .passport-head{border-bottom:0;padding-bottom:0}
.person-passport .person-say{position:relative;margin:14px 0 10px;padding:12px 14px;border-radius:14px;background:#fffdf6;box-shadow:0 1px 4px #5a4a2a22}
.person-passport .person-say::after{content:'';position:absolute;top:-8px;right:56px;border:8px solid transparent;border-top:0;border-bottom-color:#fffdf6}
.person-passport .passport-rows dt{display:flex;align-items:center;gap:4px}.person-passport .passport-rows dt .icon{width:15px;height:15px;flex:none}
.person-passport .person-hp{display:flex;align-items:center;gap:10px}
.person-passport .person-hp .hpb{flex:1;height:8px;border-radius:99px;background:#e2e3d3;overflow:hidden}.person-passport .person-hp .hpb i{display:block;height:100%;background:#78a06c}
.person-passport .person-hp .team-feed{display:inline-flex;align-items:center;gap:4px;flex:none;padding:4px 10px;border:1px solid #d9c9a3;border-radius:999px;background:#fffaf0;cursor:pointer}
.person-passport .person-hp .team-feed img{width:26px;height:26px}.person-passport .person-hp .team-feed:disabled{opacity:.45;cursor:default}
/* おにぎりのボタン（共通）・はずす（×）・バーの長さをそろえる（2026-10-19） */
.rice-btn{position:relative;display:grid;place-items:center;flex:none;width:40px;height:40px;padding:0;border:1px solid #e6d6b0;border-radius:50%;background:#fff3dc;cursor:pointer}
.rice-btn img{width:28px;height:28px;object-fit:contain}
.rice-btn b{position:absolute;right:-4px;bottom:-4px;min-width:18px;height:18px;padding:0 4px;border-radius:9px;background:#5b7d55;color:#fff;font-size:11px;line-height:18px;text-align:center}
.rice-btn:disabled{opacity:.4;cursor:default}
.rice-slot{display:grid;place-items:center;flex:none;width:44px}
.team-row{position:relative}
.team-leave{position:absolute;top:6px;right:6px;display:grid;place-items:center;width:24px;height:24px;padding:0;border:1px solid #c9d6cf;border-radius:50%;background:#fffdf6;color:#5b6b60;cursor:pointer}
.team-leave .icon{width:14px;height:14px}
.person-passport .person-hp .rice-btn{margin-left:4px}.rice-slot{margin-right:24px}
/* パスポート風の紙は、ポップアップの下まで伸ばす。表の見出しは折り返さない（2026-10-19） */
.passport-sheet .sheet-body{display:flex;flex-direction:column}
.passport-sheet .sheet-body>.passport{flex:1 0 auto}
.passport-rows dt{white-space:nowrap}
.person-passport .passport-rows{grid-template-columns:max-content 1fr;column-gap:14px}

/* スタンプセット：小さめ（70%）・未入手は灰色で薄く・入手場所の段はなし（2026-10-19） */
.stamp-set-card .stamp-catalog-preview{width:70%;margin:0 auto}
.stamp-set-card.locked .stamp-catalog-preview img{filter:grayscale(1);opacity:.45}
/* チャンクマップの通知：🧭 と同じ点滅する赤い○。途中のチャンクの下の点は使わない（2026-10-19） */
.cm-node.cur::after{content:none}
.cm-node.alert::after{content:'';position:absolute;top:-4px;left:-4px;right:auto;bottom:auto;margin:0;width:16px;height:16px;border-radius:50%;background:#e0453a;box-shadow:0 0 0 3px #fff9e9;animation:dig-alert 1.2s ease-in-out infinite}
/* 注意の印は1種類：赤い丸に白い「！」、点滅（2026-10-19） */
.dig-choice-actions [data-alert="true"],.dig-mate[data-alert="true"]{position:relative}
[data-alert="true"]::after,.cm-node.alert::after,.alert-mark{content:'!';display:grid;place-items:center;width:18px;height:18px;border-radius:50%;background:#e0453a;color:#fff;font:900 12px/18px system-ui,sans-serif;font-style:normal;text-align:center;box-shadow:0 0 0 3px #fff9e9;animation:dig-alert 1.2s ease-in-out infinite;z-index:2}
[data-alert="true"]::after{position:absolute;top:-4px;right:-4px}
.alert-mark{position:absolute;top:4px;left:4px}
/* 研究レポートの絵は170pxの枠に収める（max-height:100% で制限が外れていた）（2026-10-19） */
.report-card .report-art{grid-template-rows:100%;overflow:hidden}.report-card .report-art img{height:100%;max-height:100%;width:auto;max-width:100%;min-height:0}
/* 生き物・鉱物・化石の詳しい表示：パスポート風、絵を大きく（2026-10-19） */
.specimen-passport .specimen-art{display:grid;place-items:center;height:240px;margin:-4px -4px 6px;border-radius:12px;background:radial-gradient(ellipse at center,#fffaf0 0,#f1e6c9 70%)}
.specimen-passport .specimen-art{grid-template-rows:100%;overflow:hidden}.specimen-passport .specimen-art img{height:100%;max-height:100%;width:100%;max-width:100%;min-height:0;object-fit:contain}
.specimen-passport .specimen-name{text-align:center;margin:8px 0 6px}.specimen-passport .specimen-name h2{margin:0;font-size:24px}.specimen-passport .specimen-name i{color:#7a6a48}
.specimen-passport .segmented{display:flex;justify-content:center;margin:4px 0}
.specimen-passport .passport-rows{grid-template-columns:max-content 1fr;column-gap:14px}
.specimen-passport .person-hp{display:flex;align-items:center;gap:10px}.specimen-passport .person-hp .hpb{flex:1;height:8px;border-radius:99px;background:#e2e3d3;overflow:hidden}.specimen-passport .person-hp .hpb i{display:block;height:100%;background:#78a06c}
.specimen-passport .detail-copy{margin:12px 0 0}
/* 研究室の下のタブ：ボタン欄の指定（最大320px・2列）を受けない（2026-10-19） */
.sheet .sheet-foot.lab-foot{display:flex;justify-content:center;padding:0}.sheet .sheet-foot.lab-foot>.lab-nav{flex:1;max-width:none;width:100%}
/* テントで休んだ後のLINE：背景を夜にする（2026-10-19） */
#landscape,#world,.sunlight{transition:filter .8s,opacity .8s}#content{transition:background .8s}
#game.night #landscape,#game.night #world{filter:brightness(.42) saturate(.65)}#game.night .sunlight{opacity:0}#game.night #content{background:#0d1a3a80}
/* 共通部品（js/parts.js・2026-10-19）：進み具合／絵のマス目／パスポートの下のボタンは1段 */
.pp-meter{display:flex;align-items:center;gap:10px;width:100%}.pp-meter .hpb{flex:1;height:8px;border-radius:99px;background:#e2e3d3;overflow:hidden}.pp-meter .hpb i{display:block;height:100%;background:#78a06c}.pp-meter.alert .hpb i{background:#c96a4a}.pp-meter>span:last-child{flex:none;font-variant-numeric:tabular-nums;white-space:nowrap;font-size:14px}
.passport-species .site-specimen{position:relative}.passport-species .site-specimen.dim img{filter:grayscale(1) opacity(.45)}.passport-species .tile-star{position:absolute;top:2px;right:4px;font-style:normal;font-size:12px}
.passport-species:last-child{border-bottom:0}
.specimen-passport .specimen-art{height:clamp(120px,24dvh,170px)}.specimen-passport .specimen-art .specimen-haze.big{height:100%}.specimen-passport .specimen-art .undiscovered-hero{display:grid;place-items:center;height:100%;font-size:80px}
.specimen-passport .specimen-name{margin:4px 0 2px}.specimen-passport .specimen-name i{margin-top:2px}
.passport-sheet .sheet-foot:not(.lab-foot){display:flex;flex-direction:row;gap:10px;padding:12px 16px}.passport-sheet .sheet-foot:not(.lab-foot)>*{flex:1;width:auto;max-width:none;margin:0;min-height:46px}
.quest-passport{display:block;text-align:left;margin:0 0 16px}
.message-quest .pp-meter{grid-column:1/-1}
.passport-species .site-specimen .undiscovered-site{height:43px;font-size:22px}
/* Player marks use one circular crop in the chooser and on the home screen. */
#game .phone-sheet .profile-form>.avatar-picker{grid-column:1/-1;min-width:0;margin:0;padding:0;border:0;text-align:left}
.avatar-preview{display:block;position:relative;width:112px;min-height:112px;margin:0 auto;cursor:pointer;list-style:none}
.avatar-portrait{display:block;position:relative;width:100%;height:100%;overflow:hidden;border-radius:50%;background:#f4eddb}
.avatar-portrait img{position:absolute;top:0;left:0;display:block;width:100%;height:100%;max-width:none;object-fit:contain} /* 大きさと位置は avatarImg が1枚ずつ指定（avatar-fit.js） */
.avatar-preview .avatar-portrait{height:112px;border:2px solid #e0d8c1}
.avatar-add{position:absolute;right:-2px;bottom:-2px;display:grid;place-items:center;width:30px;height:30px;border:2px solid #fff9ea;border-radius:50%;background:#397e6b;color:#fffbed;font-size:23px;font-weight:500;line-height:1;box-shadow:0 2px 3px #304c3a55}
.avatar-choices{margin:0}.avatar-choices summary::-webkit-details-marker{display:none}.avatar-preview:focus-visible{outline:3px solid #e2a845;outline-offset:4px;border-radius:50%}
.avatar-tabs{display:flex;gap:4px;flex-wrap:wrap;margin:12px 0 8px}
.avatar-tabs button{font-size:12px;padding:6px 9px;min-height:32px;border-radius:16px;background:#f2efdf;color:#4b6157}
.avatar-tabs button[aria-pressed=true]{background:#397e6b;color:#fffbed}
.avatar-options{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;width:100%}
.avatar-picker{container-type:inline-size}
@container(min-width:440px){.avatar-options{grid-template-columns:repeat(6,minmax(0,1fr));gap:10px}}
.avatar-options[hidden]{display:none}
.avatar-option{position:relative;display:block!important;aspect-ratio:1;cursor:pointer;min-width:0}
.avatar-option input{position:absolute;width:100%;height:100%;inset:0;margin:0;opacity:0;cursor:pointer;z-index:2}
.avatar-option .avatar-portrait{border:3px solid transparent}
.avatar-option input:checked+.avatar-portrait{border-color:#397e6b;background:#dcece1}
.avatar-option input:focus-visible+.avatar-portrait{outline:3px solid #e2a845;outline-offset:2px}
.phone-avatar{align-items:center}
.home-avatar-pick{position:relative;flex:none;width:54px;height:54px;padding:0;border:0;border-radius:50%;background:transparent;cursor:pointer}
.home-avatar-pick .avatar-portrait{border:2px solid #e0d8c1}
.home-avatar-pick .avatar-add{width:22px;height:22px;right:-4px;bottom:-3px;font-size:17px}
.home-avatar-pick:focus-visible{outline:3px solid #e2a845;outline-offset:4px}
@media(max-width:480px){.avatar-preview{width:104px;min-height:104px}.avatar-preview .avatar-portrait{height:104px}.home-avatar-pick{width:48px;height:48px}}
.phone-avatar{justify-content:flex-start;gap:12px}
.phone-avatar>span:last-child{margin-left:auto}
/* クエストカードを画面の半分以下に（2026-10-21）：頭は1行、マス目は小さい絵の1列 */
.quest-passport{padding:10px 14px 8px}.quest-passport .passport-head{align-items:center;padding-bottom:6px}.quest-passport .passport-head h2{font-size:18px}.quest-passport .passport-head p{font-size:12px}.quest-passport .passport-stamp,.quest-passport .unknown-mark.passport-stamp{width:44px;height:44px;font-size:20px}
.passport-species.mini{padding:6px 0}.passport-species.mini h3{font-size:13px;margin:0 0 4px}.passport-species.mini>div{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);grid-template-columns:none;gap:4px}.passport-species.mini .site-specimen{padding:3px;gap:0}.passport-species.mini .site-specimen img{height:30px}.passport-species.mini .site-specimen>span:not(.undiscovered-site){position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}.passport-species.mini .site-specimen .undiscovered-site{height:30px;font-size:16px}.passport-species.mini .tile-star{font-size:9px;top:0;right:1px}
.quest-passport .quest-assemble{width:100%;margin-top:8px;min-height:44px}
.quest-passport .passport-species.mini{padding:4px 0}.quest-passport .passport-species.mini h3{margin:0 0 3px}.quest-passport .quest-assemble{min-height:40px;margin-top:6px}.quest-passport .passport-head{padding-bottom:4px}
.tut-bubble[data-noarrow] .tut-arrow{display:none}
.quest-passport{padding:8px 12px 6px}
/* 組み立て完成（2026-10-21）：暗転して骨格・名前・COMPLETE! */
.asm-reveal{position:fixed;inset:0;z-index:80;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:24px;background:#0c1510;animation:asm-dim .5s ease-out both;cursor:pointer}
.asm-reveal img{width:min(84vw,760px);max-height:56vh;object-fit:contain;opacity:0;animation:asm-in .9s ease-out .4s forwards;filter:drop-shadow(0 0 22px #ffe7a855)}
.asm-reveal h2{margin:0;color:#fff6dc;font-size:clamp(24px,5vw,40px);letter-spacing:.12em;opacity:0;animation:asm-up .6s ease-out 1.1s forwards}
.asm-reveal b{white-space:nowrap;font-size:clamp(20px,5vw,36px);font-weight:900;color:#fff;letter-spacing:.06em;padding:.3em 1.1em;border-radius:999px;background:linear-gradient(#f0b54a,#cf7a2a);box-shadow:0 6px 0 #9a5418,0 14px 30px #0008;text-shadow:0 2px 0 #9a5418;opacity:0;animation:asm-pop .7s ease-out 1.5s forwards}
.asm-reveal.out{animation:asm-out .45s ease-in forwards}
@keyframes asm-dim{from{background:#0c151000}to{background:#0c1510f2}}@keyframes asm-in{from{opacity:0;scale:.9}to{opacity:1;scale:1}}@keyframes asm-up{from{opacity:0;translate:0 12px}to{opacity:1;translate:0 0}}@keyframes asm-pop{0%{opacity:0;scale:.4}60%{opacity:1;scale:1.12}100%{opacity:1;scale:1}}@keyframes asm-out{to{opacity:0}}
/* 組み立ての画面・完成の画面は羊皮紙風（2026-10-21） */
.assemble-sheet .sheet-body{background:linear-gradient(#f7eed6,#efe2c2)}.assemble-sheet .assembly-stage{background:radial-gradient(ellipse at 50% 60%,#fffaf0,#eadcb8);box-shadow:inset 0 0 0 1px #d9c79c}
.completion-passport .completion-art{display:grid;place-items:center;grid-template-rows:100%;height:clamp(160px,40dvh,320px);overflow:hidden;border-radius:12px;background:radial-gradient(ellipse at center,#fffaf0 0,#f1e6c9 70%)}
.completion-passport .completion-art img{height:100%;width:100%;min-height:0;object-fit:contain}
.completion-passport .specimen-name{text-align:center;margin:8px 0 4px}.completion-passport .specimen-name h2{margin:0;font-size:26px}.completion-passport .specimen-name i{display:block;font:italic 14px Georgia;color:#7a6a48;margin-top:2px}
.completion-passport .passport-rows{grid-template-columns:max-content 1fr;column-gap:14px}.completion-passport .passport-rows dd{display:flex;align-items:center;gap:6px}
.completion-passport .completion-art{height:clamp(140px,calc(100dvh - 530px),300px)}
.passport-sheet .sheet-body>.completion-passport{display:flex;flex-direction:column;flex:1 1 auto;min-height:0}.completion-passport .completion-art{flex:1 1 0;height:auto;min-height:140px;max-height:340px}
.passport-sheet .sheet-body>.completion-passport{align-items:stretch}@keyframes asm-dim{from{background:#0c151000}to{background:#0c1510}}
/* 第3段（2026-10-21）：白い画面を羊皮紙風に。バーは共通の色（pp-meter と同じ） */
.team-head,.home-status,.fw-team-sheet .fw-year{background:linear-gradient(#f7eed6,#efe2c2);border:1px solid #d9c79c;border-radius:14px;box-shadow:inset 0 0 0 4px #f9f3e2,inset 0 0 0 5px #e0cfa6;color:#3c3424}
.home-status{padding:14px 16px;border-bottom:1px solid #d9c79c;margin-bottom:12px}
.team-head .tb,.team-row .hpb{height:6px;border-radius:99px;background:#e2e3d3}.team-head .tb em,.team-row .hpb i{background:#78a06c}.team-head .tc.ng .tb em{background:#c96a4a}.team-head .tc.ng b{color:#b4553a}
.team-row{background:#fbf5e3;border:1px solid #eadcb8}.team-row:hover{background:#f5ebd0}
.home-exp meter::-webkit-meter-bar{background:#e2e3d3;border:0;border-radius:99px}.home-exp meter::-webkit-meter-optimum-value{background:#78a06c;border-radius:99px}
.fw-progress-line progress::-webkit-progress-bar{background:#e2e3d3}.fw-progress-line progress::-webkit-progress-value{background:#78a06c}.fw-progress-line progress::-moz-progress-bar{background:#78a06c}
.advisor-passport .passport-rows dd{overflow-wrap:anywhere}

/* 仲間（2026-10-21）：同行のピル・ミアの🔒（×と同じ位置）・この地点の人も同じ行の形 */
.team-pill{display:inline-flex;align-items:center;margin-left:8px;padding:1px 10px;border-radius:999px;font-size:11px;font-weight:700;line-height:1.7;vertical-align:middle;border:1px solid #9ebfb4;background:#fffbed;color:#2f6b5a;cursor:pointer}
.team-pill.on{background:#3f7f6c;border-color:#3f7f6c;color:#fff;cursor:default}
.team-lock{cursor:default;color:#8a7a52}
.team-slot{flex:none;width:96px;display:flex;justify-content:center}.team-slot .team-pill{margin:0;padding:3px 12px;font-size:12px}.team-row .team-slot .team-crew-btn{margin:0;padding:6px 10px;font-size:12px}
.team-row.partner{border-color:#498475;box-shadow:0 0 0 1px #498475;background:#eef2df}.team-row.partner:hover{background:#e6eed6}
.sheet:has(.lab-nav):has(.sheet-foot:not(.lab-foot)) .cart-fab{bottom:var(--fab-b,180px)} /* 下のボタンとタブの2段があるときは、その上 */
/* 仲間の行（スマホでも1行ずつ収まる形・2026-10-21）：名前の段＝名前（左）＋ピル（右端）、バーの段＝バー＋おにぎり */
.team-row .tx{padding-right:26px}.team-row .team-top{display:flex;align-items:center;gap:8px;min-height:30px}.team-row .team-top>b{flex:1;min-width:0;text-align:left;font-size:14px}.team-row .team-top .team-slot{width:auto}
.team-row .team-hp{display:flex;align-items:center;gap:8px}.team-row .team-hp .hpb{flex:1}.team-row .team-hp .rice-slot{width:44px;margin:0}
.team-row .team-stats{justify-content:flex-start}.team-row .team-ability{text-align:left}

/* 一言のお知らせ（2026-10-21）：チュートリアルの吹き出し（.tut-bubble）を矢印なしで独立させた形 */
.notice-pop{position:fixed;z-index:90;transform:translate(-50%,-50%);display:flex;align-items:center;gap:10px;max-width:min(360px,calc(100vw - 32px));padding:10px 18px 10px 10px;background:#fffaf0;border-radius:18px;box-shadow:0 6px 0 #d7c9a2,0 14px 30px #0004;color:#2d4a3c;pointer-events:none;animation:notice-in .18s ease-out both}
.notice-pop img{width:46px;height:46px;border-radius:50%;background:#EBB07A;flex:none;object-fit:cover}
.notice-pop p{margin:0;font-size:16px;font-weight:700;line-height:1.45}
.notice-pop.go{pointer-events:auto;cursor:pointer}
.notice-pop.out{animation:notice-out .45s ease-in forwards}
@keyframes notice-in{from{opacity:0;transform:translate(-50%,-50%) scale(.85)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}
@keyframes notice-out{to{opacity:0;transform:translate(-50%,calc(-50% - 32px))}}
.notice-pop{width:max-content}
/* 仲間の行を1人2段に（2026-10-21）：一覧で全員が見えるように */
.team-row{padding:6px 10px;gap:10px}.team-row .tx{gap:3px;padding-right:30px}
.team-row .team-top{display:flex;align-items:center;gap:8px;min-height:32px}.team-row .team-top>b{flex:none;width:5.5em;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.team-row .team-top .hpb{flex:1;min-width:40px}.team-row .team-top .rice-slot{width:32px;margin:0;flex:none}.team-row .team-top .rice-btn{width:32px;height:32px}.team-row .team-top .rice-btn img{width:22px;height:22px}.team-row .team-top .rice-btn b{font-size:10px;min-width:16px;height:16px;line-height:16px;right:-5px;bottom:-4px}
.team-row .team-top .team-slot{width:76px;flex:none;justify-content:flex-end}.team-row .team-slot .team-pill{padding:2px 10px}
.team-row .team-stats{flex-wrap:nowrap;white-space:nowrap;overflow:hidden;justify-content:flex-start}.team-row .team-stats .team-ability{display:inline-flex;min-width:0;overflow:hidden;text-overflow:ellipsis;margin:0}
.team-row .team-stats .team-ability{display:block;flex:1 1 auto}.team-row .team-stats .team-ability .icon{vertical-align:-2px;margin-right:3px}
.team-join{background:#3f7f6c;border-color:#3f7f6c;color:#fff}.team-join:hover{background:#346d5c}
.team-page{gap:6px}.team-ttl{margin:4px 0 0}
.team-row .tx{padding-right:0}.team-row .team-top .team-leave{position:static;flex:none}.team-row .team-top .team-leave:not(.team-lock):not(.team-join){}
/* スマホ幅：1段目＝名前・同行・角、2段目＝バー＋おにぎり、3段目＝数字（バーが短くなりすぎないように） */
@media(max-width:480px){.team-row .team-top{flex-wrap:wrap;row-gap:4px}.team-row .team-top>b{order:1;flex:1;width:auto}.team-row .team-top .team-slot{order:2;width:auto}.team-row .team-top .team-leave{order:3}.team-row .team-top .hpb{order:4;flex:1 1 calc(100% - 40px)}.team-row .team-top .rice-slot{order:5}.team-row .team-slot .team-pill{padding:2px 8px;font-size:11px}}
/* 何かの骨のページ（2026-10-21）：ミアの一言（吹き出し） */
.specimen-passport .bone-say{display:flex;align-items:center;gap:10px;margin:10px 0 6px;padding:10px 14px;border-radius:14px;background:#fffdf6;box-shadow:0 1px 4px #5a4a2a22;text-align:left;font-size:15px;color:#4a4030}.specimen-passport .bone-say img{width:40px;height:40px;border-radius:50%;flex:none;object-fit:cover}
.chat-photo-open{display:block;padding:0;border:0;background:none;cursor:zoom-in;width:100%}.photo-full-pop{z-index:85}.photo-full-pop img{max-width:94vw;max-height:88dvh;border-radius:14px}

/* 2026-10-23 BOSS前半：例文の穴埋め */
.tk-en.cz-en{font-size:clamp(20px,4.6vw,30px);font-weight:700;letter-spacing:0;line-height:1.55;min-height:3.1em;background:none;-webkit-text-fill-color:#7a6a45;text-align:center} /* 単語の色 #c9b98f を濃くした色（2026-10-28） */
#game .talk-screen.tk .tk-en.cz-en,.tk-en.cz-en{position:relative}
.cz-src{align-self:flex-end;margin-top:2px;font-size:11px;color:#8d8a7b}
#game .talk-screen.tk .tk-en.cz-en,.tk-card .tk-en.cz-en{font-size:clamp(20px,4.2vw,30px);line-height:1.55;min-height:3.1em}
.cz-blank{display:inline-block;min-width:calc(var(--n,3)*.62em);border-bottom:3px solid #c9953a;margin:0 .12em;-webkit-text-fill-color:initial}
.cz-fill{font-weight:800;-webkit-text-fill-color:#e0a21a}
.cz-fill.morph{animation:cz-morph .55s ease-out both}
@keyframes cz-morph{from{opacity:0;transform:translateY(.45em) scale(.8)}to{opacity:1;transform:none}}
.tk-ja.cz-ja,.tk-card .tk-ja.cz-ja{color:#2f7a5e;line-height:1.5;min-height:2.6em;font-size:clamp(16px,3.4vw,20px)}
.cz-mark{text-decoration:underline;text-decoration-color:#2f7a5e; /* 日本語の文字と同じ緑（2026-10-29） */text-decoration-thickness:3px;text-underline-offset:5px;color:inherit;font-weight:800}
.cz-typed{min-height:1.6em;font-size:clamp(18px,4vw,24px);font-weight:700;color:#2f7a5e;letter-spacing:.04em}

/* 場面のラベル：NEWリボン（カードの左上の角）・文章でチェック・単語テスト */
.tk-ribbon{position:absolute;left:0;top:0;width:96px;height:96px;overflow:hidden;border-top-left-radius:28px;pointer-events:none;z-index:2}
.tk-ribbon span{position:absolute;left:-34px;top:21px;width:134px;transform:rotate(-45deg);text-align:center;background:linear-gradient(#d4272c,#a01418);color:#fff;font-weight:900;font-size:14px;letter-spacing:.12em;line-height:1;padding:5px 0;box-shadow:0 2px 3px rgba(0,0,0,.3)}
.tk-phase{position:absolute;left:50%;top:-14px;transform:translateX(-50%);padding:4px 14px;border-radius:999px;font-size:13px;font-weight:800;color:#fff;white-space:nowrap;box-shadow:0 2px 0 rgba(0,0,0,.2);z-index:2}
.tk-phase-check{background:#2f7a5e}.tk-phase-test{background:#c0392b}
/* 河原の同行者は高さで描く（scene-layout.js の data-fit="height"） */
.camp-button[data-fit=height]>img{width:auto;height:100%;max-width:none}

/* ログイン画面（2026-10-28）：第1章の扉（.chapter-card）と同じ紙・二重の枠・紋章・題字。ゲームの共通の枠（.sheet）は使わない */
.login{position:fixed;inset:0;z-index:200;display:grid;place-items:center;overflow:auto;padding:max(16px,env(safe-area-inset-top)) 16px max(16px,env(safe-area-inset-bottom));background:#d5ccbd;color:#4a4035;font-family:-apple-system,BlinkMacSystemFont,'Hiragino Kaku Gothic ProN','Yu Gothic',sans-serif;letter-spacing:normal}
.login-page{position:relative;box-sizing:border-box;width:min(520px,100%);display:flex;flex-direction:column;align-items:center;padding:clamp(44px,7vw,64px) clamp(34px,7vw,64px) clamp(40px,6vw,56px);border-radius:3px;background:radial-gradient(ellipse at 45% 35%,#fbf4e4,#efe1c4);box-shadow:0 2px 0 #d8c7a8,0 5px 0 #f4ead5,0 8px 0 #b8a68b,0 20px 50px #55463330;text-align:center}
.login-page::before{content:'';position:absolute;inset:18px;border:1px solid #96826560;outline:1px solid #96826526;outline-offset:5px;pointer-events:none}
.login-brand{display:flex;flex-direction:column;align-items:center;color:#786650}
.login-emblem{position:relative;display:block;width:132px;height:128px;overflow:hidden}
.login-emblem>img{position:absolute;width:150px;height:225px;max-width:none;left:-9px;top:-21px}
.login-page h1{display:flex;align-items:baseline;gap:8px;margin:4px 0 0;font:600 50px/1 'Iowan Old Style','Palatino Linotype','Book Antiqua',Georgia,serif;letter-spacing:-.025em;color:#786650}
.login-the{font-size:20px;letter-spacing:0}
.login-rule{width:56px;height:1px;margin:26px auto 22px;border:0;background:#96826580}
.login-page p{margin:0;max-width:22em;font-size:14px;line-height:1.95;color:#6f6252;text-wrap:pretty}
.login-google{display:block;width:min(280px,100%);min-height:50px;margin:28px auto 0;border:0;border-radius:25px;background:#5f7f68;color:#fffaf0;font-size:15px;font-weight:700;box-shadow:0 3px #44604d;cursor:pointer}
.login-google:hover{background:#56765f}.login-google:disabled{opacity:.6;cursor:default}
.login-google:focus-visible{outline:2px solid #72967b;outline-offset:3px}
.login-page .login-error{margin-top:14px;font-size:13px;line-height:1.7;color:#a5503f}
.login-page .login-note{margin-top:22px;font-size:11.5px;line-height:1.8;color:#8a7b67}
@media(max-width:480px){.login-page{padding:40px 30px 36px}.login-page::before{inset:12px}.login-emblem{width:100px;height:96px}.login-emblem>img{width:113px;height:170px;left:-7px;top:-16px}.login-page h1{font-size:40px}.login-the{font-size:17px}.login-rule{margin:20px auto 18px}}
/* プロフィールのログアウト・アカウント削除（2026-10-27）：2列の片側に押し込まれていたので、横幅いっぱいの段にする */
.profile-form .account-actions{grid-column:1/-1;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px 16px;margin-top:4px;padding-top:14px;border-top:1px solid #e3dcc7}
.profile-form .account-actions .text-button{display:inline-flex;align-items:center;justify-content:center;margin:0;min-height:40px}
.profile-form .account-actions [data-action="sign-out"]{padding:8px 20px;border-radius:20px;background:#eef0e2;color:#4f6b58;box-shadow:inset 0 0 0 1px #cfd6bd;font-size:14px}
.profile-form .account-actions [data-action="account-delete"]{padding:8px 4px;background:none;box-shadow:none;color:#a5503f;font-size:13px;text-decoration:underline;text-underline-offset:3px}

/* 読み込み中（2026-10-28）：画面は切り替えず、真ん中の小さなピル（ゲームの途中の待ちにも使う・app.js の waitOn）。時計の針が1秒に1目盛り進む（点滅なし）。最初の画面かログイン画面が出たら消す */
.boot-pill{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);z-index:300;display:flex;align-items:center;gap:8px;padding:7px 16px 7px 9px;border-radius:999px;background:#fffaf0;color:#2d4a3c;font:700 13px/1.2 -apple-system,BlinkMacSystemFont,'Hiragino Kaku Gothic ProN','Yu Gothic',sans-serif;box-shadow:0 2px 0 #0002,0 6px 16px #0002;white-space:nowrap}
.boot-clock{width:22px;height:22px;flex:none}
.boot-hand{transform-origin:12px 12px;animation:boot-tick 12s steps(12) infinite}
@keyframes boot-tick{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){.boot-hand{animation:none}}
/* フィールドワークの札（2026-10-28） */
.cut-tag{position:absolute;left:50%;top:-30px;transform:translateX(-50%);display:flex;align-items:center;gap:6px;padding:4px 4px 4px 11px;border-radius:999px;background:#fffaf0;color:#2d4a3c;font-size:12px;font-weight:700;white-space:nowrap;box-shadow:0 2px 0 #0002,0 4px 10px #0002;z-index:4}
.cut-tag[hidden]{display:none}
.cut-tag i{display:grid;place-items:center;width:20px;height:20px;border-radius:50%;background:#ece6d4;color:#6f6252;font-style:normal;font-size:12px;line-height:1;cursor:pointer}
.cut-tag i:hover{background:#e0d8c2}
/* 日本語を言葉の途中で折り返さない（2026-10-28）。Chrome・Edge は文節で折り返す。短い文は最後の行に少しだけ残らないようにそろえる（Safari も） */
:root{word-break:auto-phrase}
.tut-bubble p,#toast,h1,h2,h3,button,.marker-name,.detail-copy{text-wrap:balance}

/* 一緒に読んでみよう（2026-10-28）：例文の読み上げの間、英文の下の欄に出す */
.read-along{display:inline-flex;align-items:center;gap:6px;padding:5px 14px 5px 10px;border-radius:999px;background:#e3efe7;color:#2f6b55;font-size:14px;font-weight:800;letter-spacing:.02em;white-space:nowrap}
.read-along .icon{width:18px;height:18px}

/* 展示のお金がたまった印（2026-10-28）：数字のない赤い丸 */
.tab-badge.dot{min-width:0;width:12px;height:12px;padding:0}

/* 展示室（2026-10-29）：画面いっぱいの横長の部屋を横にスクロール。背景は art/museum/bg-N.png を横に並べる（無ければ単色）。
   展示台は art/museum/stand-N.png（無ければ簡単なガラスと台を後ろに描く） */
.gallery{position:fixed;inset:0;z-index:150;display:flex;flex-direction:column;background:#d9cfbd;color:#2d4a3c}
.g-scroll{flex:1;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;scroll-snap-type:x mandatory;scroll-padding-inline:clamp(28px,7vw,80px);-webkit-mask-image:linear-gradient(90deg,#000 0,#000 calc(100% - 48px),transparent);mask-image:linear-gradient(90deg,#000 0,#000 calc(100% - 48px),transparent)}
.g-room{position:relative;box-sizing:border-box;height:100%;min-width:100%;width:max-content;display:flex;align-items:flex-end;gap:clamp(14px,3vw,30px);padding:0 clamp(28px,7vw,80px) 12vh}
/* 背景は少し暗く・色を薄く・軽くぼかして、標本を目立たせる（2026-10-29）。標本と台にはかけない */
.g-room::before{content:'';position:absolute;inset:-6px;z-index:0;background:var(--bg) repeat-x left top/auto 100%;filter:brightness(.9) saturate(.7) blur(1.5px);pointer-events:none}
.g-room>*{z-index:1}
.g-case{position:relative;flex:none;height:clamp(160px,58vh,420px);aspect-ratio:6/7;padding:0;border:0;background:none;scroll-snap-align:start;cursor:pointer}
.g-stand{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}
.g-case:not(.is-skel):not(:has(.g-stand))::before{content:'';position:absolute;left:9%;right:9%;top:5%;bottom:22%;border-radius:6px;background:linear-gradient(160deg,#ffffff70,#ffffff20 45%,#ffffff40);border:1px solid #ffffffaa}
.g-case:not(.is-skel):not(:has(.g-stand))::after{content:'';position:absolute;left:3%;right:3%;bottom:0;height:22%;border-radius:4px;background:linear-gradient(#8c6a45,#5d4329)}
/* 標本はガラスケースの中に収め、床に置く。台ごとのガラスの内側（画像を5%刻みで測った・2026-10-29） */
.g-item{position:absolute;left:19%;right:19%;top:17%;bottom:46%;z-index:1;display:flex;align-items:flex-end;justify-content:center}
.g-case.stand-1 .g-item{left:16%;right:16%;top:30%;bottom:49%}
.g-case.stand-3 .g-item{left:25%;right:25%;top:16%;bottom:43%}
.g-item img{max-width:100%;max-height:100%;object-fit:contain;object-position:center bottom;filter:drop-shadow(0 4px 3px #0005)}
.g-plate{position:absolute;left:50%;bottom:9%;transform:translateX(-50%);z-index:2;max-width:88%;padding:2px 8px;border-radius:3px;background:linear-gradient(#e9cf8f,#c9a659);color:#3e2c12;font-size:clamp(10px,1.6vh,13px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.g-rate{position:absolute;left:0;right:0;bottom:1%;z-index:2;font-size:10px;color:#fffaf0;text-align:center;text-shadow:0 1px 2px #0009}
.g-case.stand-1 .g-empty{inset:30% 16% 49%}.g-case.stand-3 .g-empty{inset:16% 25% 43%}
.g-empty{position:absolute;inset:17% 19% 46%;z-index:1;display:grid;place-items:center;border:1.5px dashed #0003;border-radius:6px;color:#0006;font-size:12px}
.g-case.empty .g-stand{opacity:.5}
.g-top{position:absolute;top:max(10px,env(safe-area-inset-top));left:10px;right:10px;z-index:2;display:flex;align-items:center;gap:8px;flex-wrap:wrap;pointer-events:none}
.g-top>*{pointer-events:auto}
.g-title{padding:6px 14px;border-radius:16px;background:#fffaf0e6;font-size:14px}
.g-chips{margin-left:auto;display:flex;flex-wrap:wrap;justify-content:flex-end;gap:6px}
.g-chip{padding:6px 12px;border:0;border-radius:16px;background:#fffaf0e6;color:#2d4a3c;font-size:12px;box-shadow:0 2px 0 #0002}
.g-chip b{font-size:14px}
.g-claim{background:#c9953a;color:#fff;font-weight:800;cursor:pointer}
.g-info{cursor:pointer}
.g-turn{display:none}
@media(orientation:portrait){.g-turn{display:block;position:absolute;right:12px;bottom:max(12px,env(safe-area-inset-bottom));margin:0;padding:5px 10px;border-radius:14px;background:#fffaf0e6;font-size:11px}.g-room{padding-bottom:20vh}.g-case{height:clamp(150px,40vh,300px)}}

/* 石を割る：煽りの文字と、割れる回の待ち（2026-10-29） */
.rock-cheer{position:fixed;z-index:65;pointer-events:none;font-weight:900;color:#fff;-webkit-text-stroke:1px #5a3a1a;paint-order:stroke;text-shadow:0 2px 0 #5a3a1a,0 0 12px rgba(255,190,80,.8);white-space:nowrap}
.rock-wait{animation:rock-tremble .09s linear infinite}
.rock-wait .crack-lines path{filter:drop-shadow(0 0 4px #ffd36a) drop-shadow(0 0 10px #ffb02e)}
@keyframes rock-tremble{0%{transform:translate(0,0)}25%{transform:translate(-2px,1px)}50%{transform:translate(2px,-1px)}75%{transform:translate(-1px,-1px)}100%{transform:translate(0,0)}}
@media (prefers-reduced-motion:reduce){.rock-wait{animation:none}}

/* 展示室の左右の矢印とドラッグ（2026-10-29） */
.g-scroll.dragging{cursor:grabbing;user-select:none}.g-scroll.dragging .g-case{pointer-events:none}
.g-arrow{position:absolute;top:50%;z-index:3;width:44px;height:44px;margin-top:-22px;border:0;border-radius:50%;background:#fffaf0e6;color:#2d4a3c;font-size:28px;line-height:40px;box-shadow:0 2px 6px #0003;cursor:pointer}
.g-prev{left:max(10px,env(safe-area-inset-left))}.g-next{right:max(10px,env(safe-area-inset-right))}
.g-arrow[hidden]{display:none}

/* 道具アプリの思い出の品（2026-10-29） */
.tools-nav .tools-nav-photo{width:28px;height:28px;border-radius:7px;object-fit:cover}
.lab-keepsakes p{align-items:center}.lab-keepsakes p>img{width:34px;height:34px;border-radius:50%;flex:none}.lab-keepsakes p>b{flex:1}
.memory-photos{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.memory-photos button{display:flex;flex-direction:column;gap:4px;padding:0;border:0;background:none;text-align:left;cursor:pointer}
.memory-photos img{width:100%;aspect-ratio:3/2;object-fit:cover;border-radius:12px;box-shadow:0 2px 6px #0002}
.memory-photos span{font-size:12px;color:#55624f}
.memory-photo{margin:0;display:flex;flex-direction:column;gap:12px}
.memory-photo img{width:100%;border-radius:14px;box-shadow:0 4px 12px #0003}
.memory-photo figcaption{display:flex;flex-direction:column;gap:6px}.memory-photo figcaption span{font-size:14px;color:#55624f;line-height:1.6}

/* ホームのアプリが下のナビに付いて見切れる（2026-10-29）：縦の間隔を詰め、最後の段の下に余白を残す。入りきらない高さではスクロールして余白まで見せる */
#game .phone-sheet .phone-wallpaper{gap:18px;padding-bottom:22px}
#game .phone-sheet .home-status{gap:10px;padding-bottom:14px}
#game .phone-sheet .phone-wallpaper .phone-apps{row-gap:14px}

/* 標本の余白を切って床に置く（art-box.json・2026-10-29）。枠に収まる大きさ（横÷縦 --r） */
.g-item{container-type:size}
.g-crop{position:relative;display:block;overflow:visible;width:min(100cqw,calc(100cqh * var(--r)));aspect-ratio:var(--r);filter:drop-shadow(0 4px 3px #0005)}
.g-item .g-crop img{position:absolute;max-width:none;max-height:none;filter:none}
/* 骨格は台座に大きく（台座の絵 pedestal-N.png が無いときは単色の台・2026-10-29） */
.g-case.is-skel{aspect-ratio:10/7;height:clamp(184px,66vh,480px)} /* 骨格はほかの展示より約1.15倍大きく（2026-10-29） */
.g-case.is-skel .g-item{left:3%;right:3%;top:2%;bottom:23%}
.g-pedestal{position:absolute;left:0;right:0;bottom:0;width:100%;height:auto} /* 1000×160 → 幅10:高さ7の枠で下から約23%（.g-item の bottom と同じ） */
.g-plinth{position:absolute;left:6%;right:6%;bottom:0;height:22%;border-radius:3px;box-shadow:0 10px 18px -8px #0007}
.g-case:has(.g-pedestal) .g-plinth{display:none}
.g-case.stand-1 .g-plinth{background:linear-gradient(#e9e4da,#c9c2b4)}
.g-case.stand-2 .g-plinth{background:linear-gradient(#9a6a3e,#6b4526)}
.g-case.stand-3 .g-plinth{background:linear-gradient(#f4f1ec,#d3cec6)}
.g-case.is-skel .g-plate{bottom:11%}
/* 展示の管理（2026-10-29） */
.museum-admin-top{display:flex;flex-direction:column;gap:6px}
.museum-admin-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:6px}
.museum-rows{display:grid;gap:8px;margin-top:12px}
.museum-row{display:flex;align-items:center;gap:8px;padding:6px 8px 6px 6px;border-radius:14px;background:#f3eedc}
.museum-row-main{flex:1;min-width:0;display:flex;align-items:center;gap:10px;padding:0;border:0;background:none;text-align:left;cursor:pointer}
.museum-no{width:22px;flex:none;text-align:center;font-size:12px;color:#74886a}
.museum-thumb{width:52px;height:52px;flex:none;display:grid;place-items:center;border-radius:10px;background:#fffaf0;color:#9aa58f;font-size:22px;container-type:size;overflow:hidden}
.museum-thumb>img{max-width:88%;max-height:88%;object-fit:contain}
.museum-thumb .g-crop{width:min(86cqw,calc(86cqh * var(--r)))}.museum-thumb .g-crop img{position:absolute;max-width:none;max-height:none}
.museum-name{display:flex;flex-direction:column;min-width:0}.museum-name b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.museum-name small{font-size:12px;color:#74886a}
.museum-row>button.secondary{flex:none;width:auto;min-height:36px;margin:0;padding:6px 14px}
.museum-admin-actions>button{width:auto;margin:0}
.museum-row.empty{background:none;border:1.5px dashed #d9d2bb}
.g-case.is-skel .g-rate{left:50%;right:auto;bottom:1%;transform:translateX(-50%);padding:1px 8px;border-radius:8px;background:#0006;white-space:nowrap}
@media(orientation:portrait){.g-case.is-skel{height:clamp(172px,46vh,345px)}}

/* 過去問BOSS（2026-10-29）：会話は話し手ごとに改行。前の空欄の正解は薄く。横長の画面は 左＝問題・右＝選択肢 */
.exam-battle-prompt p{white-space:pre-line}
.exam-filled{color:#8a7f66;text-decoration:underline;text-decoration-color:#c9b98f;text-underline-offset:4px}
.exam-battle-number{font-weight:700;letter-spacing:.04em}
@media(min-width:900px) and (orientation:landscape){
 .exam-battle{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(260px,1fr);grid-template-rows:auto minmax(0,1fr) auto;grid-template-areas:'head head' 'prompt options' 'foot foot';column-gap:32px}
 .exam-battle-head{grid-area:head}.exam-battle-prompt{grid-area:prompt;overflow:auto}.exam-battle-foot{grid-area:foot}
 .exam-battle-options{grid-area:options;grid-template-columns:1fr;align-content:center;gap:12px}
 .exam-battle-choice{min-height:64px}
 .exam-battle-prompt p{font-size:clamp(18px,1.9vw,26px)}
}
/* 過去問BOSSの結果：調査メモの紙（暗唱・文法パズルの終わりと同じ） */
.test-report{width:100%;height:100%;display:grid;place-items:center;padding:20px;overflow:auto}
.test-memo{width:min(560px,100%);max-height:none}
.test-memo-score{display:flex;align-items:baseline;justify-content:center;gap:8px;margin:10px 0 2px}
.test-memo-score strong{font-size:64px;line-height:1;color:#3b2a18;font-variant-numeric:tabular-nums}
.test-memo-score span{font-size:26px;color:#8a6a3c}
.test-memo-score em{margin-left:10px;font-style:normal;font-size:22px;color:#7a5c36}
.test-memo-score em.pass{color:#b0402a;font-size:26px;transform:rotate(-4deg);display:inline-block;border:2px solid #b0402a;border-radius:8px;padding:0 8px}
.test-memo-need{margin:0;text-align:center;font-size:14px;color:#7a5c36}
.test-memo dl{margin:18px 0}
.test-memo-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px;margin:4px 0 0}
.test-memo-grid button{min-height:44px;padding:4px 0;display:flex;flex-direction:column;align-items:center;gap:0;border:1.5px solid #ac875466;border-radius:8px;background:#fffdf3aa;color:#4a3826;font:600 14px/1.2 inherit}
.test-memo-grid button span{font-size:13px}
.test-memo-grid button.correct span{color:#2f7a5e}.test-memo-grid button.incorrect{background:#f6e0d3aa}.test-memo-grid button.incorrect span{color:#b0402a}
.test-memo-note{margin:6px 0 16px;text-align:center;font-size:12px;color:#8a6a3c}
.test-memo>button.primary{width:100%}
.test-memo-grid{width:100%}
.test-memo-score span{white-space:nowrap}
@media(max-width:600px){.test-memo-score{flex-wrap:wrap}.test-memo-score strong{font-size:56px}.test-memo-score em{flex-basis:100%;margin:6px 0 0;text-align:center}.test-memo-score em.pass{flex-basis:auto}.test-memo dl>div{grid-template-columns:24px minmax(0,1fr) auto;gap:10px}.test-memo dd{grid-column:auto}}
/* 過去問BOSS 横長（2026-10-29 調整）：問題の左右に余白、選択肢の列を細く、問題と選択肢の上をそろえる */
@media(min-width:900px) and (orientation:landscape){
 .exam-battle{grid-template-columns:minmax(0,1fr) minmax(240px,340px);column-gap:48px}
 .exam-battle-prompt{justify-content:flex-start;padding:28px 24px 0}
 .exam-battle-options{align-content:start;padding-top:28px}
 .exam-battle-choice{min-height:58px}
}
@media(min-width:900px) and (orientation:landscape){.exam-battle-options{padding-right:24px}} /* 選択肢の右の余白を、問題の左の余白（24px）とそろえる */

/* 過去問BOSSの結果（2026-10-29 調整）：札は幅いっぱい。横長の画面は 左＝点数ともらった物・右＝25問の札 */
.test-memo .test-memo-grid{max-width:none;margin:4px 0 0;gap:8px}
.test-memo-action{margin-top:4px}.test-memo-action>button{width:100%}
@media(min-width:900px) and (orientation:landscape){
 .test-memo{width:min(900px,100%)}
 .test-memo-body{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);gap:28px;align-items:start}
 .test-memo-score{justify-content:flex-start}.test-memo-need{text-align:left}
 .test-memo dl{margin:16px 0 0}
 .test-memo-side{padding-top:8px}
}
/* 過去問BOSSの問題番号：大問を四角で囲み、そのあとに（番号）（2026-10-30） */
.exam-battle-number{display:inline-flex;align-items:center;gap:6px;font-size:15px;letter-spacing:0}
.exam-part{display:inline-grid;place-items:center;min-width:22px;height:22px;padding:0 4px;border:1.5px solid currentColor;border-radius:2px;font-size:14px;line-height:1}
/* 長い会話（2024年以降の大問2の19・20など）：文字を少し小さくし、入りきらなければ問題の中だけスクロール。「次へ」が画面の外に出ないように（2026-10-30） */
.exam-battle{max-height:100%}.exam-battle-prompt{min-height:0}
.exam-battle-prompt.long p{font-size:clamp(16px,1.55vw,22px);line-height:1.6}
/* 石を割るときの煽り（2026-10-30）：白っぽくて見えなかった → 太字のオレンジに白い縁と影 */
.rock-cheer{font-weight:900;color:#e8622c;-webkit-text-stroke:0;text-shadow:-2px -2px 0 #fff,2px -2px 0 #fff,-2px 2px 0 #fff,2px 2px 0 #fff,0 -2px 0 #fff,0 2px 0 #fff,-2px 0 0 #fff,2px 0 0 #fff,0 4px 0 #7a2e12;letter-spacing:.02em}
.exam-battle-prompt{overflow:auto} /* スマホの縦向きでも、長い会話は問題の中だけスクロール */
.exam-battle{max-height:100dvh} /* 親（#content）の高さが決まらないときも、画面の高さを超えない */
.exam-part{min-width:30px;height:30px;font-size:18px;font-weight:700;border-width:2px;color:#3e4a3f} /* 大問の四角は大きく、濃い線で（2026-10-30） */.exam-battle-number{gap:8px;font-size:16px}
/* 大問別得点のグラフ（2026-10-30）：棒＝正答率、線＝合格ライン（太い）・8割・9割 */
.exam-parts{display:grid;gap:10px;margin:14px 0 4px}
.exam-part-row{display:grid;grid-template-columns:30px 64px minmax(0,1fr);align-items:center;gap:10px}
.exam-part-row b{font-size:24px;color:#3b2a18;font-variant-numeric:tabular-nums}.exam-part-row b small{font-size:14px;color:#8a6a3c}
.exam-bar{position:relative;height:30px;border-radius:8px;background:#e7dcc3;overflow:hidden}
.exam-bar>i{position:absolute;left:0;top:0;bottom:0;width:var(--v);background:#5f8a6e;border-radius:8px 0 0 8px}
.exam-part-row.short .exam-bar>i{background:#c0704f}
.exam-bar>span{position:absolute;left:10px;top:50%;transform:translateY(-50%);font-weight:800;color:#fff;font-size:15px;text-shadow:0 1px 2px #0005}
.exam-bar>em{position:absolute;top:0;bottom:0;width:0;border-left:2px dashed #6b5636aa}
.exam-bar>em.pass-line{border-left:3px solid #3b2a18}
.exam-lines{display:flex;align-items:center;gap:6px;margin:2px 0 0;font-size:12px;color:#7a5c36}
.exam-lines i{display:inline-block;width:14px;height:0;border-top:2px dashed #6b5636aa}.exam-lines i.pass-line{border-top:3px solid #3b2a18}
.test-memo-part{margin:8px 0 4px}.test-memo-side .test-memo-part:first-child{margin-top:0}
/* 振り返りシート（2026-10-30）：白いシンプルな一覧 */
.exam-review .sheet-body{background:#fff}
.review-lead{margin:0 0 10px;font-size:13px;color:#5f6b5c}
.review-seg{display:flex;gap:4px;margin:0 0 8px;flex-wrap:wrap}
.review-count{margin:6px 0;font-size:12px;color:#7d8778}
.review-list{display:grid;gap:6px}
.review-item{border:1px solid #e4e6dc;border-radius:10px;background:#fff}
.review-item summary{display:grid;grid-template-columns:auto minmax(0,1fr) auto auto;align-items:center;gap:10px;padding:10px 12px;cursor:pointer;list-style:none}
.review-item summary::-webkit-details-marker{display:none}
.review-where{display:flex;align-items:center;gap:6px;font-size:12px;color:#5f6b5c;white-space:nowrap}.review-where .exam-part{min-width:22px;height:22px;font-size:13px}
.review-text{font-size:13px;color:#3c4a3f;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.review-answer{font-weight:700;color:#2f6b55;font-size:14px;white-space:nowrap}
.review-tally{display:flex;flex-direction:column;align-items:flex-end;line-height:1.1}.review-tally b{color:#b0402a;font-size:15px}.review-tally small{color:#7d8778;font-size:11px}
.review-item:not(.has-wrong) .review-tally b{color:#9aa294}
.review-body{padding:0 14px 14px;font-size:14px;color:#3c4a3f}.review-body p{white-space:pre-line;margin:6px 0}
.review-body ol{margin:6px 0;padding-left:22px}.review-body li.right{font-weight:700;color:#2f6b55}
.review-explain{color:#5f6b5c;font-size:13px}.review-empty{color:#7d8778;font-size:13px}
@media(max-width:600px){.review-item summary{grid-template-columns:minmax(0,1fr) auto}.review-text{display:none}.review-where{grid-column:1}.review-answer{grid-column:1}.review-tally{grid-column:2;grid-row:1/3}}
.review-body mark{background:#f3e6b8;color:inherit;border-radius:4px;padding:0 2px}
/* 間違えた問題・過去問の練習（2026-10-30 作り直し）：1列のプルダウンを上に固定、問題は全部出す、正解は色を付けない */
.exam-review .sheet-body{padding-top:0}
.review-bar{position:sticky;top:0;z-index:2;display:flex;gap:8px;align-items:flex-end;flex-wrap:nowrap;overflow-x:auto;margin:0 -14px 10px;padding:10px 14px;background:#fff;border-bottom:1px solid #e4e6dc}
.review-select{display:flex;flex-direction:column;gap:2px;flex:none;font-size:11px;color:#7d8778}
.review-select select{min-height:34px;padding:4px 26px 4px 10px;border:1px solid #d9dccf;border-radius:8px;background:#fff;font-size:14px;color:#3c4a3f}
.review-list{display:grid;gap:12px}
.review-round{display:flex;justify-content:space-between;align-items:baseline;margin:14px 0 0;padding-bottom:6px;border-bottom:2px solid #3c4a3f;font-size:16px;color:#3c4a3f}.review-round b{font-size:20px}
.review-item{padding:12px 4px 14px;border:0;border-bottom:1px solid #e4e6dc;border-radius:0;background:#fff}
.review-head{display:flex;align-items:center;gap:8px;margin:0 0 6px;font-size:14px;color:#3c4a3f}.review-head .exam-part{min-width:24px;height:24px;font-size:14px}
.review-head .review-tally{display:inline;margin-left:4px;font-size:13px;color:#5f6b5c;font-weight:700}
.review-head .review-where{margin-left:auto;font-size:12px;color:#7d8778}
.review-q{margin:0 0 6px;white-space:pre-line;font-size:15px;line-height:1.6;color:#2f3a32}
.review-q mark{background:#efe9d6;color:inherit;border-radius:4px;padding:0 2px}
.review-options{margin:0 0 8px;padding-left:22px;font-size:14px;color:#3c4a3f}
.review-show{min-height:32px;padding:4px 12px;border:1px solid #d9dccf;border-radius:8px;background:#fff;color:#3c4a3f;font-size:13px;cursor:pointer}
.review-answer{display:none;margin-top:8px;padding:8px 10px;border-radius:8px;background:#f5f5f0;font-size:14px;color:#2f3a32}.review-answer p{margin:2px 0}
.review-item.open .review-answer{display:block}
.review-explain{color:#5f6b5c;font-size:13px}
.practice-list{display:grid;gap:8px}
.practice-row{display:flex;justify-content:space-between;align-items:center;min-height:52px;padding:10px 14px;border:1px solid #e4e6dc;border-radius:10px;background:#fff;color:#3c4a3f;font-size:15px;cursor:pointer;text-align:left}.practice-row span{font-size:13px;color:#7d8778}
.test-nav .test-tab-icon{width:26px;height:26px;color:#4d5a4f}
.test-nav button[aria-pressed=true] .test-tab-icon{color:#2f3a32}
.sheet.exam-review .sheet-body{padding-top:0!important;text-align:left}
.review-bar{gap:6px}.review-select select{min-height:32px;padding:3px 22px 3px 8px;font-size:13px}
.review-q,.review-options,.review-head{text-align:left}
.practice-list{margin-top:6px}.exam-review .review-lead{text-align:left;margin-top:10px}
/* プルダウンが横にはみ出す（2026-10-30）：幅に合わせて並べ、入りきらなければ2段に折り返す */
.review-bar{display:grid;grid-template-columns:repeat(auto-fit,minmax(104px,1fr));overflow:visible}
.review-select{min-width:0}.review-select select{width:100%;min-width:0;text-overflow:ellipsis}
/* 採点結果の簡素化（2026-10-30）：1列・見出し1行・線は合格ラインだけ（上に％） */
.test-memo{width:min(560px,100%)!important}
.test-memo-head{display:flex;align-items:center;flex-wrap:wrap;gap:4px;margin:0 0 6px;font-size:15px;color:#5c4526;font-weight:700}.test-memo-head .exam-part{min-width:24px;height:24px;font-size:14px}
.test-memo-score{justify-content:center!important}
.test-memo-score em{font-size:20px}
.test-memo-score em.pass{font-size:26px}
.exam-parts{margin:22px 0 6px}
.exam-bar{overflow:visible}
.exam-bar>em.pass-line small{position:absolute;top:-17px;left:0;transform:translateX(-50%);font-style:normal;font-size:11px;font-weight:700;color:#3b2a18;white-space:nowrap}
.exam-part-row+.exam-part-row .exam-bar>em.pass-line small{display:none}
.test-memo-parts{display:inline-flex;align-items:center;gap:4px;white-space:nowrap}
.exam-bar>span{color:#3b2a18;text-shadow:none}.exam-part-row.ok .exam-bar>span,.exam-part-row.short .exam-bar>span{color:#fff;text-shadow:0 1px 2px #0005}
@media(max-width:600px){.test-memo-head{font-size:13px}.test-memo-head .exam-part{min-width:20px;height:20px;font-size:12px}}
.exam-bar.low>span{color:#3b2a18!important;text-shadow:none!important}
/* ホームのアプリの並びを、上の欄と同じ幅に（2026-10-30）：左端と右端のアイコンを上の欄の端にそろえ、間を均等に */
#game .phone-wallpaper .phone-apps{max-width:none;width:100%;grid-template-columns:repeat(4,minmax(0,78px));justify-content:space-between}
#game .phone-wallpaper .phone-app{justify-self:stretch;max-width:78px}

/* ホームのアプリ：幅に合わせて1列の数を変える（PC 6・中 5・スマホ 4）。左右の端は上の欄にそろえ、間は12px以上（2026-10-30） */
#game .phone-wallpaper{container-type:inline-size}
#game .phone-wallpaper .phone-apps{column-gap:12px}
@container (min-width:440px){#game .phone-wallpaper .phone-apps{grid-template-columns:repeat(5,minmax(0,78px))}}
@container (min-width:528px){#game .phone-wallpaper .phone-apps{grid-template-columns:repeat(6,minmax(0,78px))}}

/* 登録の紙芝居と「英検の実績」（2026-10-30） */
#profile-form.kami{display:block;max-width:330px}
.kami-dots{display:flex;justify-content:center;gap:6px;margin:0 0 20px}
.kami-dots i{display:block;width:8px;height:8px;border-radius:4px;background:#d9dbc8;transition:width .2s}
.kami-dots i.on{background:#397e6b}
.kami-dots i.now{width:22px}
.kami-page{display:grid;gap:16px;text-align:left}
.kami-page[hidden]{display:none}
.kami-page h2{margin:0;font-size:24px;line-height:1.35}
.kami-lead{margin:0;font-size:13px;color:#6b7065}
.kami-error{margin:0;font-size:13px;color:var(--danger)}
.kami-grades{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 10px}
#game .profile-form .kami-grades label,#game .profile-form label.kami-undecided{position:relative;display:block}
#game .profile-form .kami-grades input,#game .profile-form .kami-undecided input,.exam-stamps input{position:absolute;inset:0;width:100%;height:100%;min-height:0;margin:0;padding:0;opacity:0;pointer-events:none}
.kami-grades span,.kami-undecided span{display:flex;align-items:center;justify-content:center;min-height:46px;border-radius:22px;font-size:15px;font-weight:750;background:#e5e9d3;color:#56704f;box-shadow:0 3px #cbd5b5;cursor:pointer}
.kami-grades input:checked+span,.kami-undecided input:checked+span{background:#397e6b;color:#fffbe8;box-shadow:0 4px #24624f}
.kami-grades input:focus-visible+span,.kami-undecided input:focus-visible+span,.exam-stamps label:has(input:focus-visible){outline:3px solid #e8b957;outline-offset:2px}
.kami-page input[type=date]:disabled{background:#eee6cb;color:#899280}
.kami-page .avatar-picker{margin:0 auto}
.kami-summary{display:grid;grid-template-columns:auto 1fr;gap:6px 14px;margin:0;font-size:14px}
.kami-summary dt{color:#6b7065}
.kami-summary dd{margin:0;font-weight:750}
.kami-foot{display:flex;gap:12px;margin:12px 17px;flex:1;width:calc(100% - 34px)}
.kami-foot>.primary{flex:1}
.kami-foot>[hidden]{display:none}
.exam-stamps{grid-template-columns:repeat(4,minmax(0,1fr));margin:0}
.exam-stamps label.stamp-cell{display:flex;gap:4px;font-size:inherit;text-align:center;cursor:pointer}
.exam-pass-overlay{position:fixed;inset:0;z-index:85;display:grid;place-items:center;background:#1b2a2266;animation:tut-in .2s ease-out}
.exam-pass-card{width:min(360px,calc(100vw - 32px));box-sizing:border-box;display:grid;justify-items:center;gap:10px;padding:26px 18px 18px;background:#fffaf0;border-radius:24px;box-shadow:0 8px 0 #d7c9a2,0 20px 50px #0006;text-align:center;color:#2d4a3c}
.exam-pass-card h2{margin:0;font-size:22px}
.exam-pass-card p{margin:0;font-size:13px;color:#6b7065}
.exam-pass-card .primary{width:100%;margin-top:6px}
.exam-pass-stamp{width:130px;height:130px;box-sizing:border-box;border-radius:50%;border:7px double #c0392b;color:#c0392b;display:grid;place-content:center;font-size:38px;font-weight:900;line-height:1.1;rotate:-10deg;animation:stamp-hit .45s cubic-bezier(.2,1.6,.4,1) both}
.exam-pass-stamp small{font-size:18px}
.exam-pass-medal{width:84px;border-style:solid}
.exam-pass-medal .stamp-mark{animation-delay:.5s}

.exam-confirm{display:flex;gap:10px;width:100%}
.exam-confirm>*{flex:1}
.player-id{grid-column:1/-1;margin:0;font-size:11px;color:#899280;text-align:right}


/* プロフィール（2026-10-30）：顔・名前／受験級・受験日・所持級と合格報告／音量・入力方法。ほかのポップアップと同じ幅 */
.avatar-picker{border:0;padding:0;margin:0;min-width:0}
#game .profile-v2 .wide,#game .profile-v2 .profile-rule,#game .profile-v2 .profile-links{grid-column:1/-1}
.profile-rule{width:100%;margin:4px 0;border:0;border-top:1px solid #e1e4d0}
.profile-links{display:flex;flex-wrap:wrap;gap:6px 22px}
.profile-links .text-button{font-size:13px}
.profile-links .exam-report.locked{color:#8d9287}
.passed-edit .exam-stamps,.exam-pass-card .exam-stamps{width:100%}
/* ホームのメダル：名前の右に重ねて並べる。挑戦中の級は名前の下 */
.home-who{display:flex;flex-direction:column;align-items:flex-start;gap:3px;min-width:0}
#game .phone-avatar .home-goal{font-size:11px;font-weight:750;padding:2px 8px;border-radius:10px;background:#397e6b;color:#fffbe8}
.home-medals{display:flex;align-items:flex-start;flex:none;margin-left:auto}
#game .phone-avatar .home-medals+span:last-child{margin-left:10px}
.hm{display:flex;flex-direction:column;align-items:center;font-style:normal}
.hm+.hm{margin-left:-6px}
.home-medals:has(.hm:nth-child(5)) .hm+.hm{margin-left:-6px} /* 2026-11-01：重なりは常に6px（数字が隠れないように）。2文字（準2・準1）は前面 */
.hm:has(b.two){position:relative;z-index:1}
.hm-rib{display:block;width:15px;height:17px;background:var(--rib);clip-path:polygon(0 0,100% 0,100% 65%,50% 100%,0 65%)}
#game .phone-avatar .hm b{display:grid;place-items:center;width:24px;height:24px;margin-top:-4px;border-radius:50%;font-size:10px;font-weight:800;line-height:1;background:var(--metal);box-shadow:inset 0 0 0 2px var(--rim),0 2px 3px #0004;color:var(--ink)}
#game .phone-avatar .hm b.two{font-size:8px}
.hm-5{--rib:#4f9a7c}.hm-4{--rib:#4a86b8}.hm-3{--rib:#c0563a}.hm-pre2{--rib:#7a58b8}.hm-2{--rib:#d08a2c}.hm-pre1{--rib:#2f4f7a}.hm-1{--rib:#b8477f}
.hm-5,.hm-4{--metal:radial-gradient(circle at 35% 30%,#f3cfa2,#b5733a);--rim:#8f5a2b;--ink:#3d230c}
.hm-3,.hm-pre2{--metal:radial-gradient(circle at 35% 30%,#fff,#a7b0b5);--rim:#7d878d;--ink:#27323a}
.hm-2,.hm-pre1,.hm-1{--metal:radial-gradient(circle at 35% 30%,#fff3bf,#d79f35);--rim:#a8771f;--ink:#3f2a05}

/* チャンクマップの見出しの級のリボンと BOSS のピル（2026-10-31）。リボンの文字は見出しの帯の縦の中央：下の余白＝2×（下へ垂れる長さ−上へ伸ばした縁）÷2 の差を打ち消す値（PC 19・スマホ 16・横向き低 9）。色は :root の --green・--paper・--gold・--danger。
   リボンを枠の太い縁の上端から垂らすため、この画面だけ枠の切り取りをやめ、見出しの上の角に枠の内側の丸み（外の丸み−縁の太さ）を付ける */
.field-map-wrap .talk-map-sheet.field-parchment{overflow:visible}
.field-map-wrap .fw-map-status{position:relative;z-index:3;overflow:visible;border-radius:5px 11px 0 0}
.fw-progress-line .fw-grade-ribbon{position:absolute;left:12px;top:-9px;bottom:-28px;z-index:4;display:flex;align-items:center;justify-content:center;min-width:58px;padding:0 10px 19px;background:var(--green);color:var(--paper);font-size:15px;font-weight:800;letter-spacing:.04em;text-align:center;line-height:1.1;border:2px solid var(--gold);border-top:0;clip-path:polygon(0 0,100% 0,100% 100%,50% calc(100% - 12px),0 100%);filter:drop-shadow(0 3px 2px #183c3240)}
.fw-progress-line:has(.fw-grade-ribbon){padding-left:82px}
.fw-progress-line>.fw-next-boss{display:flex;align-items:center;gap:8px;margin-left:0;font-size:14px;font-weight:400}
.fw-next-boss .fw-boss-pill{display:inline-block;padding:4px 10px;border-radius:999px;background:var(--danger);color:var(--paper);font-size:11px;font-weight:800;letter-spacing:.1em;line-height:1}
.fw-next-boss b{font-size:14px}
@media(max-width:600px){.field-map-wrap .fw-map-status{border-radius:8px 14px 0 0}.fw-progress-line .fw-grade-ribbon{left:6px;top:-6px;bottom:-22px;min-width:48px;padding:0 7px 16px;font-size:13px}.fw-progress-line:has(.fw-grade-ribbon){padding-left:62px}.fw-next-boss .fw-boss-pill{font-size:10px;padding:3px 8px}.fw-next-boss b{font-size:12px}.fw-progress-line .fw-remaining{display:none}}
@media(orientation:landscape) and (max-height:600px){.fw-progress-line .fw-grade-ribbon{bottom:-18px;padding:0 8px 9px;font-size:13px}}

/* 名前の欄（2026-11-01）：上限（16文字）を見出しに小さく書き、欄の幅を全角16文字が入る大きさにする */
.field-limit{margin-left:4px;font-size:.82em;font-weight:400;color:var(--muted)}
#game .profile-form input[name=name]{width:100%;max-width:calc(16em + 24px)}
/* プロフィールの名前の欄は、上のアイコンに合わせて見出しと欄を中央に（2026-11-01）。欄の中の文字は左寄せのまま */
#game .profile-v2 label.wide:has(input[name=name]){justify-items:center}

/* フィールドの地点の札に、挑戦中の級のピル（2026-11-01）。色はホームの「挑戦中」と同じ */
.site-banner .site-grade{margin-left:3px;padding:3px 9px;border-radius:10px;background:#397e6b;color:#fffbe8;font-style:normal;font-size:12px;font-weight:750;line-height:1.2;white-space:nowrap}
@media(max-width:700px){.site-banner .site-grade{padding:2px 7px;font-size:10px}}

/* タイピングの「わかんない」ボタン（2026-11-01）。サイトの「いいえ」と同じ控えめな緑 */
.tk-giveup{display:block;margin:10px auto 0;padding:8px 22px;border:0;border-radius:18px;background:#e3ead3;color:#315948;font-size:14px;font-weight:700;box-shadow:0 3px 0 #c6d1b5;cursor:pointer}
.tk-giveup[hidden]{display:none}

/* 暗唱の画面：戻るボタンの横の級のリボン（画面の上の端から垂らす。見た目はチャンクマップのリボンと同じ）と、入力方法のボタン（2026-11-01） */
.play-head .tk-grade-ribbon{align-self:flex-start;flex:none;margin-top:-20px;height:74px;min-width:58px;padding:34px 10px 0;display:flex;justify-content:center;background:var(--green);color:var(--paper);font-size:15px;font-weight:800;letter-spacing:.04em;line-height:1.1;text-shadow:none;border:2px solid var(--gold);border-top:0;clip-path:polygon(0 0,100% 0,100% 100%,50% calc(100% - 12px),0 100%);filter:drop-shadow(0 3px 2px #183c3240)}
/* 入力方法のボタンはカードの右上（左上の NEW のリボンの反対側）。タイピングのときは点線を出さず、斜線のマイク */
.tk-card .tk-input-mode{position:absolute;top:12px;right:14px;z-index:2;width:36px;height:36px;min-width:36px}
.tk-card .tk-input-mode .icon{width:20px;height:20px}
.tk-card .tk-input-mode.typing{opacity:.85}
.tk-card .tk-input-mode.typing::after{content:'';position:absolute;left:50%;top:50%;width:22px;height:3px;border-radius:2px;background:#c0654b;box-shadow:0 0 0 1.5px #fff9e8;transform:translate(-50%,-50%) rotate(-45deg)}
.tk-wave[hidden]{visibility:hidden} /* 場所は残す（声とタイピングでカードの高さを変えない） */
@media(max-width:700px){.play-head .tk-grade-ribbon{margin-top:-12px;height:60px;min-width:48px;padding:24px 7px 0;font-size:13px}}

/* 暗唱の正解（2026-11-04）：聞き取り欄は英語を緑で。お手本を赤い丸でくるっと囲み、光とキラキラが散る */
.tk-ok{position:fixed;z-index:60;pointer-events:none}
.tk-ok svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible;animation:tk-ok-out 1.4s ease forwards}
.tk-ok ellipse{fill:none;stroke:#d97a6c;stroke-opacity:.85;stroke-width:4;stroke-linecap:round;stroke-dasharray:100;stroke-dashoffset:100;filter:drop-shadow(0 0 3px rgba(230,140,120,.35));animation:tk-ok-draw .45s cubic-bezier(.6,.1,.3,1) forwards}
.tk-ok b{position:absolute;right:-10px;top:-12px;font:700 22px/1 "Marker Felt","Chalkboard SE","Bradley Hand","Segoe Print","Comic Sans MS",cursive;color:#d97a6c;text-shadow:0 1px 0 #fff,0 0 8px rgba(255,220,140,.6);opacity:0;transform:scale(.3) rotate(-14deg);animation:tk-ok-pop .5s .34s cubic-bezier(.2,1.7,.4,1) forwards,tk-ok-out 1.4s ease forwards}
.tk-ok-glow{position:absolute;inset:-10%;border-radius:50%;background:radial-gradient(closest-side,rgba(255,252,220,.95),rgba(255,214,120,.35) 60%,transparent);opacity:0;animation:tk-ok-glow .95s .32s ease-out forwards}
.tk-ok i{position:absolute;left:50%;top:50%;width:var(--s);height:var(--s);margin:calc(var(--s)/-2);background:var(--h);clip-path:polygon(50% 0,61% 39%,100% 50%,61% 61%,50% 100%,39% 61%,0 50%,39% 39%);opacity:0;filter:drop-shadow(0 0 6px var(--h)) drop-shadow(0 0 2px #fff);animation:tk-ok-star .9s calc(.36s + var(--d)) cubic-bezier(.15,.8,.3,1) forwards}
@keyframes tk-ok-draw{to{stroke-dashoffset:0}}
@keyframes tk-ok-pop{to{opacity:1;transform:scale(1) rotate(-14deg)}}
@keyframes tk-ok-glow{0%{opacity:0;transform:scale(.6)}30%{opacity:1}100%{opacity:0;transform:scale(1.4)}}
@keyframes tk-ok-star{0%{opacity:0;transform:translate(0,0) scale(.2) rotate(0)}20%{opacity:1}70%{opacity:1}100%{opacity:0;transform:translate(var(--x),var(--y)) scale(1.1) rotate(180deg)}}
@keyframes tk-ok-out{0%,78%{opacity:1}100%{opacity:0}}
@media (prefers-reduced-motion:reduce){.tk-ok i,.tk-ok-glow{display:none}.tk-ok ellipse{animation-duration:.01s}}
.tk-heard[data-state="pill"]{height:auto;min-height:18px;overflow:visible}.tk-heard[data-state="pill"] .read-along{font-size:13px;padding:3px 12px 3px 9px}
/* クエストの化石が出たとき（2026-11-04） */
.find-quest{display:flex;flex-direction:column;align-items:center;gap:6px;margin:4px auto 14px;padding:10px 18px;border:2px solid #c9952e;border-radius:16px;background:#fff6dc;width:fit-content;animation:fq-in .45s cubic-bezier(.2,1.5,.4,1)}
.find-quest b{font-size:17px;color:#9a6512;letter-spacing:.03em}
.fq-dots{display:flex;gap:8px}.fq-dots i{width:18px;height:18px;border-radius:50%;border:2px solid #c9952e;background:#fff}.fq-dots i.on{background:#e3a83a;box-shadow:0 0 6px rgba(227,168,58,.7)}
.find-quest small{font-size:13px;font-weight:700;color:#8a6a2a}
.find-quest.done{border-color:#397d69;background:#eaf6ef}.find-quest.done b{color:#2f6b55;font-size:19px}.find-quest.done .fq-dots i.on{background:#3f9a77;border-color:#397d69;box-shadow:0 0 8px rgba(63,154,119,.7)}
@keyframes fq-in{from{opacity:0;transform:scale(.8)}to{opacity:1;transform:none}}
.mq-got{color:#2f7a5e;font-weight:700}
/* 準備中の級（2026-11-05） */
.kami-grades label.grade-off span{background:#e4e2dc;color:#a3a199;box-shadow:0 3px #d2d0c8;cursor:not-allowed;flex-direction:column;line-height:1.15}.kami-grades label.grade-off small{font-size:10px;font-weight:600}

/* チャンクマップのBOSS：大きく・緑・文字はマスの中（2026-11-07） */
.cm-node.boss.exam,.cm-node.boss.exam:disabled{width:auto;min-width:110px;height:90px;padding:0 12px;border-radius:24px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;font-size:20px;letter-spacing:.06em;background:#397e6b;color:#fffbe8;border-color:#d7eadb;box-shadow:0 4px 0 #24564a,0 7px 14px #314d3a55}
.cm-node.boss.exam.next{background:#d89c37;color:#fff;border-color:#fff3ce;box-shadow:0 4px 0 #a87831,0 0 0 5px #fff2c38c,0 8px 16px #314d3a45}
.cm-node.boss.exam .cm-exam{position:static;transform:none;margin:0;padding:0;background:none;box-shadow:none;border-radius:0;white-space:nowrap;font-size:11px;font-weight:700;letter-spacing:0;color:inherit}
/* 合格していないBOSSより上：ロックの見た目 */
.cm-node.locked{opacity:.5}
.cm-node .cm-lock{position:absolute;left:-7px;top:-7px;display:grid;place-items:center;width:24px;height:24px;border-radius:50%;background:#56604f;color:#fff;box-shadow:0 0 0 2px #fffdf1}
.cm-node .cm-lock .icon{width:13px;height:13px}

/* プレイヤーの選択・パスワード（2026-11-07）。キーボードが出ても隠れないように、上に寄せる・下に固定しない */
.login.players-gate{place-items:start center;min-height:100dvh;padding-top:max(20px,env(safe-area-inset-top))}
.pg-page{padding:36px clamp(24px,6vw,48px) 32px}
.pg-title{margin:0 0 18px;font-size:22px;font-weight:750;color:#5f5240;text-align:center}
.pg-page .pg-lead{margin:0 0 6px;text-align:center}
.pg-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;width:100%}
.pg-card{display:flex;flex-direction:column;align-items:center;gap:8px;padding:16px 8px;border:1px solid #c9b99c;border-radius:14px;background:#fffaf0;color:#4a4035;font-size:15px;font-weight:700;cursor:pointer;box-shadow:0 2px #d8ccb6}
.pg-card span{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pg-face{display:grid;place-items:center;width:52px;height:52px;border-radius:50%;background:#5f7f68;color:#fffaf0;font-size:22px}
.pg-form{display:flex;flex-direction:column;align-items:stretch;gap:12px;width:min(300px,100%)}
.pg-form .login-google{margin-top:8px;width:100%}
.pg-field{display:flex;flex-direction:column;gap:5px;font-size:13px;color:#6f6252}
.pg-field input{box-sizing:border-box;width:100%;min-height:48px;padding:8px 12px;border:1px solid #b9a98c;border-radius:10px;background:#fff;color:#3c3329;font-size:18px;letter-spacing:.2em} /* 16px 以上：iPhone で拡大されない */
.pg-field input[name="name"]{letter-spacing:0}
.pg-link{margin-top:16px;border:0;background:none;color:#5f7f68;font-size:14px;font-weight:700;text-decoration:underline;cursor:pointer}
.pg-new{margin-top:18px}

.pg-face{position:relative;overflow:hidden;background:#e8e0cf}.pg-face img{position:absolute;max-width:none} /* 選択の画面のアイコン（2026-11-07） */
.pg-page .pg-danger{background:#a5503f;box-shadow:0 3px #7d3a2d}.pg-page .pg-danger:hover{background:#984a3a}

/* Daily goal reuses the profile fields, map nodes and central notice pill. */
.daily-goal-field{display:grid;gap:8px;text-align:left}
.daily-goal-input{display:flex;align-items:center;gap:12px;margin-top:8px}
.daily-goal-input input{width:120px;max-width:55%}
.daily-goal-input>span{font-size:14px;white-space:nowrap}
.daily-goal-hint{color:var(--muted);font-size:13px;line-height:1.7}
.cm-step:has(.daily-goal-flag){position:relative;z-index:2}
.daily-goal-flag{position:absolute;left:calc(50% + 34px);bottom:70px;display:flex;align-items:center;gap:3px;pointer-events:none;color:#42584b;text-shadow:0 1px 3px #fffbe8,0 0 5px #fffbe8;white-space:nowrap;font-size:12px;font-weight:700;transform:none}
.daily-goal-flag svg{width:25px;height:30px;overflow:visible;fill:#e8b957;stroke:#736744;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;flex:none}
@media(max-width:480px){.daily-goal-flag{left:calc(50% + 15px);bottom:78px;font-size:11px;gap:0}.daily-goal-flag svg{width:20px}}

/* Keep exam details, daily pace and grade actions in one aligned settings group. */
#game .profile-v2 .profile-study{grid-column:1/-1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px 16px;min-width:0;text-align:left}
#game .profile-study>label,#game .profile-study .daily-goal-field>label{display:grid;gap:8px;margin:0;min-width:0;align-content:start}
#game .profile-study input,#game .profile-study select{width:100%;height:46px;margin:0}
#game .profile-study .daily-goal-field{grid-column:1/-1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 16px;align-items:end}
#game .profile-study .daily-goal-input{position:relative;display:block;margin:0}
#game .profile-study .daily-goal-input input{max-width:none;padding-right:82px}
#game .profile-study .daily-goal-input>span{position:absolute;right:14px;top:50%;transform:translateY(-50%);font-size:13px;color:var(--muted);pointer-events:none}
#game .profile-study .daily-goal-hint{margin:0;min-height:46px;display:flex;align-items:center;line-height:1.7;font-size:12px;overflow-wrap:anywhere}
#game .profile-study .profile-links{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin:0;padding-top:16px;border-top:1px solid #e1e4d0}
#game .profile-study .profile-links .text-button{width:100%;min-height:42px;margin:0;padding:9px 12px;border:1px solid #d9dfcc;border-radius:14px;background:#eef0e2;text-align:center;font-size:13px;line-height:1.5}
#game .profile-study .profile-links .exam-report.locked{background:transparent;border-color:#e1e4d0;color:#8d9287}
@media(max-width:520px){
 #game .profile-v2 .profile-study{grid-template-columns:minmax(0,1fr);gap:16px}
 #game .profile-study .daily-goal-field{grid-template-columns:minmax(0,1fr);gap:8px}
 #game .profile-study .daily-goal-hint{min-height:0}
 #game .profile-study .profile-links{gap:10px;padding-top:14px}
}

/* ログイン方法の選択。プレイヤー選択画面のボタンとは分ける。 */
.login-auth .login-page{padding:48px 40px 44px}
.login-auth .login-rule{margin:28px auto}
.login-auth [hidden]{display:none!important}
.login-methods,.login-email-form{width:min(320px,100%);display:flex;flex-direction:column;gap:14px}
.login-provider{box-sizing:border-box;display:grid;grid-template-columns:20px 1fr 20px;align-items:center;gap:12px;width:100%;min-height:48px;padding:12px 16px;border:1px solid #747775;border-radius:24px;background:#fff;color:#1f1f1f;font:500 14px/1.4 -apple-system,BlinkMacSystemFont,'Hiragino Kaku Gothic ProN','Yu Gothic',sans-serif;letter-spacing:0;box-shadow:none;cursor:pointer}
.login-provider svg{width:20px;height:20px}
.login-provider:hover{background:#f5f7f5;border-color:#4a5a50}
.login-auth button:focus-visible,.login-auth input:focus-visible{outline:3px solid #72967b;outline-offset:3px}
.login-auth button:disabled{opacity:.6;cursor:default}
.login-email-field{text-align:left;font-size:14px;color:#6f6252}
.login-email-form input{box-sizing:border-box;width:100%;min-height:48px;margin-top:-6px;padding:10px 14px;border:1px solid #b9a98c;border-radius:10px;background:#fff;color:#3c3329;font:16px/1.5 -apple-system,BlinkMacSystemFont,sans-serif;letter-spacing:0}
.login-email-submit{min-height:48px;padding:12px 16px;border:0;border-radius:24px;background:#5f7f68;color:#fffaf0;font:600 14px/1.5 -apple-system,BlinkMacSystemFont,'Yu Gothic',sans-serif;cursor:pointer}
.login-email-submit:hover{background:#4f6e58}
.login-back{align-self:center;min-height:44px;padding:8px 12px;border:0;background:transparent;color:#6f6252;font:inherit;font-size:13px;cursor:pointer;text-decoration:underline;text-underline-offset:4px}
.login-auth #login-email-status{font-size:13px;line-height:1.7;text-align:left}
.login-auth #login-email-status:empty{display:none}
@media(max-width:480px){.login-auth .login-page{padding:36px 28px 32px}.login-auth .login-rule{margin:24px auto}.login-provider{padding-inline:12px;gap:8px}}
@media(max-height:600px){.login-auth{place-items:start center}.login-auth .login-page{margin-block:auto}}
