:root{--paper:#f7f1e3;--paper-deep:#efe4cd;--wood:#8a5a3b;--wood-dark:#6b4327;--ink:#3b3226;--ink-soft:#6b6053;--accent:#c17a4d;--accent-soft:#c17a4d2e;--success:#6f8f5c;--danger:#b5533f;--card-bg:#fffaf0;--card-back:linear-gradient(135deg, #8a5a3b, #6b4327);--shadow-soft:0 2px 6px #3b322626;--shadow-lift:0 10px 20px #3b322647;--radius:10px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;color:var(--ink);background:var(--paper);font:16px/1.5 Noto Sans TC,PingFang TC,Microsoft JhengHei,system-ui,sans-serif}*{box-sizing:border-box}body{background:var(--paper);min-height:100svh;margin:0}#root{flex-direction:column;min-height:100svh;display:flex}button{font:inherit;cursor:pointer}button:disabled{cursor:not-allowed;opacity:.5}ul{margin:0;padding:0;list-style:none}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.001ms!important;animation-duration:.001ms!important}}html.animations-off *,html.animations-off :before,html.animations-off :after{transition-duration:.001ms!important;animation-duration:.001ms!important}.home-screen{flex-direction:column;flex:1;gap:16px;padding:16px;display:flex}.home-header{flex-shrink:0;justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.home-main{text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:28px;padding:16px 0;display:flex}.home-settings-button{border:1px solid var(--paper-deep);background:var(--card-bg);width:40px;height:40px;color:var(--ink-soft);border-radius:999px;flex-shrink:0;font-size:18px}.home-profile{border-radius:var(--radius);border:1px solid var(--paper-deep);background:var(--card-bg);text-align:left;align-items:center;gap:8px;padding:6px 14px;display:flex}.home-profile-avatar{object-fit:cover;border-radius:50%;flex-shrink:0;width:28px;height:28px}.home-profile-text{flex-direction:column;align-items:flex-start;gap:2px;display:flex}.home-profile-name{color:var(--ink-soft);text-overflow:ellipsis;white-space:nowrap;max-width:120px;font-size:12px;font-weight:600;overflow:hidden}.home-profile-coins{font-size:14px;font-weight:600}.home-book{padding:0 10px 10px 0}.home-book-cover{aspect-ratio:3/4;background:linear-gradient(160deg, var(--wood) 0%, var(--wood-dark) 100%);width:min(85vw,340px);box-shadow:var(--shadow-lift), 6px 6px 0 0 var(--paper), 11px 11px 0 0 var(--paper-deep);color:var(--paper);cursor:pointer;border-radius:8px 16px 16px 8px;flex-direction:column;justify-content:center;align-items:center;gap:10px;transition:transform .2s;display:flex}.home-book-cover:hover{transform:translateY(-4px)}.home-title{letter-spacing:2px;font-size:clamp(24px,7vw,32px);font-weight:700}.home-subtitle{opacity:.8;letter-spacing:1px;font-size:13px}.home-book-icon{margin-top:8px;font-size:clamp(36px,10vw,48px)}.home-primary{background:var(--accent);color:#fff;box-shadow:var(--shadow-soft);border:none;border-radius:999px;padding:12px 32px;font-size:16px;font-weight:600}.home-menu{flex-wrap:wrap;justify-content:center;gap:12px;display:flex}.home-menu button{border:1px solid var(--paper-deep);background:var(--card-bg);color:var(--ink-soft);border-radius:999px;padding:8px 18px}.list-screen{flex:1;width:100%;max-width:640px;margin:0 auto;padding:16px}.list-header{align-items:center;gap:12px;margin-bottom:16px;display:flex}.list-header h1{margin:0;font-size:20px}.hud-back{color:var(--ink-soft);background:0 0;border:none;padding:6px 8px;font-size:15px}.chapter-list,.level-list{flex-direction:column;gap:10px;display:flex}.chapter-item,.level-item{border-radius:var(--radius);border:1px solid var(--paper-deep);background:var(--card-bg);width:100%;box-shadow:var(--shadow-soft);text-align:left;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:4px 12px;padding:16px 18px;display:flex}.chapter-title,.level-number{font-weight:600}.chapter-stars,.level-stars{color:var(--accent)}.chapter-locked{text-align:right;opacity:.5;flex-basis:100%}.chapter-generate-row{align-items:center;gap:10px;margin-top:6px;padding:0 4px;display:flex}.level-difficulty{background:var(--accent-soft);color:var(--accent);border-radius:999px;padding:3px 10px;font-size:13px}.level-difficulty-hard{color:var(--danger);background:#b5533f26}.game-screen{--card-w:84px;--card-h:calc(var(--card-w) * 1.309);--card-gap:8px;--card-step:calc(var(--card-w) * .4);flex-direction:column;flex:1;gap:10px;width:100%;max-width:1200px;min-height:0;margin:0 auto;padding:10px 14px 24px;display:flex;overflow:hidden}.hud{flex-direction:column;gap:6px;display:flex}.hud-row{flex-wrap:wrap;align-items:center;gap:14px;display:flex}.hud-row button{border:1px solid var(--paper-deep);background:var(--card-bg);color:var(--ink);border-radius:999px;padding:6px 14px;font-size:14px}.hud-difficulty{background:var(--accent-soft);color:var(--accent);border-radius:999px;padding:3px 10px;font-size:13px}.hud-stat{font-variant-numeric:tabular-nums;color:var(--ink-soft)}.hud-coins{margin-left:auto;font-weight:600}.hud-message{background:var(--danger);color:#fff;border-radius:8px;align-self:flex-start;padding:6px 14px;font-size:13px}.category-slots{flex-wrap:wrap;gap:10px;display:flex}.slot{border-radius:var(--radius);border:2px dashed var(--paper-deep);background:var(--card-bg);flex-direction:column;flex:140px;justify-content:center;align-items:center;gap:4px;min-width:96px;min-height:64px;padding:8px;display:flex;position:relative}.slot-empty{width:var(--card-w);height:var(--card-h);flex:none;min-width:0;min-height:0;padding:4px}.slot-active{border-style:solid;border-color:var(--accent);background:#fffdf6}.slot-hinted{box-shadow:0 0 0 3px #c17a4d80}.slot-receiving{animation:.45s slot-receive}@keyframes slot-receive{0%{transform:scale(1)}35%{transform:scale(1.05);box-shadow:0 0 0 4px #6f8f5c73}to{transform:scale(1)}}.slot-plus{color:var(--success);pointer-events:none;font-size:14px;font-weight:700;animation:.9s forwards slot-plus;position:absolute;top:2px;right:8px}@keyframes slot-plus{0%{opacity:0;transform:translateY(8px)}25%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-16px)}}.slot-complete-burst{border-radius:calc(var(--radius) - 2px);background:var(--success);color:#fff;pointer-events:none;justify-content:center;align-items:center;gap:4px;font-weight:700;animation:.9s forwards slot-complete;display:flex;position:absolute;inset:0}@keyframes slot-complete{0%{opacity:0;transform:scale(.82)}25%{opacity:1;transform:scale(1)}70%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(1.05)}}.slot-name{font-weight:600}.slot-placeholder{color:var(--ink-soft);font-size:clamp(10px, calc(var(--card-w) * .15), 13px);text-align:center}.slot-progress-track{background:var(--paper-deep);border-radius:999px;width:100%;height:6px;overflow:hidden}.slot-progress-fill{background:var(--success);height:100%;transition:width .25s}.slot-count{color:var(--ink-soft);font-size:12px}.table-row{gap:var(--card-gap);flex:auto;justify-content:center;align-items:stretch;min-width:0;min-height:60px;display:flex;overflow:hidden}.table-area{flex:auto;justify-content:center;align-items:center;min-width:0;display:flex}.columns-row{gap:var(--card-gap);flex:0 auto;min-width:0;display:flex;overflow:visible}.column{width:var(--card-w);border-radius:var(--radius);background:#8b5a3b14;flex:none;position:relative}.column-empty-slot{border:2px dashed var(--paper-deep);border-radius:var(--radius);background:0 0;position:absolute;inset:0}.deck-waste{justify-content:center;align-items:center;gap:var(--card-gap);flex-shrink:0;display:flex}.deck-pile{width:var(--card-w);height:var(--card-h);background:0 0;border:none;padding:0;position:relative}.deck-count{text-align:center;color:var(--ink-soft);font-size:12px;position:absolute;bottom:-18px;left:0;right:0}.waste-pile{width:var(--card-w);height:var(--card-h)}.card-empty-pile{width:var(--card-w);height:var(--card-h);border:2px dashed var(--paper-deep);border-radius:var(--radius);color:var(--ink-soft);justify-content:center;align-items:center;font-size:22px;display:flex}.card{width:var(--card-w);height:var(--card-h);border-radius:var(--radius);text-align:center;font-size:clamp(11px, calc(var(--card-w) * .19), 22px);-webkit-user-select:none;user-select:none;touch-action:none;box-shadow:var(--shadow-soft);justify-content:center;align-items:center;padding:6px;font-weight:600;transition:box-shadow .15s,transform 80ms;display:flex}.card:focus-visible{outline:3px solid var(--accent);outline-offset:2px}.card-word{background:var(--card-bg);border:1px solid var(--paper-deep);color:var(--ink)}.card-category{border:1px solid var(--accent);color:var(--wood-dark);background:linear-gradient(160deg,#f3ddb8,#e6c185);flex-direction:column;gap:4px}.card-sub{opacity:.75;font-size:11px;font-weight:400}.card-back{background:var(--card-back);border:1px solid var(--wood-dark)}.card-back-pattern{border:2px solid #ffffff59;border-radius:6px;width:60%;height:60%}.card-selected{box-shadow:0 0 0 3px var(--accent), var(--shadow-lift);transform:translateY(-4px)}.card-hinted{box-shadow:0 0 0 3px #6f8f5cb3, var(--shadow-lift)}.card-dragging{box-shadow:var(--shadow-lift);pointer-events:none;transition:none}.card-shake{box-shadow:0 0 0 3px var(--danger);animation:.4s card-shake}@keyframes card-shake{0%,to{transform:translate(0)}20%{transform:translate(-6px)}40%{transform:translate(6px)}60%{transform:translate(-4px)}80%{transform:translate(4px)}}.card-reveal{animation:.22s card-reveal}@keyframes card-reveal{0%{opacity:.4;transform:scaleX(.4)rotateY(35deg)}to{opacity:1;transform:scaleX(1)rotateY(0)}}.todo-list{background:var(--card-bg);border:1px solid var(--paper-deep);border-radius:var(--radius);width:100%;padding:8px 14px}.todo-list-header{background:0 0;border:none;justify-content:space-between;width:100%;padding:4px 0;font-weight:600;display:flex}.todo-list-toggle{color:var(--ink-soft);font-size:13px;font-weight:400}.todo-list ul{flex-wrap:wrap;gap:6px 10px;max-height:30vh;padding-top:4px;display:flex;overflow-y:auto}.todo-list li{border:1px solid var(--paper-deep);border-radius:999px;align-items:center;gap:6px;padding:4px 10px;display:flex}.todo-check{width:16px;color:var(--success);font-weight:700}.todo-name{flex:1}.todo-done{color:var(--ink-soft)}.todo-complete-pulse{animation:.5s todo-complete-pulse}@keyframes todo-complete-pulse{0%{background:var(--accent-soft);transform:scale(1.04)}to{background:0 0;transform:scale(1)}}.todo-progress{font-variant-numeric:tabular-nums;color:var(--ink-soft);font-size:13px}.todo-mystery{color:var(--ink-soft);border-style:dashed;font-style:italic}.todo-mystery .todo-progress{font-style:normal}.todo-reveal-pulse{animation:.5s todo-reveal-pulse}@keyframes todo-reveal-pulse{0%{background:var(--accent-soft);transform:scale(1.04)}to{background:0 0;transform:scale(1)}}.modal-overlay{z-index:1000;background:#3b322673;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.modal{background:var(--paper);text-align:center;width:100%;max-width:320px;box-shadow:var(--shadow-lift);border-radius:16px;padding:28px 32px}.win-stars{color:var(--paper-deep);margin:12px 0;font-size:34px}.star-filled{color:var(--accent)}.win-breakdown{text-align:left;margin:12px 0 4px}.win-breakdown-title{color:var(--ink-soft);text-align:center;margin-bottom:8px;font-size:11px}.wb-row{border-radius:8px;grid-template-columns:auto 1fr auto;align-items:baseline;column-gap:8px;padding:6px 10px;display:grid}.wb-row+.wb-row{margin-top:4px}.wb-limiting{background:var(--accent-soft)}.wb-label{color:var(--ink-soft);font-size:12px}.wb-value{font-variant-numeric:tabular-nums;font-size:15px;font-weight:700}.wb-targets{color:var(--ink-soft);font-variant-numeric:tabular-nums;grid-column:1/-1;font-size:10px}.mini-stars{letter-spacing:2px;color:var(--paper-deep);font-size:13px}.mini-stars .star-filled{color:var(--accent)}.wb-hint{text-align:center;color:var(--wood-dark);margin:8px 0 0;font-size:12px;font-weight:600}.win-stats{grid-template-columns:1fr 1fr;gap:12px;margin:16px 0;display:grid}.win-stat-label{color:var(--ink-soft);font-size:12px;display:block}.win-stat-value{font-size:20px;font-weight:700;display:block}.win-actions{flex-direction:column;gap:8px;display:flex}.win-actions button{border:1px solid var(--paper-deep);background:var(--card-bg);border-radius:999px;padding:10px}.win-actions .primary{background:var(--accent);color:#fff;border:none;font-weight:600}.tutorial-modal{max-width:360px}.tutorial-icon{margin-bottom:6px;font-size:40px;line-height:1}.tutorial-body{color:var(--ink);text-align:left;margin:8px 0 4px;font-size:14px;line-height:1.7}.tutorial-dots{justify-content:center;gap:6px;margin:14px 0 16px;display:flex}.tutorial-dot{background:var(--paper-deep);border-radius:999px;width:7px;height:7px}.tutorial-dot-on{background:var(--accent)}.tutorial-actions{flex-direction:column;gap:10px;display:flex}.tutorial-actions .primary{background:var(--accent);color:#fff;border:none;border-radius:999px;padding:10px;font-weight:600}.tutorial-sub-actions{justify-content:center;gap:16px;display:flex}.tutorial-sub-actions button{color:var(--ink-soft);background:0 0;border:none;padding:4px 8px;font-size:13px}.tutorial-skip{text-decoration:underline}@media (width<=720px){.game-screen{--card-gap:6px;padding:8px 8px 20px}.table-row{flex-direction:column}.deck-waste{--card-w:clamp(40px, 16vw, 76px);order:-1}.table-area{align-items:flex-start}}.win-unlocks{background:var(--accent-soft);border-radius:10px;flex-direction:column;gap:6px;margin:4px 0 16px;padding:10px;display:flex}.win-unlock-row{color:var(--wood-dark);font-size:13px}.daily-streak{text-align:center;border-radius:var(--radius);background:var(--card-bg);border:1px solid var(--paper-deep);margin-bottom:12px;padding:10px;font-weight:600}.daily-note{color:var(--ink-soft);text-align:center;margin-top:16px;font-size:12px}.mission-group-title{margin:18px 0 8px;font-size:15px}.mission-list{flex-direction:column;gap:8px;display:flex}.mission-item{border-radius:var(--radius);background:var(--card-bg);border:1px solid var(--paper-deep);justify-content:space-between;align-items:center;gap:12px;padding:12px 14px;display:flex}.mission-info{flex-direction:column;gap:2px;display:flex}.mission-progress{color:var(--ink-soft);font-size:12px}.mission-claim{border:1px solid var(--paper-deep);background:var(--paper);color:var(--ink-soft);white-space:nowrap;border-radius:999px;padding:6px 14px}.mission-claim-ready{background:var(--accent);color:#fff;border:none;font-weight:600}.achievement-list{flex-direction:column;gap:8px;display:flex}.achievement-item{border-radius:var(--radius);background:var(--card-bg);border:1px solid var(--paper-deep);opacity:.6;align-items:center;gap:12px;padding:12px 14px;display:flex}.achievement-unlocked{opacity:1;border-color:var(--accent)}.achievement-icon{font-size:22px}.achievement-info{flex-direction:column;display:flex}.achievement-name{font-weight:600}.achievement-description{color:var(--ink-soft);font-size:12px}.settings-list{flex-direction:column;gap:8px;display:flex}.settings-row{border-radius:var(--radius);background:var(--card-bg);border:1px solid var(--paper-deep);justify-content:space-between;align-items:center;padding:12px 14px;display:flex}.settings-value{color:var(--ink-soft);font-size:13px}.settings-error{color:var(--danger,#c0392b)}.settings-toggle{border:1px solid var(--paper-deep);background:var(--paper);border-radius:999px;padding:6px 16px}
