*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--navy:#1e3a5f;--navy-dark:#152b47;--gold:#c8922a;--cream:#f9f7f4;--text:#1c1c1e;--text-2:#555;--text-3:#888;--border:#e0dbd4;--radius:10px;--shadow:0 1px 4px #00000014;font-family:-apple-system,PingFang TC,Noto Sans TC,sans-serif}body{background:var(--cream);color:var(--text);line-height:1.6}#app{min-height:100dvh}.splash{min-height:100dvh;color:var(--text-3);justify-content:center;align-items:center;font-size:.9rem;display:flex}.page{max-width:640px;margin:0 auto;padding:1.5rem 1rem 5rem}.page-header{justify-content:space-between;align-items:center;margin-bottom:1.5rem;display:flex}.page-title{color:var(--navy);font-size:1.4rem;font-weight:700}.back-btn{cursor:pointer;color:var(--text-3);background:0 0;border:none;padding:.25rem .5rem;font-size:.85rem}.back-btn:hover{color:var(--text)}.card{border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);background:#fff;margin-bottom:.75rem;padding:1rem 1.25rem}.card-title{margin-bottom:.25rem;font-size:1rem;font-weight:600}.card-sub{color:var(--text-3);font-size:.8rem}.btn{cursor:pointer;border:none;border-radius:8px;justify-content:center;align-items:center;gap:.4rem;padding:.7rem 1.25rem;font-size:.9rem;font-weight:600;transition:opacity .15s,transform .1s;display:inline-flex}.btn:active{transform:scale(.97)}.btn:disabled{opacity:.4;pointer-events:none}.btn-primary{background:var(--navy);color:#fff}.btn-primary:hover{background:var(--navy-dark)}.btn-outline{border:1.5px solid var(--navy);color:var(--navy);background:0 0}.btn-outline:hover{background:#eef2f7}.btn-gold{background:var(--gold);color:#fff}.btn-danger{color:#fff;background:#dc2626}.btn-sm{padding:.4rem .9rem;font-size:.8rem}.btn-full{width:100%}.form-group{margin-bottom:1rem}label{color:var(--text-2);margin-bottom:.35rem;font-size:.8rem;font-weight:600;display:block}input[type=text],input[type=number],input[type=date],select,textarea{border:1.5px solid var(--border);width:100%;color:var(--text);background:#fff;border-radius:8px;outline:none;padding:.65rem .85rem;font-size:.95rem;transition:border-color .15s}input:focus,select:focus,textarea:focus{border-color:var(--navy)}.input-row{grid-template-columns:1fr 1fr;gap:.75rem;display:grid}.progress-ring-wrap{flex-direction:column;align-items:center;gap:.4rem;display:flex}.progress-ring{transform:rotate(-90deg)}.progress-ring-bg{fill:none;stroke:var(--border)}.progress-ring-fill{fill:none;stroke:var(--navy);stroke-linecap:round;transition:stroke-dashoffset .6s}.schedule-day{border-bottom:1px solid var(--border);padding:.6rem 0}.schedule-day:last-child{border-bottom:none}.day-label{color:var(--navy);font-size:.8rem;font-weight:700}.day-text{color:var(--text-2);font-size:.9rem}.verse{border-bottom:1px solid #f0ede8;gap:.6rem;padding:.45rem 0;display:flex}.verse-num{color:var(--text-3);text-align:right;min-width:1.6rem;margin-top:.2rem;font-size:.72rem}.verse-text{font-size:1.05rem;line-height:1.75}.chapter-title{color:var(--navy);margin:1.25rem 0 .5rem;font-size:1rem;font-weight:700}.goliath-boss{text-align:center;margin:.25rem 0;font-size:3rem;transition:transform .4s,filter .4s}.goliath-wounded{transform:rotate(-6deg)}.goliath-staggering{animation:1.4s ease-in-out infinite goliath-shake}.goliath-down{filter:grayscale();transform:rotate(90deg)}@keyframes goliath-shake{0%,to{transform:rotate(-3deg)}50%{transform:rotate(3deg)}}.goliath-hp-bar{background:var(--border);border-radius:99px;height:.9rem;overflow:hidden}.goliath-hp-fill{border-radius:99px;height:100%;transition:width .6s}.goliath-hp-standing{background:#dc2626}.goliath-hp-wounded{background:#ea580c}.goliath-hp-staggering{background:#eab308}.goliath-hp-down{background:var(--border)}.goliath-hp-label{color:var(--text-3);text-align:center;margin-top:.4rem;font-size:.78rem}.goliath-victory{text-align:center;color:var(--gold);margin-top:.5rem;font-size:.95rem;font-weight:700}.dex-grid{grid-template-columns:repeat(6,1fr);gap:.4rem;margin-top:.6rem;display:grid}.dex-cell{aspect-ratio:1;cursor:pointer;border:2px solid var(--border);background:#fff;border-radius:8px;flex-direction:column;justify-content:center;align-items:center;gap:.1rem;display:flex}.dex-abbr{font-size:.8rem;font-weight:700}.dex-frac{color:var(--text-3);font-size:.6rem}.dex-out{opacity:.25;border-style:dashed}.dex-locked{color:var(--text-3);background:#f0ede8}.dex-locked .dex-abbr{opacity:.4}.dex-progress{border-color:var(--text-3)}.dex-collected.dex-common{background:#f3f4f6;border-color:#9ca3af}.dex-collected.dex-rare{background:#eff6ff;border-color:#3b82f6}.dex-collected.dex-epic{background:#faf5ff;border-color:#a855f7}.dex-collected.dex-legendary{border-color:var(--gold);background:#fffbeb}.dex-collected .dex-abbr{font-weight:800}.dex-modal-backdrop{z-index:1000;cursor:pointer;background:#1c1c1eb8;justify-content:center;align-items:center;padding:1rem;animation:.2s unlock-fade-in;display:flex;position:fixed;inset:0}.dex-modal-card{text-align:center;background:#fff;border-radius:16px;width:100%;max-width:280px;padding:1.4rem;animation:.35s cubic-bezier(.34,1.56,.64,1) unlock-pop}.dex-modal-art{aspect-ratio:3/4;border-radius:12px;justify-content:center;align-items:center;margin-bottom:.8rem;display:flex;position:relative;overflow:hidden}.dex-modal-emoji{opacity:.5;filter:grayscale(.3)brightness(1.6);font-size:4rem}.dex-modal-art img{object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.dex-modal-name{color:var(--navy);font-size:1.05rem;font-weight:800}.dex-modal-card .badge{margin-top:.4rem}.dex-badge-common{color:#4b5563;background:#f3f4f6}.dex-badge-rare{color:#1d4ed8;background:#eff6ff}.dex-badge-epic{color:#7e22ce;background:#faf5ff}.dex-badge-legendary{color:#92400e;background:#fffbeb}.dex-modal-progress-bar{background:var(--border);border-radius:99px;height:.5rem;margin-top:.8rem;overflow:hidden}.dex-modal-progress-fill{background:var(--navy);border-radius:99px;height:100%}.dex-modal-progress-text{color:var(--text-3);margin-top:.4rem;font-size:.75rem}.badge-grid{grid-template-columns:repeat(4,1fr);gap:.6rem;margin-top:.6rem;display:grid}.badge-cell{text-align:center;flex-direction:column;align-items:center;gap:.2rem;padding:.5rem .3rem;display:flex}.badge-cell-emoji{font-size:1.6rem}.badge-cell-name{font-size:.68rem;font-weight:600}.badge-cell-desc{color:var(--text-3);font-size:.6rem;line-height:1.3}.badge-locked{filter:grayscale();opacity:.45}.unlock-backdrop{z-index:1000;cursor:pointer;background:#1c1c1eb8;justify-content:center;align-items:center;animation:.25s unlock-fade-in;display:flex;position:fixed;inset:0}@keyframes unlock-fade-in{0%{opacity:0}to{opacity:1}}.unlock-card{text-align:center;background:#fff;border-radius:16px;max-width:320px;padding:2.2rem 2rem;animation:.4s cubic-bezier(.34,1.56,.64,1) unlock-pop}@keyframes unlock-pop{0%{opacity:0;transform:scale(.6)rotateY(90deg)}to{opacity:1;transform:scale(1)rotateY(0)}}.unlock-emoji{margin-bottom:.6rem;font-size:3.2rem}.unlock-title{color:var(--navy);font-size:1.15rem;font-weight:800}.unlock-subtitle{color:var(--text-2);margin-top:.4rem;font-size:.85rem}.unlock-hint{color:var(--text-3);margin-top:1.2rem;font-size:.7rem}.badge{border-radius:99px;padding:.15rem .55rem;font-size:.72rem;font-weight:600;display:inline-block}.badge-green{color:#15803d;background:#dcfce7}.badge-yellow{color:#854d0e;background:#fef9c3}.badge-red{color:#b91c1c;background:#fee2e2}.checkin-btn{background:var(--gold);color:#fff;cursor:pointer;border:none;border-radius:99px;padding:.9rem 1.6rem;font-size:1rem;font-weight:700;transition:transform .15s;position:fixed;bottom:1.5rem;right:1.25rem;box-shadow:0 4px 16px #c8922a59}.checkin-btn:active{transform:scale(.95)}.checkin-btn.done{background:#16a34a}.toast{color:#fff;pointer-events:none;opacity:0;background:#1c1c1e;border-radius:99px;padding:.65rem 1.25rem;font-size:.85rem;transition:opacity .25s;position:fixed;bottom:5rem;left:50%;transform:translate(-50%)}.toast.show{opacity:1}.member-row{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:.6rem 0;display:flex}.member-row:last-child{border-bottom:none}@media (width<=480px){.input-row{grid-template-columns:1fr}}
