:root{color-scheme:light;--pink:#f8a7c4;--deep:#d85b94;--cream:#fff9f1;--ink:#735367;--green:#c7e5a4}*{box-sizing:border-box}html,body{margin:0;min-height:100%;font-family:'Hiragino Maru Gothic ProN','Yu Gothic',system-ui,sans-serif;background:radial-gradient(ellipse at 20% 10%,#fffef1,transparent 45%),linear-gradient(155deg,#fbe1ee,#f0f8df 64%,#f9e4ef);color:var(--ink)}body{overscroll-behavior:none}button{font:inherit;cursor:pointer;border:0;touch-action:none;-webkit-tap-highlight-color:transparent;user-select:none}button:focus-visible{outline:3px solid #f47aaf;outline-offset:2px}.top{height:52px;display:flex;align-items:center;justify-content:space-between;gap:8px;max-width:1100px;margin:auto;padding:5px 12px}.logo-mini{font-size:clamp(11px,2.5vw,16px);font-weight:900;color:#a74e80}.top-actions{display:flex;gap:6px}.top-actions button,.hud-actions button{background:#fffdf9;border:2px solid #f8c0d4;border-radius:11px;color:#b65b86;font-weight:800;padding:7px 10px}.layout{display:flex;justify-content:center;align-items:flex-start;gap:24px;padding:0 12px 24px;max-width:1100px;margin:auto}.cabinet{width:min(100%,493px);padding:10px;background:linear-gradient(135deg,#f6acc8,#fbe2b9,#f5a5c2);border:5px solid #fff8fb;border-radius:23px;box-shadow:0 15px 35px #9c5d8350,inset 0 0 0 2px #ef80ac}.cabinet-head{display:grid;grid-template-columns:1fr 1fr .85fr;gap:8px;padding:3px 2px 10px}.led{min-width:0;background:#56384f;border:3px solid #ffe1ea;border-radius:9px;padding:4px 5px;text-align:center;box-shadow:inset 0 2px 6px #231320}.led small{display:block;color:#ffc2d5;font-size:9px;letter-spacing:2px}.led strong{display:block;color:#ffedb5;font:900 clamp(12px,3vw,20px)/1.3 ui-monospace,monospace;white-space:nowrap}.led:last-child strong{font-size:clamp(10px,2.6vw,17px)}.board-wrap{position:relative;aspect-ratio:440/760;border-radius:15px;overflow:hidden;border:5px solid #fff9f7;background:#ffe9f1;box-shadow:inset 0 0 16px #be6387}canvas{display:block;width:100%;height:100%;touch-action:none}.hud-actions{position:absolute;top:8px;right:8px;display:flex;gap:5px}.hud-actions button{width:34px;height:34px;opacity:.87;padding:0}.toast{position:absolute;top:25%;left:8%;width:84%;pointer-events:none;text-align:center;font-weight:1000;font-size:clamp(20px,4.5vw,32px);color:#fff;text-shadow:2px 2px #b95090,-2px -2px #b95090,0 3px 10px #8a4170;opacity:0;transform:translateY(10px);transition:opacity .15s,transform .15s}.toast.show{opacity:1;transform:translateY(0)}.controls{display:grid;grid-template-columns:1fr .84fr 1fr;gap:8px;padding-top:10px}.controls button{height:clamp(62px,10dvh,86px);border-radius:17px;border:3px solid #fff8f2;display:flex;flex-direction:column;align-items:center;justify-content:center;box-shadow:0 4px #ba698d,0 7px 15px #92567550;color:white;font-weight:900;touch-action:none}.controls button span{font-size:30px;line-height:1.15}.controls button small{font-size:10px;letter-spacing:1px}.flipper-btn{background:linear-gradient(#f783b5,#e85b97)}.launch-btn{background:linear-gradient(#92d9a5,#50b98d)}.controls button.pressed{transform:translateY(4px);box-shadow:0 0 #ba698d,inset 0 2px 5px #714962}.board-footer{text-align:center;font-size:11px;font-weight:700;padding-top:10px}.sidebar{width:290px;display:flex;flex-direction:column;gap:13px}.photo-card,.mission{background:#fffdfbeb;border:3px solid white;border-radius:18px;padding:12px;box-shadow:0 7px 20px #bb8d9a33}.photo-card img{width:100%;border-radius:12px;display:block}.photo-caption{text-align:center;font-size:12px;font-weight:800;margin-top:8px}.mission h2{font-size:16px;margin:0 0 15px;color:#c05b8b}.mission-row{display:flex;justify-content:space-between;align-items:center;margin:11px 0;gap:8px;font-size:13px}.mission-row b{white-space:nowrap;color:#d1598b}.mission p{font-size:12px;line-height:1.8;background:#fff0f5;padding:8px;border-radius:8px}.wide{border-radius:12px;padding:15px;font-weight:900;color:#ae4e7f;background:#fff8fa;border:2px solid #edacca}.screen{position:fixed;inset:0;z-index:10;display:none;align-items:center;justify-content:center;padding:16px;background:#4d304a9c;backdrop-filter:blur(8px);overflow-y:auto}.screen.active{display:flex}.intro-panel{position:relative;display:grid;grid-template-columns:.92fr 1fr;max-width:900px;width:100%;min-height:470px;background:#fffaf8;border:7px solid white;border-radius:34px;overflow:hidden;box-shadow:0 23px 75px #41233c80}.intro-photo{min-height:100%;position:relative;background:#ffe6ed}.intro-photo img{position:absolute;width:100%;height:100%;object-fit:cover;object-position:center}.intro-content{padding:35px 26px;display:flex;flex-direction:column;align-items:center;text-align:center;justify-content:center;background:radial-gradient(circle at 90% 7%,#ffdef0,transparent 65%),#fffaf5}.eyebrow{letter-spacing:.12em;color:#b76a8a;font-size:13px;font-weight:900}.intro-content h1{font-size:clamp(22px,4vw,41px);line-height:1.35;color:#9f5384;letter-spacing:.04em;text-shadow:2px 3px #fff,3px 4px #f4c4d8;margin:18px 0}.intro-content h1 em{font-style:normal;color:#f283b0}.intro-content h1 span{color:#e35f9c;font-size:1.25em}.intro-content p{line-height:1.8;font-weight:700;font-size:14px}.primary,.secondary{display:block;width:min(100%,330px);margin:9px auto 0;padding:15px;border-radius:18px;font-weight:1000;font-size:17px;box-shadow:0 5px 0 #b56b8f}.primary{color:white;background:linear-gradient(120deg,#f58bb6,#e667a2);border:3px solid #ffd7e5}.secondary{color:#b3638e;background:#fff8fc;border:2px solid #f0bfd5}.primary:active,.secondary:active{transform:translateY(4px);box-shadow:none}.tiny{margin-top:17px;color:#a895a2;font-size:11px}.modal{width:min(720px,100%);background:#fffefa;border:6px solid #fff;border-radius:25px;box-shadow:0 20px 60px #39203677;padding:22px;text-align:center;background-image:radial-gradient(circle at 100% 0,#ffdbed,transparent 40%)}.help-title{display:flex;justify-content:center;align-items:center;gap:20px}.help-title img{height:150px;width:130px;object-fit:cover;object-position:17% 6%;border:4px solid #fdd1e2;border-radius:50%;background:#fff}.help-title h2{font-size:27px;color:#d96a9a;margin:5px 0}.help-title p{font-size:13px;font-weight:800}.guide-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:20px 0}.guide{background:#fff4f7;border:2px dashed #f4b6d0;border-radius:15px;padding:13px}.guide span{font-size:24px;display:block}.guide b{color:#b9598a;display:block;margin:5px}.guide p{font-size:12px;line-height:1.6;margin:4px}.help-note{font-size:12px}.compact{max-width:400px;padding:30px 20px}.compact h2{color:#d56597;font-size:24px}.compact p{font-weight:700;line-height:1.8}.result-label{font-weight:900;letter-spacing:.2em;color:#bd7b9b;margin-top:16px}.result-score{font:900 42px ui-monospace,monospace;color:#d65092}.record{color:#e1a343;font-weight:1000;margin:5px;display:none}.record.show{display:block}@media(max-width:780px){.sidebar{display:none}.layout{padding:0 4px 12px}.cabinet{width:min(100%,450px);padding:6px;border-width:3px;border-radius:14px}.board-wrap{border-width:3px}.top{height:43px}.top-actions button{padding:5px 7px;font-size:12px}.board-footer{font-size:10px}.controls{gap:6px;padding-top:6px}.intro-panel{grid-template-columns:1fr;max-width:450px;min-height:auto}.intro-photo{height:30dvh;min-height:170px;max-height:270px}.intro-photo img{object-position:center 38%}.intro-content{padding:15px}.intro-content h1{margin:6px 0;font-size:clamp(24px,6vw,34px)}.intro-content p{margin:5px;font-size:12px}.primary,.secondary{padding:11px}.tiny{margin-top:10px}.help-title img{height:104px;width:92px}.help-title h2{font-size:21px}.modal{padding:13px}.guide-grid{margin:10px 0;gap:7px}.guide{padding:7px}.guide p{font-size:11px}.guide b{font-size:12px}.guide span{font-size:21px}}@media(max-width:450px){.screen{padding:8px}.intro-panel{border-width:4px;border-radius:22px}.intro-photo{height:26dvh;min-height:135px}.intro-content{padding:11px}.intro-content h1{font-size:24px}.top .logo-mini{font-size:11px}.controls button{height:62px}.help-title{gap:8px}.help-title p{font-size:11px}.guide p{line-height:1.4}}@media(max-height:690px) and (orientation:landscape){.layout{align-items:center}.cabinet{width:min(45vw,360px)}.cabinet-head{padding-bottom:4px}.board-wrap{max-height:calc(100dvh - 192px);aspect-ratio:440/760;margin:auto;width:auto}.controls button{height:47px}.controls button span{font-size:19px}.board-footer{display:none}.sidebar{display:flex;max-height:95dvh;overflow:auto}.photo-card img{max-height:20vh;object-fit:cover}.intro-panel{max-width:780px;min-height:0;height:min(95dvh,510px);grid-template-columns:1fr 1fr}.intro-photo{height:100%;max-height:none}.intro-content h1{font-size:clamp(20px,4vw,34px)}.modal.help{max-height:95dvh;overflow-y:auto}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}

/* v0.3.0 additions */
.charge-panel{background:linear-gradient(125deg,#fff3c4,#fff8ea 50%,#ffe0ee);border:3px solid #fff;border-radius:14px;padding:10px 14px;margin:0 1px 8px;box-shadow:0 3px 8px #b8689450}.charge-top{display:flex;justify-content:space-between;align-items:center;font-size:16px;color:#99496e;font-weight:950}.charge-top strong{font:1000 24px ui-monospace,monospace;color:#b54b84}.power-track{height:25px;border-radius:14px;background:#fff;border:3px solid #d78fb1;position:relative;overflow:hidden;box-shadow:inset 0 2px 4px #9d597252}.power-fill{height:100%;width:0;background:linear-gradient(90deg,#92d8b3 0%,#ffe477 55%,#ff8e90 100%);transition:width .04s linear;box-shadow:inset 0 3px 7px #fff9}.power-threshold{position:absolute;left:66%;top:0;height:100%;border-left:3px dashed #9b4774}.charge-hint{font-size:12px;font-weight:850;color:#a7678a;text-align:center;margin-top:3px}.fever-track{padding:4px 8px 9px}.fever-label{display:flex;justify-content:space-between;gap:6px;font-size:11px;font-weight:900;color:#9d5281}.fever-gauge{height:10px;background:#fef8ff;border:2px solid #f3bcd7;border-radius:9px;overflow:hidden}.fever-gauge>div{height:100%;width:0;background:linear-gradient(90deg,#ffe28e,#ff77ae,#a4a6ff)}.photo-card{position:relative;overflow:hidden}.girl-reaction{position:absolute;top:18px;right:5px;max-width:170px;border:2px solid #f3a4c6;border-radius:16px;background:#fffff3;color:#b7528b;font-size:13px;font-weight:900;padding:9px;box-shadow:0 4px 10px #8a587450;opacity:0;transform:translateY(8px);transition:.2s;pointer-events:none;z-index:2}.girl-reaction.show{opacity:1;transform:translateY(0)}#girlPortrait img{transition:transform .3s,filter .3s}#girlPortrait.celebrate img{animation:girl-bounce .58s ease-in-out infinite alternate;filter:saturate(1.23)}#girlPortrait.sad img{filter:saturate(.7);transform:rotate(-3deg)}@keyframes girl-bounce{from{transform:translateY(3px) rotate(-2deg)}to{transform:translateY(-10px) rotate(2deg)}}.version-label{text-align:center;font-size:11px;color:#ad7993;padding:10px}#multiStat{color:#d45186}@media(max-width:780px){.charge-panel{padding:6px 10px;margin-bottom:5px}.charge-top{font-size:13px}.charge-top strong{font-size:21px}.power-track{height:22px}.fever-track{padding:2px 4px 4px}.charge-hint{font-size:10px}.photo-card{display:none}}@media(max-height:690px) and (orientation:landscape){.charge-panel{padding:3px 7px}.power-track{height:14px}.charge-hint{display:none}.fever-track{padding:2px}.fever-label{font-size:9px}}

.charge-panel{position:relative;padding-right:85px;min-height:83px}.charge-girl{position:absolute;right:6px;top:4px;width:67px;height:72px;overflow:visible;pointer-events:none}.charge-girl img{width:65px;height:65px;object-fit:cover;object-position:19% 18%;border:3px solid #fff;border-radius:50%;box-shadow:0 2px 7px #ad608f55}.charge-girl span{position:absolute;right:48px;top:0;width:max-content;max-width:170px;background:#fffff8;border:2px solid #edabc6;padding:5px 8px;border-radius:12px;color:#b15183;font-size:10px;font-weight:950;opacity:0;transform:translateY(8px);transition:.2s}.charge-girl span.show{opacity:1;transform:translateY(0)}@media(max-width:780px){.charge-panel{min-height:77px;padding-right:77px}.charge-girl{right:5px;top:5px}.charge-girl img{width:59px;height:59px}.charge-girl span{max-width:150px;top:29px;right:40px}}@media(max-height:690px) and (orientation:landscape){.charge-panel{min-height:0;padding-right:55px}.charge-girl img{width:39px;height:39px}.charge-girl{width:42px;height:42px}.charge-girl span{right:36px;top:5px}}

/* v0.4.0: One-viewport cabinet for desktop, phones and landscape */
html,body{width:100%;height:100%;overflow:hidden}#app{height:100dvh;min-height:0;display:flex;flex-direction:column;overflow:hidden}.top{flex:0 0 38px;height:38px;width:100%;max-width:1100px}.layout{flex:1;min-height:0;width:100%;max-width:1100px;padding:0 7px 2px;align-items:stretch;gap:12px;overflow:hidden}.cabinet{flex:0 1 auto;width:min(49vw,calc((100dvh - 210px)*.59),470px);max-width:100%;height:100%;min-height:0;display:flex;flex-direction:column;padding:5px;border-width:3px;border-radius:14px}.cabinet-head{flex:none;padding:0 1px 3px;gap:3px}.led{padding:2px;border-width:2px}.led small{font-size:8px}.led strong{font-size:clamp(11px,1.5vw,17px)}.charge-panel{flex:none;min-height:0;padding:2px 58px 2px 8px;margin:0 0 2px}.charge-top{font-size:12px}.charge-top strong{font-size:17px}.charge-girl{right:2px;top:0;height:38px;width:42px}.charge-girl img{width:38px;height:38px;border-width:2px}.power-track{height:15px;border-width:2px}.charge-hint{display:none}.feature-strip{display:flex;justify-content:space-around;align-items:center;gap:3px;flex:none;font-size:clamp(8px,.8vw,11px);font-weight:900;color:#9b5681;background:#fff8fb;border-radius:8px;margin:1px 2px;padding:2px;white-space:nowrap}.fever-track{flex:none;padding:1px 4px 3px}.fever-label{font-size:9px}.fever-gauge{height:7px}.board-wrap{flex:1 1 auto;min-height:0;height:0;aspect-ratio:440/760;width:auto;max-width:100%;margin:0 auto;border-width:3px;align-self:center}.board-wrap canvas{height:100%;width:100%}.controls{flex:none;padding-top:3px;gap:5px}.controls button{height:clamp(43px,7dvh,65px);border-radius:10px;border-width:2px}.controls button span{font-size:21px}.controls button small{font-size:9px}.board-footer{display:none}.sidebar{flex:1;min-width:0;max-width:300px;overflow:hidden;gap:7px}.photo-card,.mission{padding:7px}.photo-card{flex:0 1 40%;min-height:0;display:flex;flex-direction:column}.photo-card img{min-height:0;flex:1;object-fit:cover;object-position:center 45%}.photo-caption{font-size:10px;margin-top:3px}.mission{flex:1;overflow:hidden}.mission h2{margin:0 0 5px;font-size:13px}.mission-row{margin:4px 0;font-size:clamp(10px,.9vw,12px)}.mission p{font-size:10px;line-height:1.3;margin:4px 0;padding:5px}.wide{flex:none;padding:9px}.version-label{flex:0 0 13px;padding:0;font-size:9px}.screen{overflow:hidden}.intro-panel{max-height:93dvh;min-height:0}.modal.help{max-height:95dvh;overflow:auto}.victory img{height:min(33dvh,210px);max-width:100%;object-fit:cover;border-radius:14px}.victory h2{color:#df679c}.success-score{font-weight:900;color:#bd7490;margin:8px}
@media(max-width:780px){.top{flex-basis:34px;height:34px}.layout{justify-content:center;padding:0 3px 1px}.sidebar{display:none}.cabinet{width:min(calc(100dvw - 8px),calc((100dvh - 174px)*.585));min-width:0}.controls button{height:clamp(45px,8dvh,66px)}.charge-panel{padding-right:50px}.feature-strip{font-size:clamp(7px,1.8vw,10px)}.charge-top{font-size:11px}.top-actions button{font-size:11px;padding:3px 6px}.led strong{font-size:clamp(10px,3vw,17px)}}
@media(max-height:600px){.top{flex-basis:28px;height:28px}.cabinet{width:min(45vw,calc((100dvh - 143px)*.59));padding:2px}.controls button{height:34px}.controls button span{font-size:16px}.controls button small{font-size:8px}.charge-panel{padding:1px 48px 1px 5px}.charge-girl img{width:28px;height:28px}.charge-girl{height:30px;width:32px}.power-track{height:12px}.feature-strip{font-size:8px}.fever-label span:last-child{display:none}.fever-track{padding:0 3px 2px}.led small{font-size:7px}.version-label{display:none}.photo-card{display:none}.sidebar{justify-content:center}.mission{flex:0 1 auto}}
@media(max-width:780px) and (orientation:landscape){.cabinet{width:min(47vw,calc((100dvh - 138px)*.59))}.layout{justify-content:center}}
@media(max-height:520px){.modal.help{padding:7px}.help-title img{height:60px;width:60px}.help-title h2{font-size:16px}.guide-grid{margin:4px 0;gap:4px}.guide{padding:4px}.guide p{font-size:10px;line-height:1.2}.guide span{font-size:15px}.guide b{margin:2px}.intro-content{padding:8px}.intro-content h1{margin:4px 0;font-size:clamp(18px,3vw,26px)}.intro-content p{font-size:11px;margin:2px}.primary,.secondary{padding:7px;margin-top:5px}}


/* v0.4.1 logo integration */
.logo-mini{display:flex;align-items:center;min-width:0;max-width:min(56vw,410px)}
.logo-mini img{display:block;max-width:100%;height:26px;object-fit:contain;object-position:left center;filter:drop-shadow(0 1px 1px rgba(255,255,255,.7)) drop-shadow(0 2px 6px rgba(197,108,149,.18))}
.title-logo-wrap{display:flex;justify-content:center;align-items:center;margin:8px auto 10px;width:100%}
.title-logo{display:block;width:min(100%,620px);max-width:100%;height:auto;filter:drop-shadow(0 4px 12px rgba(183,100,145,.18))}
@media(max-width:780px){.logo-mini{max-width:52vw}.logo-mini img{height:20px}.title-logo{width:min(100%,500px)}}
@media(max-width:450px){.logo-mini{max-width:49vw}.logo-mini img{height:17px}.title-logo-wrap{margin:5px auto 7px}.title-logo{width:min(100%,420px)}}
@media(max-height:600px){.logo-mini img{height:16px}.title-logo{width:min(100%,420px)}}


/* v0.4.2 smartphone title/help fixes */
.modal.help{position:relative}
.modal-close{position:absolute;top:10px;right:10px;z-index:3;width:42px;height:42px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:#fffdfb;border:2px solid #f0bfd5;color:#c05a89;font-weight:1000;font-size:28px;line-height:1;box-shadow:0 4px 10px rgba(181,107,143,.25)}
.modal-close:active{transform:translateY(2px)}
@media(max-width:780px){
  .intro-photo{display:flex;align-items:center;justify-content:center;padding:8px 8px 0;background:#ffe6ed}
  .intro-photo img{position:static;width:100%;height:100%;object-fit:contain;object-position:center 18%;transform:scale(.92)}
  .modal.help{padding-top:48px}
}
@media(max-width:450px){
  .intro-photo{padding:6px 6px 0}
  .intro-photo img{object-position:center 14%;transform:scale(.88)}
  .modal-close{top:8px;right:8px;width:40px;height:40px;font-size:26px}
  .modal.help{padding-top:46px}
}
@media(max-height:520px){
  .modal-close{width:34px;height:34px;font-size:22px}
  .modal.help{padding-top:40px}
}
/* Desktop CPU duel */
[hidden]{display:none!important}.desktop-duel{background:#fff0cf;color:#a45c7f}.duel-overlay{position:fixed;inset:0;z-index:110;background:linear-gradient(140deg,#d8c2eb,#f8dce9,#e4f2db);padding:12px;overflow:hidden}.duel-shell{height:100%;max-width:1260px;margin:auto;border:4px solid #fff;border-radius:22px;background:#fffaf9eb;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 12px 35px #a46c9666}.duel-top{flex:0 0 49px;display:flex;align-items:center;justify-content:space-between;padding:7px 18px;background:#f2c1d6;color:#873a6c;gap:12px}.duel-top button,.duel-mid button,.duel-result button{background:white;border:2px solid #e9a4c3;border-radius:12px;padding:8px 14px;color:#a54e82;font-weight:800}.duel-select{flex:1;overflow-y:auto;text-align:center;padding:28px}.duel-select h2{color:#bd598a}.duel-mode-buttons{display:flex;gap:14px;justify-content:center;flex-wrap:wrap}.duel-primary{background:linear-gradient(130deg,#f88eba,#f1bad7)!important;color:#fff!important;font-weight:900;font-size:17px;padding:16px!important}.duel-help{max-width:650px;margin:18px auto;line-height:1.8;font-weight:700;font-size:13px}.duel-roster{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;margin:15px auto;max-width:1050px}.duel-card{padding:8px;background:#fff;border:2px solid #f2b4cc;border-radius:12px;color:#a64b81;font-weight:bold}.duel-card img{height:112px;width:100%;object-fit:contain;display:block;border-radius:7px}.duel-card span{font-size:12px}.duel-locked{filter:grayscale(1);opacity:.5;cursor:default}.duel-arena{flex:1;min-height:0;display:grid;grid-template-columns:minmax(0,1fr) 175px minmax(0,1fr);align-items:stretch;gap:8px;padding:8px 15px}.duel-side{min-height:0;min-width:0;display:flex;flex-direction:column;align-items:center}.duel-side canvas{min-height:0;flex:1;height:0;max-width:100%;aspect-ratio:330/510;object-fit:contain;border:5px ridge #f8c8dc;border-radius:16px;background:#fae9f0}.duel-head{display:flex;align-items:center;gap:12px;background:#fff;border-radius:12px;padding:4px 12px;height:74px;width:min(100%,330px)}.duel-head img{height:63px;width:63px;object-fit:cover;border-radius:10px}.duel-head div{display:flex;flex-direction:column}.duel-head b{color:#ab4c7a;font-size:13px}.duel-head span{color:#e8a141}.duel-head small{font-weight:800}.duel-mid{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:11px;text-align:center}.duel-vs{font-size:58px;font-weight:1000;color:#e66ba2;text-shadow:3px 3px #fff}.duel-mid p{border:2px solid #eab4cd;background:#fff;border-radius:13px;padding:12px;font-size:13px;font-weight:800;min-height:92px;width:100%}.duel-charge{width:100%;font-weight:900}.duel-meter{height:21px;background:white;border:2px solid #e19aba;border-radius:12px;overflow:hidden}.duel-meter>div{height:100%;width:0;background:linear-gradient(90deg,#a8e3a7,#ffec79,#ff8f93)}.duel-keyhelp{font-size:11px;font-weight:800}.duel-result{flex:1;overflow:auto;text-align:center;padding:16px}.duel-result img{height:min(30dvh,220px);width:auto;border-radius:18px}.duel-result h2{color:#e86b9a}.duel-result button{margin:5px}.duel-result #duelEnding{padding:20px;background:#fff3b8;color:#af6891;font-weight:900;border-radius:15px;line-height:2;margin:8px auto;max-width:550px}.duel-select button:active,.duel-result button:active{transform:translateY(2px)}@media(max-width:780px),(pointer:coarse){.desktop-duel,.duel-overlay{display:none!important}}@media(max-height:690px){.duel-top{flex-basis:38px}.duel-head{height:56px}.duel-head img{height:48px;width:48px}.duel-vs{font-size:38px}.duel-mid{gap:5px}.duel-mid p{padding:5px;min-height:60px}}


/* v0.5.1 duel talk / cut-in */
.duel-intro,.duel-result{flex:1;overflow:auto;text-align:center;padding:16px}
.duel-intro-head{font-size:24px;font-weight:1000;color:#c55d91;margin:8px 0 14px}
.duel-intro-faces,.duel-postfaces{display:grid;grid-template-columns:1fr 1fr;gap:14px;max-width:900px;margin:0 auto 16px}
.duel-talk-card{background:linear-gradient(180deg,#fff,#fff7fb);border:3px solid #efbdd3;border-radius:20px;padding:14px;box-shadow:0 8px 16px rgba(175,105,145,.12)}
.duel-talk-card img{width:min(100%,260px);height:min(32dvh,260px);object-fit:contain;display:block;margin:0 auto 8px;border-radius:14px;background:#fff8fb}
.duel-talk-card b{display:block;color:#b54f81;font-size:18px;margin-bottom:8px}
.duel-talk-card p{background:#fffef9;border:2px solid #f0c0d4;border-radius:16px;padding:12px 14px;line-height:1.8;font-weight:800;min-height:88px}
.duel-intro button,.duel-result button{background:white;border:2px solid #e9a4c3;border-radius:12px;padding:10px 16px;color:#a54e82;font-weight:800;margin:4px}
.duel-arena{position:relative}
.duel-cutin{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:6;display:flex;align-items:center;gap:16px;min-width:min(80vw,530px);max-width:calc(100% - 40px);background:linear-gradient(135deg,#fff9fb,#fff0d5);border:5px solid #fff;border-radius:24px;padding:16px 20px;box-shadow:0 18px 50px rgba(70,30,60,.35)}
.duel-cutin img{width:110px;height:110px;object-fit:cover;border-radius:18px;background:#fff;border:3px solid #f0bfd5}
.duel-cutin b{display:block;font-size:28px;color:#d15490;margin-bottom:4px}
.duel-cutin p{margin:0;line-height:1.7;font-weight:900;color:#7a5770}
@media(max-height:690px){.duel-intro-head{font-size:20px}.duel-talk-card img{height:min(24dvh,190px)}.duel-talk-card p{min-height:60px;padding:8px 10px;line-height:1.5}.duel-cutin img{width:80px;height:80px}.duel-cutin b{font-size:22px}}


/* v0.5.2 duel polish */
.duel-card .duel-lockimg{height:112px;width:100%;display:flex;align-items:center;justify-content:center;border-radius:7px;background:radial-gradient(circle at 50% 42%, #fff7fb 0 20%, #f6dceb 21% 58%, #ecd0e0 59% 100%);border:2px dashed #e2a9c5;color:#ce6f9d;font-size:58px;font-weight:1000;line-height:1;letter-spacing:.02em}
.duel-card .duel-lockimg span{display:flex;align-items:center;justify-content:center;width:78px;height:78px;border-radius:50%;background:#fff;border:4px solid #efbdd3;box-shadow:0 6px 12px rgba(184,98,142,.18)}
.duel-cutin{left:50%;top:18px;transform:translateX(-50%);z-index:6;display:flex;align-items:center;gap:12px;min-width:min(42vw,430px);max-width:min(72vw,520px);background:linear-gradient(135deg,#fff9fb,#fff6dd);border:4px solid #fff;border-radius:18px;padding:10px 14px;box-shadow:0 10px 24px rgba(70,30,60,.23);pointer-events:none}
.duel-cutin img{width:64px;height:64px;object-fit:cover;border-radius:14px;background:#fff;border:2px solid #f0bfd5}
.duel-cutin b{font-size:20px;line-height:1.1;margin-bottom:2px}.duel-cutin p{font-size:13px;line-height:1.55}
.duel-side canvas{background:#fae9f0}
.duel-mid p{min-height:112px}
@media(max-height:690px){.duel-cutin{top:10px;min-width:min(36vw,360px);padding:8px 12px}.duel-cutin img{width:52px;height:52px}.duel-cutin b{font-size:17px}.duel-cutin p{font-size:12px;line-height:1.45}}

/* v0.5.3 Same actual solo game in both CPU battle tables */
.duel-gameframe{display:block;flex:1;min-height:0;height:0;width:100%;max-width:100%;border:3px solid #fff5fb;border-radius:12px;background:#ffe6ef;box-shadow:0 3px 14px #b9749850}
.duel-side{overflow:hidden}.duel-side .duel-head{flex:0 0 63px;max-width:440px;width:100%}
.duel-arena{grid-template-columns:minmax(0,1fr) 170px minmax(0,1fr)}
body.duel-embedded,body.duel-embedded #app{overflow:hidden;background:transparent}
body.duel-embedded .top,body.duel-embedded .sidebar,body.duel-embedded .version-label,body.duel-embedded .controls,body.duel-embedded .board-footer{display:none!important}
body.duel-embedded .layout{padding:0;height:100dvh;max-width:none;gap:0;overflow:hidden}
body.duel-embedded .cabinet{height:100%;width:100%;max-width:100%;padding:3px;border-width:2px;border-radius:9px}
body.duel-embedded .cabinet-head{flex:0 0 29px}
body.duel-embedded .charge-panel{flex:0 0 32px;min-height:0}
body.duel-embedded .charge-girl,body.duel-embedded .hud-actions{display:none}
body.duel-embedded .feature-strip{flex:0 0 17px}
body.duel-embedded .fever-track{flex:0 0 18px}
body.duel-embedded .board-wrap{flex:1;min-height:0;height:0;width:auto;aspect-ratio:440/760;max-width:100%;margin:auto}
body.duel-embedded .screen{display:none!important}
@media(max-height:690px){.duel-gameframe{border-width:2px}.duel-side .duel-head{flex-basis:48px}.duel-arena{grid-template-columns:minmax(0,1fr) 155px minmax(0,1fr)}}

/* v0.5.5 live character dialogue and situational portrait acting */
.duel-head{width:min(100%,450px);height:90px;align-items:center;gap:8px;padding:6px 9px}
.duel-head img{width:74px;height:74px;flex-shrink:0;object-fit:cover;object-position:center 25%;transition:transform .22s,filter .22s}
.duel-head>div{flex:1;min-width:0;position:relative;display:grid;grid-template-columns:1fr auto;gap:1px 5px;align-content:center}
.duel-head b{grid-column:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.duel-head span,.duel-head small{grid-column:1;font-size:11px}
.duel-head .duel-live-speech{grid-column:2;grid-row:1/4;margin:0;width:clamp(95px,11vw,165px);height:72px;display:flex;align-items:center;justify-content:center;overflow:hidden;font-size:clamp(10px,.82vw,12px);font-weight:850;line-height:1.35;text-align:left;padding:6px 7px;border:2px solid #f2b3ce;border-radius:12px;background:#fff7fa;color:#a24e7e}
.duel-head img[data-feeling="excited"],#girlPortrait img[data-feeling="excited"]{transform:rotate(-3deg) scale(1.08);filter:saturate(1.3) brightness(1.08)}
.duel-head img[data-feeling="worried"],#girlPortrait img[data-feeling="worried"]{transform:rotate(3deg) translateY(2px);filter:saturate(.65) brightness(.86)}
.duel-head img[data-feeling="smug"]{transform:rotate(-2deg) scale(1.035);filter:contrast(1.12) saturate(1.14)}
#girlPortrait img[data-feeling="happy"]{transform:scale(1.06);filter:saturate(1.2)}
@media(max-height:700px){.duel-head{height:66px;padding:3px 5px}.duel-head img{width:55px;height:55px}.duel-head .duel-live-speech{height:57px;font-size:10px;width:clamp(90px,10vw,145px);padding:3px 5px}}

/* v0.7.0 story retry accessibility */
.duel-story-reset{background:#fff9fc;border:1px solid #e6adc8;color:#a24e79;border-radius:11px;padding:10px 14px;font-weight:700;cursor:pointer}
.duel-story-reset:focus-visible,.duel-primary:focus-visible{outline:3px solid #9a4f9b;outline-offset:3px}

/* v0.7.1: duel countdown and debug tools */
.duel-timer{font-size:clamp(15px,2vw,25px);font-weight:900;color:#ba5188;margin:9px auto;padding:7px;border:2px solid #edb2cc;border-radius:12px;background:#fff7fa;text-align:center;min-width:112px}
.duel-debug-panel{margin:12px auto;padding:12px;max-width:650px;border:2px dashed #da78ab;border-radius:14px;background:#fff4fb;display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:12px;color:#a14477}
.duel-debug-panel[hidden]{display:none!important}.duel-debug-panel select{padding:8px;border-radius:8px;border:1px solid #dd91b5;background:white}

.duel-debug-status{font-size:12px;color:#936987;margin:6px auto;max-width:720px;line-height:1.5;overflow-wrap:anywhere}

/* v0.7.6: clear, central pause signage in both game modes */
.pause-big-title{font-family:system-ui,sans-serif;font-weight:1000;font-style:italic;font-size:clamp(56px,13vw,118px);letter-spacing:.035em;line-height:1.05;margin:0 auto 12px;color:#ffec81;-webkit-text-stroke:clamp(2px,.45vw,5px) #c34f91;text-shadow:0 5px #8c336d,0 10px 25px #7b365c77;transform:rotate(-3deg);animation:pause-pop .28s ease-out both}
@keyframes pause-pop{from{opacity:0;transform:scale(.75) rotate(-8deg)}to{opacity:1;transform:scale(1) rotate(-3deg)}}
.duel-pause-banner{position:absolute;inset:0;z-index:9;display:flex;flex-direction:column;justify-content:center;align-items:center;background:#2716299c;backdrop-filter:blur(3px);pointer-events:none;color:#fff09b;font:italic 1000 clamp(54px,10vw,120px)/1 system-ui,sans-serif;letter-spacing:.04em;-webkit-text-stroke:3px #be4c8a;text-shadow:0 6px #863361,0 12px 28px #231325;animation:pause-pop .25s ease-out both}
.duel-pause-banner[hidden]{display:none!important}
.duel-pause-banner small{font:900 clamp(12px,1.7vw,17px)/1.5 system-ui,sans-serif;color:white;-webkit-text-stroke:0;text-shadow:0 1px 4px #562746;margin-top:14px}
.duel-mid{position:relative;z-index:10;pointer-events:none}
.duel-mid button{pointer-events:auto}

/* v0.7.7: duel pause overlay sits above all dialogue/score panels.
   Animate the heading ONLY, never rotate the full-screen scrim. */
.duel-arena{isolation:isolate}
.duel-arena .duel-pause-banner{position:absolute;inset:0;z-index:100;
 display:flex;flex-direction:column;align-items:center;justify-content:center;
 background:rgba(39,22,41,.67);backdrop-filter:blur(3px);
 transform:none!important;animation:none!important;pointer-events:auto;
 color:#fff09b;text-align:center;padding:18px}
.duel-arena .duel-pause-banner[hidden]{display:none!important}
.duel-pause-label{display:block;font:italic 1000 clamp(54px,10vw,120px)/1 system-ui,sans-serif;
 letter-spacing:.04em;-webkit-text-stroke:3px #be4c8a;
 text-shadow:0 6px #863361,0 12px 28px #231325;
 animation:pause-pop .25s ease-out both}
.duel-arena .duel-pause-banner small{display:block;font:900 clamp(12px,1.7vw,17px)/1.5 system-ui,sans-serif;
 color:white;text-shadow:0 1px 4px #562746;margin-top:15px}
#duelPauseResume{display:block;margin-top:22px;border:2px solid #ffe5f0;
 border-radius:14px;background:#fff7fb;color:#a54e82;font:900 17px system-ui,sans-serif;
 padding:12px 24px;cursor:pointer;pointer-events:auto;box-shadow:0 5px 15px #27162977}
#duelPauseResume:focus-visible{outline:3px solid #ffdc62;outline-offset:3px}

/* v0.7.8: readable progress cues on compact panels */
#comboStat.combo-hot{color:#c06116;text-shadow:0 0 5px #ffd978}#saveStatus{font-size:clamp(9px,.85vw,12px);color:#948397}#saveStatus.save-live{color:#1685ae;font-weight:950;animation:saveGlow 1s ease-in-out infinite alternate}@keyframes saveGlow{from{opacity:.78}to{opacity:1;text-shadow:0 0 5px #8de7ff}}

/* v0.7.9 tactical pause status panels */
#pauseScreen .modal.compact{max-width:min(900px,96vw);width:min(900px,96vw);padding:clamp(12px,2.5vw,25px)}
.pause-info-layout{display:flex;align-items:center;justify-content:center;gap:clamp(12px,3vw,32px)}
.pause-main{width:min(380px,100%);min-width:0;flex:1}
.pause-info-layout .pause-big-title{font-size:clamp(48px,7.7vw,90px)}
.pause-strategy,.duel-pause-stats{background:#fff9fc;border:2px solid #f2b0ce;border-radius:18px;padding:14px;color:#92456d;text-align:left;min-width:230px;max-width:340px;box-shadow:0 8px 20px #4f244b25}
.pause-strategy h3,.duel-pause-stats h3{margin:0 0 10px;font-size:17px;color:#b74180;text-align:center}
.pause-stat{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:6px 0;border-bottom:1px dashed #edc5d5;font-size:12px;font-weight:800;letter-spacing:0;-webkit-text-stroke:0;text-shadow:none;font-style:normal}
.pause-stat b{font-size:13px;color:#a23e75;text-align:right;white-space:normal}
.pause-strategy p{margin:9px 0 0;font-size:11px;line-height:1.5}
.duel-arena .duel-pause-banner{display:flex;justify-content:center;align-items:center;padding:14px 10px}
.duel-pause-layout{display:flex;gap:clamp(10px,2vw,40px);align-items:center;justify-content:center;width:100%;height:100%;max-width:1000px}
.duel-pause-main{display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:0}
.duel-pause-main .duel-pause-label{font-size:clamp(42px,7vw,105px)}
.duel-pause-stats{width:285px;flex:0 1 285px;pointer-events:none;font-style:normal;-webkit-text-stroke:0;text-shadow:none;line-height:1.5}
@media(max-width:780px){#pauseScreen .modal.compact{max-width:min(420px,95vw);max-height:96dvh;overflow:auto}.pause-info-layout,.duel-pause-layout{flex-direction:column;gap:8px}.pause-main{width:100%;flex:none}.pause-info-layout .pause-big-title{font-size:clamp(42px,11vw,67px);margin-bottom:2px}.pause-main h2{font-size:18px;margin:4px}.pause-main p{margin:4px}.pause-main .primary,.pause-main .secondary{padding:7px;margin-top:5px;font-size:13px}.pause-strategy{width:100%;max-width:none;padding:8px 12px}.pause-strategy h3{font-size:14px;margin-bottom:4px}.pause-stat{padding:3px 0;font-size:11px}.pause-stat b{font-size:11px}.pause-strategy p{margin:3px 0;font-size:10px}.duel-pause-stats{width:85%;padding:8px}.duel-pause-main .duel-pause-label{font-size:48px}}
@media(max-height:620px){#pauseScreen .modal.compact{max-height:98dvh;overflow:auto}.pause-info-layout{gap:9px}.pause-main .primary,.pause-main .secondary{padding:6px;margin-top:3px}.pause-strategy .pause-stat{padding:3px 0}}

/* v0.8.0 nudge actions */
.nudge-action,.duel-nudge{background:linear-gradient(135deg,#ffecab,#ffcfe1);border:2px solid #e98dac;border-radius:13px;color:#803450;font-weight:800;cursor:pointer;padding:9px 14px;margin:5px auto;min-height:38px;box-shadow:0 3px 8px #b74f8025}
.nudge-action:hover,.duel-nudge:hover{filter:brightness(1.045)}
.nudge-action:active,.duel-nudge:active{transform:translateY(2px)}
.duel-nudge{width:100%;font-size:12px}
.duel-embedded .nudge-action{display:none!important}

/* v0.8.1: shared pinball table rumble. Do not transform pause overlay. */
@keyframes pinballRumble{0%,100%{transform:translate(0,0)}10%{transform:translate(8px,-5px) rotate(.45deg)}24%{transform:translate(-9px,6px) rotate(-.45deg)}37%{transform:translate(7px,3px) rotate(.3deg)}52%{transform:translate(-7px,-4px) rotate(-.4deg)}70%{transform:translate(5px,4px)}85%{transform:translate(-3px,-2px)}}
.duel-arena.nudge-rumble>.duel-side,.duel-arena.nudge-rumble>.duel-mid{animation:pinballRumble .65s ease-in-out 1;filter:drop-shadow(0 0 11px rgba(255,209,47,.85))}
.duel-arena.nudge-rumble{outline:5px solid rgba(255,203,60,.8);outline-offset:-6px}
@media(prefers-reduced-motion:reduce){.duel-arena.nudge-rumble>.duel-side,.duel-arena.nudge-rumble>.duel-mid{animation:none}}

/* v0.8.3: achievement notebook */
.records-overlay[hidden]{display:none!important}.records-overlay{position:fixed;inset:0;z-index:200000;background:#362139c9;display:grid;place-items:center;padding:12px}.records-panel{background:#fff9fc;color:#6c345a;border:4px solid #eda7c8;border-radius:22px;width:min(800px,98vw);max-height:94dvh;overflow:auto;padding:clamp(12px,2.5vw,25px);box-shadow:0 18px 80px #2e123880}.records-top{display:flex;align-items:center;justify-content:space-between;gap:12px}.records-top h2{margin:0;font-size:clamp(19px,3vw,28px)}.records-top button{background:white;color:#a84079;border:2px solid #eaa0c3;border-radius:12px;padding:9px 15px;cursor:pointer;font-weight:bold}.records-sub,.records-foot{font-size:12px;line-height:1.55;color:#926781}.records-panel h3{margin:17px 0 8px;color:#b24782;font-size:17px}.records-summary{display:flex;flex-wrap:wrap;gap:8px}.records-summary span{background:#ffeaf4;border:1px solid #f4c3db;padding:8px 11px;border-radius:12px;font-weight:bold;font-size:12px}.records-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.record-item{border:1px solid #ecc2d7;background:#fff;border-radius:14px;padding:10px;min-width:0}.record-item.locked{filter:saturate(.4);opacity:.73}.record-item strong{font-size:13px;display:block}.record-item p{font-size:11px;margin:4px 0;color:#836b7a}.record-item .record-progress{height:7px;background:#f6e9f2;border-radius:9px;overflow:hidden;margin-top:9px}.record-progress i{display:block;background:linear-gradient(90deg,#f98cba,#ffd065);height:100%;border-radius:9px}.record-item small{font-size:10px;color:#a85982}.records-panel button:focus-visible{outline:3px solid #ffb44a}@media(max-width:540px){.records-grid{grid-template-columns:1fr}.records-panel{padding:12px}.record-item{padding:8px}.records-panel h3{margin:10px 0 5px}}

/* v0.8.4 — readable notebook + collectible illustrated medal stickers */
.records-panel{width:min(940px,98vw);font-size:16px;line-height:1.55}
.records-top h2{font-size:clamp(24px,3vw,34px)}
.records-top button{font-size:15px;min-height:42px}
.records-sub,.records-foot{font-size:clamp(14px,1.5vw,16px)}
.records-panel h3{font-size:clamp(20px,2.4vw,25px);margin:20px 0 11px}
.records-summary{gap:10px}
.records-summary span{font-size:clamp(14px,1.55vw,17px);padding:10px 14px}
.records-grid{gap:12px}
.record-item{padding:14px 15px;display:flex;align-items:center;gap:12px;position:relative;min-height:116px;background:linear-gradient(130deg,#fff 65%,#fff0f8);box-shadow:0 3px 9px #ae649016}
.record-info{flex:1;min-width:0}
.record-item strong{font-size:clamp(15px,1.6vw,18px);line-height:1.35}
.record-item p{font-size:clamp(13px,1.4vw,15px);margin:7px 0 5px;line-height:1.48}
.record-item small{font-size:clamp(12px,1.28vw,14px)}
.record-item .record-progress{height:10px;margin-top:10px}
.record-sticker{width:clamp(70px,8.5vw,94px);height:clamp(70px,8.5vw,94px);flex-shrink:0;object-fit:contain;filter:drop-shadow(0 4px 3px #bb6c9270);transition:transform .2s ease}
.record-item:not(.locked) .record-sticker:hover{transform:rotate(-7deg) scale(1.07)}
.record-item.locked{opacity:1;filter:none;background:#f8f3f7;border-color:#dfd2dc}
.record-item.locked .record-sticker{filter:grayscale(1) opacity(.48);transform:scale(.92)}
.record-item.locked .record-info{opacity:.72}
.record-item.complete{border-color:#e7a2c4;background:linear-gradient(125deg,#fff 63%,#fff0c8)}
.record-item.complete .record-sticker{filter:drop-shadow(0 4px 4px #cb8c40a6)}
@media(max-width:540px){.records-panel{padding:14px}.records-panel h3{margin:16px 0 8px}.record-item{padding:11px 12px;min-height:99px;gap:9px}.record-sticker{width:76px;height:76px}.records-grid{grid-template-columns:1fr;gap:9px}.records-summary span{font-size:14px}}
@media(max-width:360px){.record-sticker{width:62px;height:62px}.record-item strong{font-size:14px}.record-item p{font-size:12px}}

/* v0.8.6: unlocked medal showcase and achievement celebration */
.records-gallery-toggle{display:block;margin:8px 0 12px;padding:10px 16px;border:2px solid #d582af;border-radius:13px;background:#fff0f8;color:#92336b;font-size:clamp(14px,1.6vw,18px);font-weight:800;cursor:pointer}
.records-gallery-section[hidden]{display:none!important}
.records-gallery-section{background:linear-gradient(145deg,#fff4df,#fff5fc);padding:15px;border:2px solid #f4d399;border-radius:18px;margin:10px 0 18px}
.records-gallery{display:grid;grid-template-columns:repeat(auto-fit,minmax(145px,1fr));gap:13px}
.gallery-card{background:white;border:2px solid #f5d79e;border-radius:17px;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:12px;text-align:center;gap:5px;box-shadow:0 5px 15px #a8676a21}
.gallery-card img{width:106px;height:106px;object-fit:contain;filter:drop-shadow(0 5px 5px #bd93435e)}
.gallery-card strong{font-size:15px;line-height:1.4}
.gallery-card small{font-size:12px;color:#8c6a7b}
.gallery-empty{font-size:15px;color:#8a6380}
.achievement-celebration{position:fixed;inset:0;z-index:400000;display:flex;justify-content:center;align-items:center;background:#240f276e;animation:achievementReveal .25s ease-out}
.achievement-celebration-card{max-width:min(380px,90vw);width:100%;background:radial-gradient(circle at 50% 15%,#fff9db 5%,#ffebf5 85%);border:5px solid #f2bd59;border-radius:25px;box-shadow:0 0 36px #ffe6a9b5,0 16px 36px #37173784;text-align:center;padding:18px 16px 14px;display:flex;align-items:center;flex-direction:column;gap:9px;animation:achievementPop .55s cubic-bezier(.17,1.5,.38,1) both;color:#85396d}
.achievement-celebration-title{font-size:clamp(23px,5vw,33px);font-weight:900;text-shadow:0 2px 1px white}
.achievement-celebration-card img{width:clamp(125px,29vw,175px);height:clamp(125px,29vw,175px);object-fit:contain;filter:drop-shadow(0 7px 10px #bd843e91)}
.achievement-celebration-card strong{font-size:clamp(19px,4vw,25px)}
.achievement-celebration-card p{font-size:clamp(14px,2.5vw,17px);margin:0}
.achievement-celebration-card small{font-size:12px;color:#986e81}
@keyframes achievementReveal{from{opacity:0}to{opacity:1}}
@keyframes achievementPop{from{transform:scale(.6) rotate(-5deg);opacity:0}to{transform:scale(1) rotate(0);opacity:1}}
@media(max-width:500px){.records-gallery{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.gallery-card img{width:82px;height:82px}.gallery-card strong{font-size:13px}}
@media(prefers-reduced-motion:reduce){.achievement-celebration,.achievement-celebration-card{animation:none}}

/* Achievement celebration blocks playfield input and makes keyboard dismissal explicit. */
.achievement-celebration{pointer-events:auto;touch-action:manipulation}

/* v0.9.0: debug-only achievements controls on the title screen */
.title-debug-achievements[hidden]{display:none!important}
.title-debug-achievements{margin:14px auto 0;padding:13px;border:2px solid #eeb1cc;border-radius:14px;background:#fff4f8;display:flex;flex-direction:column;gap:10px;max-width:460px;text-align:left;color:#823f69;font-size:15px;line-height:1.45}
.title-debug-achievements strong{font-size:17px}
.title-debug-achievements label{display:flex;align-items:center;gap:8px;cursor:pointer}
.title-debug-achievements input{width:20px;height:20px;flex-shrink:0;accent-color:#c34484}
.title-debug-achievements button{font-size:16px;min-height:44px}
.title-debug-achievements button:disabled{opacity:.48;cursor:not-allowed}
.title-debug-achievements small{font-size:13px;overflow-wrap:anywhere}

/* v0.9.3: translucent achievement card; separate daily-challenge celebration */
.achievement-celebration-card{opacity:.7}
.achievement-celebration-card.daily-celebration-card{opacity:.92;border-color:#ee9aba}

/* v1.0.0: Smartphone landscape orientation guard; desktop unaffected.
   Media query is evaluated live, so returning to portrait automatically hides it. */
.portrait-only-notice{display:none;position:fixed;inset:0;z-index:2147483647;
 padding:calc(16px + env(safe-area-inset-top,0px)) calc(16px + env(safe-area-inset-right,0px))
 calc(16px + env(safe-area-inset-bottom,0px)) calc(16px + env(safe-area-inset-left,0px));
 background:linear-gradient(135deg,#ffe9f2,#fffaed 55%,#eaf8ee);align-items:center;justify-content:center;overflow:auto;text-align:center}
.portrait-only-card{width:min(95%,520px);max-height:100%;overflow:auto;background:#fffdfaf5;border:3px solid #f5abc8;
 border-radius:22px;box-shadow:0 12px 45px #9c5d8340;padding:16px 22px;color:#9e4c7d}
.portrait-only-symbol{font-size:clamp(38px,9vh,72px);line-height:1.15}
.portrait-only-card h2{font-size:clamp(19px,5vh,30px);margin:7px 0 11px;line-height:1.25}
.portrait-only-card p{font-size:clamp(13px,3.6vh,18px);font-weight:750;line-height:1.5;margin:7px 0}
@media (orientation:landscape) and (pointer:coarse) and (max-height:650px){
 .portrait-only-notice{display:flex}
}
