.fantasy-app{--accent:#d4af68;--light:#f5ead4;--shadow:#806035;--ink:#213348;color:#f1e8d8;background:radial-gradient(ellipse at 90% 0,#23354b 0,transparent 55%),radial-gradient(ellipse at 10% 80%,#12394166,transparent 50%),#091827;background-attachment:fixed;min-height:100svh}.fantasy-app[data-theme=pink]{--accent:#eb85a9;--light:#f5e0e5;--shadow:#9e426d}.fantasy-app[data-theme=blue]{--accent:#78b7ed;--light:#e2eef6;--shadow:#3b6798}.fantasy-app[data-theme=purple]{--accent:#b89ce9;--light:#ede6f6;--shadow:#76529c}.fantasy-app[data-theme=orange]{--accent:#ecc07b;--light:#f8ecd9;--shadow:#9d6a38}.fantasy-app[data-theme=green]{--accent:#7bd6b9;--light:#e0f2e8;--shadow:#377e70}.fantasy-app::before{content:'';position:fixed;inset:0;pointer-events:none;z-index:-1;background-image:radial-gradient(#bfe6e240 .7px,transparent .7px);background-size:43px 43px;opacity:.35}.fantasy-app .app{padding-top:0}.fantasy-app .topbar{border-bottom:1px solid #b99c5740;height:76px}.fantasy-app .brand{font-family:var(--font-display,serif);font-size:21px;color:#e8cc97;letter-spacing:.02em}.fantasy-app .brand b{color:#8dd5cc}.fantasy-app nav a{color:#d0dce1}.fantasy-app .intro{padding:30px 8px 20px}.fantasy-app .intro .eyebrow{color:#b89e6a}.fantasy-app .intro h1{color:#f7e8c7;font-family:var(--font-display,serif)}.fantasy-app .intro em{color:#99d9cd}.fantasy-app .intro p{color:#c2d0d8}.fantasy-app .intro .decor{opacity:.4}.fantasy-app .menu-heading h2{color:#f2dfba}.fantasy-app .menu-heading>span{color:#b5a47d}.fantasy-app .game-tile{--tile-a:#203c50;--tile-b:#102238;--tile-shadow:#020b15;border:1px solid #d4b16f88;border-radius:5px;box-shadow:inset 0 0 0 4px #081627,0 5px 0 #020c16,0 10px 25px #0003;min-height:108px}.fantasy-app .game-tile::after{background:linear-gradient(140deg,#fff1c210,transparent 48%)}.fantasy-app .tile-icon{color:#e5c580;text-shadow:0 0 16px var(--accent);font-size:35px}.fantasy-app .tile-name{font-size:20px;color:#f3e6cf}.fantasy-app .tile-time{color:#dfceaa;background:#dbc08b13;border:1px solid #d8b97766}.fantasy-app .tile-arrow{color:#dfc48a}.fantasy-app #menu .notice{background:#12283c;border:1px solid #c4a96740;color:#b9cad2}.fantasy-app #menu>.small{color:#d2bc8c}.fantasy-app footer{border-color:#aa8b443d;color:#90a5b5}.fantasy-app footer span{color:#baa373}.fantasy-app #ready{position:relative;isolation:isolate;padding-top:8px}.fantasy-app #ready::before{content:'';position:absolute;inset:0 -20px auto;height:340px;z-index:-1;background:linear-gradient(#0a1a2a55,#091827 95%),url('assets/title-grimoire-v1.jpg') center 45%/cover;opacity:.45;pointer-events:none}.fantasy-app .back{color:#c8d9df}.fantasy-app .ready-art{border:2px solid #e4c789;border-radius:4px;outline:1px solid #ad8e4a80;outline-offset:7px;background:radial-gradient(circle at 35% 20%,#d9f7ef22,#143148 70%);color:var(--accent);text-shadow:0 0 25px var(--accent);box-shadow:0 0 35px #74c5c520,inset 0 0 25px #050f21,0 12px 25px #0005;transform:rotate(0);font-size:72px;width:140px;height:140px}.fantasy-app #ready .eyebrow{color:#c5ad7b}.fantasy-app .rule{color:#d7e0e2}.fantasy-app .rule-box{background:linear-gradient(140deg,#173448,#102638);border:1px solid #d6b77680;border-radius:5px;box-shadow:inset 0 0 0 4px #081c2b}.fantasy-app .rule-box h2{color:#e4ce9c}.fantasy-app .rule-box p{color:#d3e0e4}.fantasy-app .big-button{border-radius:4px;background:linear-gradient(145deg,#327079,#184353 60%,#153247);border:1px solid #efd095;color:#fff1cc;box-shadow:inset 0 1px 0 #fff6,inset 0 -4px #061b29,0 5px 0 #020c17,0 0 20px #79d8c71a;letter-spacing:.08em;position:relative;overflow:hidden}.fantasy-app .big-button::after{content:'';position:absolute;inset:0;background:linear-gradient(115deg,transparent 30%,#fff1b015 50%,transparent 65%);pointer-events:none}.fantasy-app .secondary{color:#e8d3a3;background:#193247;border:1px solid #c7a76a77;border-radius:4px}.fantasy-app .game-top{height:50px;color:#decda9}.fantasy-app .game-top>span{color:#f3e4c2}.fantasy-app .sound-label{color:#c8d9dd}.fantasy-app .scoreboard{background:linear-gradient(150deg,#213e54,#0b2136);border:1px solid #c9ab6d80;border-radius:5px;padding:9px 12px;box-shadow:inset 0 0 0 3px #091827,0 4px 0 #030d17}.fantasy-app .scoreboard small{color:#bccbce}.fantasy-app .scoreboard strong{color:#f5dfaa;font-family:Georgia,'Times New Roman',serif;font-weight:400;text-shadow:0 0 18px #f0cf7733}.fantasy-app .scoreboard .timer strong{color:#c9ece8}.fantasy-app .scoreboard #combo-box[data-level='1'] strong{color:#fff1ae}.fantasy-app .scoreboard #combo-box[data-level='2'] strong{color:#f3c0dc}.fantasy-app .scoreboard #combo-box[data-level='3']{background:#73522155;border:1px solid #ead29177;border-radius:4px}.fantasy-app .scoreboard .timer .urgent{color:#ffb5b6}.fantasy-app .time-track{height:6px;background:#284155;margin:15px 2px 16px;border-radius:1px;box-shadow:0 0 0 1px #b7985855}.fantasy-app .time-track div{background:linear-gradient(90deg,var(--accent),#fff3c4);box-shadow:0 0 12px var(--accent)}.fantasy-app .subject{color:#c0a97e}.fantasy-app #question{color:#f7ebd3}.fantasy-app .condition{color:#c0d0d9;margin-bottom:14px}.fantasy-app .compare-card{border-radius:5px;background:linear-gradient(145deg,#fcf4df,#e9dcc0);border:1px solid #d7b770;box-shadow:inset 0 0 0 4px #a88d5429,0 6px 0 #675238,0 12px 25px #0004;color:#263a46;min-height:230px}.fantasy-app .compare-letter{border-radius:2px;transform:rotate(45deg);color:#f9e8bc;border:1px solid #e1c588;background:linear-gradient(135deg,var(--shadow),#263d50);font-family:Georgia,serif;line-height:42px}.fantasy-app .compare-name{font-weight:700}.fantasy-app .compare-value{color:#734d31;font-weight:700}.fantasy-app .categories{color:#f5e6c3}.fantasy-app .categories span{background:#1d3d54;border:1px solid #b9975e88;border-radius:4px;padding:10px 13px}.fantasy-app .swipe-card{background:linear-gradient(135deg,#fff7e6,#e4d6b9);border:1px solid #b99555;border-radius:6px;color:#293c45;box-shadow:inset 0 0 0 6px #99733725,0 8px 0 #716044,0 16px 35px #0005;position:relative;min-height:240px}.fantasy-app .swipe-card::before{content:'◆';position:absolute;top:10px;left:14px;color:#b7914f;font-size:12px}.fantasy-app .card-star{color:#87703b;font-size:38px;text-shadow:0 0 25px #a18e4633}.fantasy-app .swipe-card small{color:#766a55}.fantasy-app .swipe-actions button{border-radius:4px;background:linear-gradient(135deg,#285776,#173a54);border:1px solid #d4b77c;color:#f7e7c5;box-shadow:inset 0 1px #fff4,0 4px #010d18}.fantasy-app .memory-card{border-radius:5px}.fantasy-app .card-back,.fantasy-app .card-face{border:1px solid #d5b779;border-radius:5px;box-shadow:0 4px 0 #30223e,inset 0 0 0 4px #b8a17038}.fantasy-app .card-back{background:radial-gradient(circle,#754c9e55,transparent 65%),repeating-linear-gradient(45deg,#23324c 0 9px,#1e2b45 9px 18px);color:#f2dfb3;text-shadow:0 0 18px #b4a0da}.fantasy-app .card-back::after{content:'';position:absolute;inset:10px;border:1px solid #bca16b66;transform:rotate(0);border-radius:50%}.fantasy-app .card-face{background:linear-gradient(135deg,#fcf4e0,#e8d9c1);color:#293548}.fantasy-app .memory-card.matched .card-face{background:linear-gradient(135deg,#e9f4d5,#c7dfc5);border-color:#c8b874;box-shadow:0 4px #2c5d52,inset 0 0 15px #a4dd8a}.fantasy-app .pair-mark{color:#68498c}.fantasy-app .mole{background:radial-gradient(ellipse at bottom,#3a586a,transparent 75%);padding-top:14px;gap:18px 12px}.fantasy-app .mole-body{border:1px solid #e1c790;background:radial-gradient(circle at 35% 20%,#ffe9c2,#d3ac78 75%);color:#453b32;box-shadow:inset 0 4px 0 #fff5,0 0 18px #e5c27822}.fantasy-app .hole-shadow{background:#061421;border:5px solid #677774;box-shadow:0 2px 0 #d2bb8144}.fantasy-app .mole-hole.hit .mole-body{background:linear-gradient(#e8f9d8,#8ebf9c)}.fantasy-app .mole-hole.glow .mole-body{outline:2px solid #ffe6ab;box-shadow:0 0 28px #ffee9b77}.fantasy-app .mole-eyes{color:#6d593f}.fantasy-app .skyline{background:linear-gradient(#17314d,#284a5b);border:1px solid #a78c5660;border-radius:4px;min-height:310px}.fantasy-app .mini-tower span{background:linear-gradient(145deg,#b0e5ce,#4b9a89);border:1px solid #d1c281;box-shadow:inset 0 2px #fff7;border-radius:2px}.fantasy-app .height-label{color:#d9dfc8}.fantasy-app .tower-slot{border:1px dashed #c7b67e77;border-radius:4px;background:#c9e4da0b;color:#b2c9cd}.fantasy-app .tower-slot:is(button){background:linear-gradient(145deg,#dff2e3,#94cbb7);border:1px solid #d8c792;color:#1e493f;box-shadow:0 3px #346b5f}.fantasy-app .tower-choice{background:linear-gradient(135deg,#fff4de,#e3d5b7);color:#293c43;border:1px solid #bda26a;border-radius:4px;box-shadow:0 3px #756341}.fantasy-app .stack-button{background:linear-gradient(#3d8576,#1b514e);border:1px solid #d8be7c;color:#f5e9c9;border-radius:4px}.fantasy-app .hint-button{color:#ead4a0;background:linear-gradient(#273b47,#172b3b);border:1px solid #b99a6088;border-radius:4px}.fantasy-app #hint-text{color:#efdaaa}.fantasy-app #hint-area{margin-top:15px;min-height:68px}.fantasy-app .live-feedback{background:#102c3e;color:#d8e8ed;border:1px solid #6b8c9866;border-radius:4px}.fantasy-app .live-feedback[data-good=true]{background:#163c3c;color:#deffe8;border-color:#93c6a477}.fantasy-app .live-feedback[data-good=false]{background:#3a273c;color:#ffe2ec;border-color:#bf7f9c77}.fantasy-app .game-bottom{color:#b8cacd}.fantasy-app .pop-score{text-shadow:1px 2px #041522,-1px -1px #041522;right:8px;top:-3px;font-size:36px}.fantasy-app .pop-score.good{color:#ffedb5}.fantasy-app .pop-score.bad{color:#ffb5bd}.fantasy-app #result{padding-top:26px}.fantasy-app #result>.eyebrow{color:#c6ae7b}.fantasy-app #result h1{color:#f5e4bf}.fantasy-app .result-medal{filter:drop-shadow(0 0 22px #d8b45c77);color:#f6dc94}.fantasy-app .result-score{background:radial-gradient(circle at 50% 0,#54727333,transparent 60%),linear-gradient(145deg,#18334a,#0b2135);border:1px solid #d9b977;border-radius:5px;box-shadow:inset 0 0 0 5px #0b1829,0 6px 0 #020b15}.fantasy-app .result-score strong{color:#fff0bc;font-family:Georgia,serif;font-weight:400;text-shadow:0 0 22px #e3ca7555}.fantasy-app #result-stats{color:#cfdddf}.fantasy-app .learning-line{background:linear-gradient(135deg,#1b3549,#132a3c);border:1px solid #aa96564d;color:#dfebea;border-radius:4px;box-shadow:0 3px #020b13}.fantasy-app #result>.small{color:#b1c3cc}.quality-view .quality-app{color:#e9e3d9}.quality-view h1{font-family:var(--font-display,serif);color:#f4e1b6}.quality-view .small{color:#c3d0d7}.quality-view .stat{background:linear-gradient(#1d384e,#13293d);box-shadow:0 4px #020d1b;border:1px solid #aa8f5d77;border-radius:5px}.quality-view .stat strong{color:#e9cd96}.quality-view .stat span{color:#c9d5da}.quality-view .report-panel{background:#173044;border:1px solid #a78d5b66;border-radius:4px}.quality-view .count-line{border-color:#b6baaa30;color:#d3e1e5}.quality-view .q-row{background:linear-gradient(135deg,#193348,#11283b);border:1px solid #b49a6366;border-radius:5px}.quality-view .q-meta{color:#c1b08d}.quality-view .q-grid section{background:#08203280;border:1px solid #7496a42b;border-radius:4px}.quality-view .q-grid h3{color:#d9be8b}.quality-view .q-grid p{color:#e0e9e8}.quality-view .q-row pre{color:#d3e1df}.quality-view .source-note{color:#c4d1d8}.quality-view .issue{color:#ffbec7}.quality-view .dup-list{background:#0c2235;color:#d4e2e7}.quality-view .coverage-row{border-color:#a7aaa140;color:#d4e0e6}.quality-view #filtered-count{color:#b4cbd1}.quality-view .quality-app button,.quality-view .import{background:#1e3e53;border:1px solid #c0a36d88;color:#ebdebd;border-radius:4px}.quality-view a{color:#a5dfd5}.quality-view .filters input,.quality-view .filters select,.quality-view textarea,.quality-view .q-row select{background:#f7f1e4;border-color:#b5a57c;color:#283b46;border-radius:4px}.quality-view .import input{background:transparent;color:#dce8e8}.quality-view .topbar{height:76px}.ceremony{position:fixed;inset:0;z-index:100;background:radial-gradient(circle at center,#28616b44,transparent 55%),#05121ce8;display:grid;place-items:center;text-align:center;overflow:hidden;isolation:isolate;animation:ceremonyVeil .25s both;touch-action:none}.ceremony-circle{position:absolute;width:min(82vw,450px);aspect-ratio:1;border:1px solid #d5b677;border-radius:50%;box-shadow:0 0 50px #68d6cd44,inset 0 0 55px #b8e8d322;animation:runeTurn 12s linear infinite}.ceremony-circle::before,.ceremony-circle::after{content:'';position:absolute;inset:10%;border:1px dashed #c8e2cf80;transform:rotate(45deg)}.ceremony-circle::after{inset:22%;border:1px solid #e9d19caa;transform:rotate(0);border-radius:50%}.ceremony-content{position:relative;z-index:2;width:100%;padding:40px 20px;text-shadow:0 3px 10px #001}.ceremony-content p{font:13px Georgia,serif;letter-spacing:4px;color:#d5c18e;margin-bottom:28px}.ceremony-content strong{display:block;font-family:var(--font-display,serif);font-size:clamp(25px,7vw,40px);letter-spacing:.08em;color:#fff0c9;line-height:1.6;animation:spellTitle .5s both}.ceremony-content>span{display:block;font-size:30px;color:#a9e7d5;margin-top:25px;min-height:60px;font-weight:700}.ceremony[data-kind=finish] .ceremony-content>span{font-family:Georgia,serif;font-size:42px;color:#ffe9ab}.ceremony[data-kind=abort] .ceremony-content strong{font-size:28px}#spell-effects{position:fixed;inset:0;z-index:80;pointer-events:none;overflow:hidden}.spell-ring{position:absolute;left:50%;top:35%;width:100px;height:100px;border:2px solid #fce6a6;border-radius:50%;box-shadow:0 0 25px #d3d48a55,inset 0 0 25px #f3e3aa44;animation:spellRing .75s ease-out both}.spell-ring::after{content:'';position:absolute;inset:13px;border:1px solid #eae3aa;transform:rotate(45deg)}.spell-badge{position:absolute;top:27%;left:50%;transform:translateX(-50%);white-space:nowrap;color:#fff0bd;font-family:var(--font-display,serif);font-size:clamp(36px,11vw,53px);font-weight:700;text-shadow:0 2px 0 #765024,0 0 20px #e6c87b88,0 4px 15px #001;border-top:1px solid #d2b77477;border-bottom:1px solid #d2b77477;padding:5px 30px;background:linear-gradient(90deg,transparent,#12293cc9,transparent);animation:spellBadge .85s both}.spell-badge small{display:block;text-align:center;font:13px Georgia,serif;letter-spacing:3px;line-height:1.5}.spell-badge.miss{color:#f5ccdf;text-shadow:0 2px 0 #653851,0 0 20px #bfa0d466,0 4px 15px #001;border-color:#c3a2cc88;font-size:32px}.spell-spark{position:absolute;left:50%;top:35%;width:5px;height:5px;background:#ffe5a6;box-shadow:0 0 12px #a6f7df;animation:spellSpark .85s ease-out both;transform:rotate(45deg)}.spell-spark.miss{background:#c4b4dc;box-shadow:0 0 9px #a18fb6}.result-arrive{animation:resultArrive .6s ease-out both}@keyframes spellBadge{0%{opacity:0;transform:translateX(-50%) translateY(12px) scale(.65)}20%{opacity:1;transform:translateX(-50%) translateY(0) scale(1.06)}65%{opacity:1;transform:translateX(-50%) scale(1)}100%{opacity:0;transform:translateX(-50%) translateY(-12px) scale(1.03)}}@keyframes spellRing{from{transform:translate(-50%,-50%) scale(.3);opacity:1}to{transform:translate(-50%,-50%) scale(3.4);opacity:0}}@keyframes spellSpark{0%{opacity:0;transform:translate(0,0) scale(.6) rotate(45deg)}15%{opacity:1}100%{transform:translate(var(--dx),var(--dy)) scale(.2) rotate(225deg);opacity:0}}@keyframes runeTurn{to{transform:rotate(360deg)}}@keyframes ceremonyVeil{from{opacity:0}to{opacity:1}}@keyframes spellTitle{from{opacity:0;transform:translateY(15px)}to{opacity:1;transform:translateY(0)}}@keyframes resultArrive{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(max-width:400px){.fantasy-app .app{padding-left:16px;padding-right:16px}.fantasy-app .topbar{height:auto;min-height:76px;flex-wrap:wrap;padding:12px 0;gap:4px}.fantasy-app .brand{font-size:20px}.fantasy-app .topbar nav{gap:17px}.fantasy-app .game-top{height:48px}.fantasy-app .scoreboard{padding:8px}.fantasy-app .compare-card{min-height:228px}.fantasy-app .memory{gap:10px}.fantasy-app #hint-area{gap:8px}.fantasy-app .time-track{margin:12px 2px 14px}.fantasy-app .mole{gap:14px 10px}.fantasy-app .tile-name{font-size:18px}}@media(prefers-reduced-motion:reduce){.fantasy-app *, .fantasy-app *::before,.fantasy-app *::after,.ceremony,.ceremony *,.spell-badge,.spell-ring,.spell-spark{animation:none!important;transition:none!important}.spell-ring,.spell-spark{display:none}.spell-badge{top:24%;opacity:1;transform:translateX(-50%)}.ceremony-circle{opacity:.35}}

.fantasy-app .compare-letter{transform:none;clip-path:polygon(50% 0,100% 50%,50% 100%,0 50%);width:52px;height:52px;line-height:52px}
.fantasy-app{min-width:0}.fantasy-app .app{min-width:0}.fantasy-app .tower-actions>*{min-width:0}.fantasy-app .tower-choice,.fantasy-app .tower-slot{font-size:16px}.fantasy-app #game{min-width:0}
.quality-view h1{text-wrap:balance}
