:root{color-scheme:dark;--bg-deep: #062032;--bg-mid: #0a3a5a;--bg-soft: #1c5a8a;--ink: #f0fbff;--ink-soft: #b8d4e6;--accent: #ff8a3d;--accent-soft: #ffd28a;--green: #5dd39e;--pink: #ff7eb6;--shadow-sm: 0 4px 12px rgba(0, 0, 0, .18);--shadow-md: 0 8px 28px rgba(0, 0, 0, .32);--shadow-lg: 0 20px 60px rgba(0, 0, 0, .4)}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;user-select:none;-webkit-user-select:none}html,body{margin:0;padding:0;width:100%;height:100%;overflow:hidden;touch-action:none;overscroll-behavior:none;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif;color:var(--ink);background:radial-gradient(ellipse at top,#1c5a8a 0%,transparent 50%),radial-gradient(ellipse at bottom,#082842 0%,transparent 50%),#062032}body:before{content:"";position:fixed;inset:0;background-image:radial-gradient(1px 1px at 12% 18%,rgba(255,255,255,.5),transparent),radial-gradient(1px 1px at 24% 73%,rgba(255,255,255,.4),transparent),radial-gradient(1px 1px at 38% 32%,rgba(255,255,255,.45),transparent),radial-gradient(1px 1px at 58% 88%,rgba(255,255,255,.4),transparent),radial-gradient(1px 1px at 71% 12%,rgba(255,255,255,.45),transparent),radial-gradient(1px 1px at 82% 56%,rgba(255,255,255,.4),transparent),radial-gradient(1px 1px at 92% 78%,rgba(255,255,255,.5),transparent),radial-gradient(1px 1px at 8% 82%,rgba(255,255,255,.4),transparent);pointer-events:none;opacity:.6;animation:tw 8s ease-in-out infinite alternate}@keyframes tw{0%{opacity:.4}to{opacity:.85}}#app{position:fixed;inset:0}.screen{position:absolute;inset:0;display:flex;flex-direction:column}.screen-pad{flex:1;padding:max(20px,env(safe-area-inset-top)) max(20px,env(safe-area-inset-right)) max(20px,env(safe-area-inset-bottom)) max(20px,env(safe-area-inset-left));display:flex;flex-direction:column;overflow:hidden}.hud{position:fixed;inset:0;pointer-events:none;z-index:30}.hud-btn{position:absolute;pointer-events:auto;display:grid;place-items:center;width:60px;height:60px;border-radius:50%;background:#ffffffe6;color:var(--bg-mid);border:0;cursor:pointer;font-size:24px;box-shadow:var(--shadow-sm);transition:transform .15s ease,background .2s ease}.hud-btn:active{transform:scale(.92)}.hud-btn svg{width:28px;height:28px}.hud-btn.top-left{top:max(16px,env(safe-area-inset-top));left:max(16px,env(safe-area-inset-left))}.hud-btn.top-right{top:max(16px,env(safe-area-inset-top));right:max(16px,env(safe-area-inset-right))}.level-pill{position:fixed;top:max(20px,env(safe-area-inset-top));left:50%;transform:translate(-50%);pointer-events:none;z-index:25;background:#081c34a6;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.12);border-radius:28px;padding:8px 12px;display:flex;align-items:center;gap:12px}.level-pill .step{width:12px;height:12px;border-radius:50%;background:#ffffff26;transition:background .3s ease,transform .3s ease}.level-pill .step.done{background:var(--green)}.level-pill .step.active{background:var(--accent);transform:scale(1.3)}.level-pill .label{color:var(--ink-soft);font-size:14px;letter-spacing:.04em;padding:0 6px}.home{text-align:center;display:flex;flex-direction:column;height:100%}.home-header{padding:clamp(28px,6vh,56px) 0 16px}.home-title{font-size:clamp(32px,5vw,52px);font-weight:500;margin:0;letter-spacing:.04em;background:linear-gradient(135deg,#76d3ff,#b8a4ff 60%,#ff9ad6);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.home-sub{margin:6px 0 0;color:var(--ink-soft);font-size:16px;letter-spacing:.06em;opacity:.7}.home-tiles{flex:1;display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:18px;padding:18px clamp(20px,6vw,80px) 28px;align-content:center;justify-items:stretch}.home-tile{position:relative;border-radius:28px;aspect-ratio:1 / 1.05;overflow:hidden;cursor:pointer;border:1px solid rgba(255,255,255,.12);background:linear-gradient(150deg,#76d3ff0f,#b8a4ff0f);transition:transform .25s ease,border-color .25s ease,box-shadow .25s ease}.home-tile:hover{transform:translateY(-4px);border-color:#fff6;box-shadow:var(--shadow-md)}.home-tile:active{transform:translateY(-1px) scale(.98)}.home-tile-img{position:absolute;inset:0;background-size:cover;background-position:center;filter:saturate(1.05)}.home-tile:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 35%,rgba(6,32,50,.85) 100%)}.home-tile-name{position:absolute;left:22px;right:22px;bottom:56px;font-size:24px;font-weight:500;letter-spacing:.03em;z-index:1}.home-tile-sub{position:absolute;left:22px;right:22px;bottom:22px;color:var(--ink-soft);font-size:14px;letter-spacing:.04em;z-index:1;opacity:.85}.grid{display:grid;gap:clamp(10px,2vw,18px);margin:auto;width:100%;max-width:1100px}.grid.g-2x2{grid-template-columns:repeat(2,1fr);grid-template-rows:repeat(2,1fr);max-width:540px}.grid.g-2x3{grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(2,1fr);max-width:760px}.grid.g-3x2{grid-template-columns:repeat(2,1fr);grid-template-rows:repeat(3,1fr);max-width:540px}.grid.g-3x4{grid-template-columns:repeat(4,1fr);grid-template-rows:repeat(3,1fr);max-width:1080px}.grid.g-4x4{grid-template-columns:repeat(4,1fr);grid-template-rows:repeat(4,1fr);max-width:1080px}.grid.g-1x4{grid-template-columns:repeat(4,1fr);grid-template-rows:1fr}.grid.g-1x6{grid-template-columns:repeat(6,1fr);grid-template-rows:1fr}.grid.g-1x8{grid-template-columns:repeat(4,1fr);grid-template-rows:repeat(2,1fr)}.card{position:relative;perspective:1200px;cursor:pointer;aspect-ratio:1 / 1.18;min-height:0;transition:transform .2s ease}.card:active{transform:scale(.97)}.card-inner{position:absolute;inset:0;transform-style:preserve-3d;transition:transform .6s cubic-bezier(.4,0,.2,1)}.card.flipped .card-inner{transform:rotateY(180deg)}.card-face{position:absolute;inset:0;border-radius:22px;overflow:hidden;-webkit-backface-visibility:hidden;backface-visibility:hidden;box-shadow:var(--shadow-md)}.card-back{background:linear-gradient(135deg,#1f7aaf,#0e4a72,#062845);display:grid;place-items:center;border:1px solid rgba(255,255,255,.1)}.card-back-glyph{width:50%;height:50%;background:repeating-radial-gradient(circle at 50% 50%,rgba(255,255,255,.08),rgba(255,255,255,.08) 6px,transparent 6px,transparent 14px);border-radius:50%;opacity:.6}.card-back-shell{position:absolute;inset:0;background:radial-gradient(ellipse at 50% 110%,rgba(255,255,255,.08) 0%,transparent 60%)}.card-front{background:#fff;transform:rotateY(180deg);display:flex;flex-direction:column;border:1px solid rgba(255,255,255,.6)}.card-photo{flex:1;background-size:cover;background-position:center;background-color:#cfeaff;border-radius:22px 22px 0 0}.card-name{padding:8px 6px;text-align:center;font-size:clamp(13px,1.6vw,17px);color:var(--bg-mid);letter-spacing:.02em;font-weight:500;background:#fff}.card.open .card-inner{transform:rotateY(180deg)}.card.matched{animation:matched .6s ease forwards}@keyframes matched{0%{transform:scale(1)}40%{transform:scale(1.08)}to{transform:scale(1)}}.card.matched .card-front{box-shadow:0 0 0 4px var(--green),var(--shadow-md)}.card.matched.fade-out{opacity:.55;transition:opacity .45s ease}.card.shake{animation:shake .35s ease}@keyframes shake{0%,to{transform:translate(0)}20%{transform:translate(-6px)}40%{transform:translate(6px)}60%{transform:translate(-4px)}80%{transform:translate(4px)}}.card.featured{cursor:default;border-radius:26px}.card.featured .card-front{box-shadow:0 0 0 3px var(--accent),var(--shadow-lg)}.mode-header{display:flex;justify-content:center;align-items:center;margin:clamp(50px,8vh,80px) 0 16px;gap:14px}.mode-prompt{font-size:clamp(20px,3vw,28px);font-weight:500;letter-spacing:.04em;color:var(--ink);text-align:center}.mode-prompt b{color:var(--accent);font-weight:500}.mode-row{display:flex;flex-direction:column;flex:1;justify-content:center;gap:clamp(14px,2vh,28px);min-height:0}.featured-wrap{display:flex;justify-content:center;align-items:center;margin:clamp(48px,8vh,80px) 0 8px}.featured-wrap .card{width:clamp(180px,22vw,240px);aspect-ratio:1 / 1.18}.speak-btn{pointer-events:auto;display:inline-grid;place-items:center;margin:0 auto;width:clamp(64px,9vw,90px);height:clamp(64px,9vw,90px);border-radius:50%;background:var(--accent);color:#fff;border:0;font-size:32px;cursor:pointer;box-shadow:0 0 #ff8a3d8c,var(--shadow-md);transition:transform .15s ease,box-shadow .4s ease}.speak-btn:active{transform:scale(.94)}.speak-btn.pulse{animation:speak-pulse 2.4s ease-in-out infinite}@keyframes speak-pulse{0%,to{box-shadow:0 0 #ff8a3d8c,var(--shadow-md)}50%{box-shadow:0 0 0 18px #ff8a3d00,var(--shadow-md)}}.speak-btn svg{width:38px;height:38px;fill:currentColor}.panel{position:fixed;inset:0;z-index:50;background:#081c34f2;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);display:none;padding:24px}.panel.open{display:block}.panel-close{position:absolute;top:16px;right:16px;width:56px;height:56px;border-radius:50%;background:#ffffffd9;color:var(--bg-mid);border:0;font-size:26px;cursor:pointer;box-shadow:var(--shadow-sm)}.panel h2{font-weight:500;font-size:28px;margin:8px 0 24px}.panel .row{display:flex;align-items:center;justify-content:space-between;padding:18px 0;border-bottom:1px solid rgba(255,255,255,.08);gap:16px}.panel label{font-size:18px;flex:1;color:var(--ink)}.panel input[type=range]{flex:1;max-width:240px;accent-color:var(--accent)}.seg{display:inline-flex;background:#ffffff0f;border-radius:14px;padding:4px}.seg button{background:transparent;border:0;color:var(--ink-soft);padding:10px 18px;border-radius:10px;font-size:16px;cursor:pointer}.seg button[aria-pressed=true]{background:var(--accent);color:#fff;font-weight:600}.toast{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%) scale(.94);background:#fffffff5;color:var(--bg-mid);padding:22px 38px;font-size:28px;font-weight:500;border-radius:24px;letter-spacing:.04em;opacity:0;pointer-events:none;transition:opacity .32s ease,transform .32s ease;box-shadow:var(--shadow-lg);z-index:60;text-align:center;max-width:80vw}.toast.show{opacity:1;transform:translate(-50%,-50%) scale(1)}.toast .sub{display:block;font-size:15px;color:var(--ink-soft);font-weight:400;margin-top:4px}.atlas-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:14px;overflow-y:auto;padding:clamp(74px,11vh,100px) 24px 24px;flex:1;align-content:start}.atlas-card{aspect-ratio:1 / 1.18;border-radius:18px;overflow:hidden;background:#fff;border:1px solid rgba(255,255,255,.15);cursor:pointer;display:flex;flex-direction:column;box-shadow:var(--shadow-sm);transition:transform .15s ease}.atlas-card:active{transform:scale(.96)}.atlas-card .photo{flex:1;background-size:cover;background-position:center}.atlas-card .name{padding:6px;text-align:center;color:var(--bg-mid);font-size:13px;font-weight:500;background:#fff}
