:root{--bg: #FAF5EF;--card: #FFFDFA;--text: #3A2E26;--text2: #8A7867;--soft: #F3E9DF;--border: rgba(120, 90, 60, .16);--shadow: 0 14px 34px rgba(90, 60, 30, .14);--primary: #D96545;--primary-soft: #F9E2D8;--secondary: #3E7F7B;--secondary-soft: #DFECEA;--like: #3E9B6E;--nope: #D45B5B;--maybe: #D69A2E;--super: #3E7CC0;--girl: #C4703F;--boy: #4E7F9E}@media (prefers-color-scheme: dark){:root{--bg: #1B1714;--card: #2A241E;--text: #F4ECE3;--text2: #B3A493;--soft: #332B24;--border: rgba(255, 235, 210, .14);--shadow: 0 14px 34px rgba(0, 0, 0, .45);--primary: #E8825F;--primary-soft: #3E2C22;--secondary: #6FB3AD;--secondary-soft: #243532;--like: #57B583;--nope: #E07070;--maybe: #E7B455;--super: #6AA0DC;--girl: #E09A66;--boy: #7FAECB}}*{box-sizing:border-box}html,body{margin:0;height:100%}body{background:var(--bg);color:var(--text);font-family:Outfit,system-ui,sans-serif;-webkit-font-smoothing:antialiased}a{color:var(--secondary)}a:hover{color:var(--primary)}:focus-visible{outline:3px solid var(--secondary);outline-offset:2px;border-radius:8px}.app{max-width:430px;margin:0 auto;min-height:100dvh;display:flex;flex-direction:column;position:relative;overflow:hidden;padding-bottom:env(safe-area-inset-bottom)}.screen{flex:1;display:flex;flex-direction:column;padding:16px 22px 20px;animation:fadeUp .3s ease both}.hero{justify-content:center;align-items:center;text-align:center}.logo{width:96px;height:96px;border-radius:50%;background:var(--primary-soft);color:var(--primary);display:flex;align-items:center;justify-content:center;font-size:44px;box-shadow:var(--shadow)}.hero-title{font-size:40px;font-weight:700;margin:24px 0 8px;letter-spacing:-.5px}.tagline{margin:0 0 40px;font-size:17px;line-height:1.5;color:var(--text2);max-width:280px;text-wrap:pretty}.slogan{margin:0 0 14px;font-size:12px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--primary)}.matches-slogan{margin:-4px 0 12px}.stack{display:flex;flex-direction:column;gap:12px;width:100%;max-width:300px}.btn{min-height:54px;border:none;border-radius:16px;font:inherit;font-size:17px;font-weight:600;padding:0 20px;cursor:pointer;transition:transform .12s ease}.btn:active{transform:scale(.97)}.btn:disabled{opacity:.6;cursor:default}.btn-primary{background:var(--primary);color:#fff;box-shadow:var(--shadow)}.btn-ghost{background:var(--card);color:var(--text);border:2px solid var(--border)}.form h2{font-size:28px;font-weight:700;margin:8px 0 24px}.form label,.field-label{font-size:14px;font-weight:600;color:var(--text2);margin-bottom:8px;display:block}.input{width:100%;min-height:52px;border:2px solid var(--border);border-radius:14px;background:var(--card);color:var(--text);font:inherit;font-size:17px;padding:0 16px;margin-bottom:22px}.input-code{font-size:18px;font-weight:600;letter-spacing:2px;text-transform:uppercase}.select{cursor:pointer;-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}.range-row{display:flex;align-items:center;gap:10px;margin-bottom:22px}.range-row .select{margin-bottom:0;flex:1;min-width:0}.range-dash{color:var(--text2);font-weight:700}.settings-group+.settings-group{border-top:1px solid var(--border)}.group-header{display:flex;align-items:center;gap:10px;width:100%;background:none;border:none;cursor:pointer;text-align:left;padding:16px 2px;min-height:44px;color:var(--text)}.group-title{font-size:12px;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:var(--text2);margin:0;flex:none}.group-summary{flex:1;min-width:0;text-align:right;font-size:13.5px;color:var(--text2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.group-chevron{flex:none;color:var(--text2);font-size:12px}.group-body{padding:2px 2px 18px}.era-card{background:var(--soft);border-radius:16px;padding:14px 14px 16px;margin-bottom:22px}.era-card>*:last-child{margin-bottom:0}.pick-sub{margin:-4px 0 18px}.pick-list{display:flex;flex-direction:column;gap:10px;margin-bottom:22px}.pick-row{display:flex;gap:8px}.pick-person{flex:1;min-height:54px;text-align:left;padding:0 18px;border:2px solid var(--border);border-radius:14px;background:var(--card);color:var(--text);font:inherit;font-size:16px;cursor:pointer}.pick-person strong{font-weight:700}.pick-remove{flex:none;width:54px;border-radius:14px;border:2px solid var(--border);background:var(--card);color:var(--text2);font-size:16px;cursor:pointer}.pick-new-label{margin-top:4px}.seg-row{display:flex;gap:8px;margin-bottom:30px}.seg{flex:1;min-height:48px;border:2px solid var(--border);border-radius:14px;background:var(--card);color:var(--text);font:inherit;font-size:15px;font-weight:600;cursor:pointer}.seg[aria-checked=true]{border-color:var(--primary);background:var(--primary-soft)}.toggle-row{display:flex;align-items:center;gap:12px;background:var(--card);border:1px solid var(--border);border-radius:16px;padding:12px 16px;margin:4px 0 20px}.toggle-text{flex:1;display:flex;flex-direction:column;gap:2px}.toggle-name{font-size:15px;font-weight:600}.toggle-desc{font-size:12.5px;color:var(--text2)}.switch{flex:none;width:52px;height:30px;border-radius:999px;border:none;background:var(--soft);cursor:pointer;padding:0;position:relative;transition:background .2s ease}.switch.on{background:var(--super)}.switch-knob{position:absolute;top:3px;left:3px;width:24px;height:24px;border-radius:50%;background:#fff;box-shadow:0 1px 3px #0000004d;transition:transform .2s ease}.switch.on .switch-knob{transform:translate(22px)}.back{align-self:flex-start;min-width:44px;min-height:44px;border:none;background:none;color:var(--text2);font-size:22px;cursor:pointer;padding:8px}.error{color:var(--nope);font-size:14px;margin:0 0 16px}.muted{color:var(--text2);font-size:15px;line-height:1.5;text-wrap:pretty}.topbar{display:flex;align-items:center;gap:8px}.topbar h2{font-size:24px;font-weight:700;margin:0}.spacer{flex:1}.code-pill{display:flex;align-items:center;gap:6px;min-height:44px;border:2px solid var(--border);border-radius:999px;background:var(--card);color:var(--text);font:inherit;font-size:14px;font-weight:700;letter-spacing:1px;padding:0 14px;cursor:pointer}.code-pill span{font-weight:500;color:var(--text2);letter-spacing:0}.match-badge{display:flex;align-items:center;gap:6px;min-height:44px;border:none;border-radius:999px;background:var(--primary-soft);color:var(--primary);font:inherit;font-size:15px;font-weight:700;padding:0 16px;cursor:pointer}.icon-btn{min-width:44px;min-height:44px;border-radius:999px;border:2px solid var(--border);background:var(--card);color:var(--text2);font-size:19px;cursor:pointer;margin-right:8px}.sheet-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:20;background:#00000073;display:flex;align-items:flex-end;justify-content:center;animation:burstBg .2s ease both}.sheet{width:100%;max-width:430px;background:var(--bg);color:var(--text);border-radius:24px 24px 0 0;padding:20px 22px calc(24px + env(safe-area-inset-bottom));max-height:92dvh;overflow-y:auto;box-shadow:0 -12px 40px #0000004d;animation:sheetUp .25s cubic-bezier(.2,.9,.3,1) both}.sheet-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px}.sheet-head h2{font-size:22px;font-weight:700;margin:0}.sheet-note{font-size:13px;margin:0 0 16px}@keyframes sheetUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}.bars{display:flex;flex-direction:column;gap:6px;margin:14px 0 4px}.bar-row{display:flex;align-items:center;gap:10px}.bar-label{font-size:12px;font-weight:600;color:var(--text2);width:64px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bar{flex:1;height:6px;border-radius:3px;background:var(--soft);overflow:hidden}.bar-fill{height:100%;border-radius:3px;background:var(--primary);transition:width .3s ease}.bar-fill.partner{background:var(--secondary)}.bar-num{font-size:12px;color:var(--text2);width:44px;text-align:right}.banner{display:flex;align-items:center;gap:10px;background:var(--secondary-soft);border-radius:16px;padding:12px 14px;margin-top:12px}.banner p{flex:1;margin:0;font-size:13.5px;line-height:1.4}.banner strong{letter-spacing:1px}.banner-share{min-height:40px;border:none;border-radius:12px;background:var(--secondary);color:#fff;font:inherit;font-size:14px;font-weight:600;padding:0 14px;cursor:pointer}.banner-close{min-width:40px;min-height:40px;border:none;background:none;color:var(--text2);font-size:18px;cursor:pointer}.deck{flex:1;position:relative;margin:16px 0;min-height:300px}.card{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--card);border:1px solid var(--border);border-radius:28px;box-shadow:var(--shadow);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;touch-action:none;cursor:grab;user-select:none;-webkit-user-select:none;will-change:transform}.card.ghost{transform:scale(.94) translateY(14px);opacity:.7}.ghost-name{color:var(--text2);opacity:.5;font-weight:600}.chip{display:flex;align-items:center;gap:7px;background:var(--soft);border-radius:999px;padding:6px 14px;font-size:13px;font-weight:600;color:var(--text2)}.dot{width:9px;height:9px;border-radius:50%;display:inline-block}.dot.girl{background:var(--girl)}.dot.boy{background:var(--boy)}.card-name{font-size:clamp(44px,13vw,62px);font-weight:700;letter-spacing:-.5px;line-height:1.1}.card-count{font-size:13px;color:var(--text2);margin-top:-4px}.stamp{position:absolute;top:26px;border:4px solid;border-radius:12px;padding:4px 14px;font-size:24px;font-weight:800;letter-spacing:2px;opacity:0}.stamp.like{left:22px;color:var(--like);border-color:var(--like);transform:rotate(-14deg)}.stamp.nope{right:22px;color:var(--nope);border-color:var(--nope);transform:rotate(14deg)}.stamp.maybe{left:50%;top:22px;transform:translate(-50%) rotate(-3deg);color:var(--maybe);border-color:var(--maybe)}.stamp.super{left:50%;top:22px;transform:translate(-50%) rotate(-3deg);color:var(--super);border-color:var(--super)}.deck-state{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:10px;padding:20px}.done h3{font-size:26px;font-weight:700;margin:12px 0 0}.done .muted{max-width:260px}.done-badge,.empty-badge{width:76px;height:76px;border-radius:50%;background:var(--primary-soft);color:var(--primary);display:flex;align-items:center;justify-content:center;font-size:34px}.empty-badge{background:var(--soft);color:var(--text2);font-size:30px}.actions{display:flex;justify-content:center;align-items:center;gap:14px}.round{width:56px;height:56px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:22px;cursor:pointer;box-shadow:var(--shadow);background:var(--card);border:2px solid var(--border);transition:transform .12s ease;flex:none}.round:active{transform:scale(.9)}.round:disabled{opacity:.4;cursor:default}.round.undo{color:var(--text2);font-size:24px}.round.no{color:var(--nope);width:64px;height:64px;font-size:26px}.round.sup{color:var(--super)}.round.yes{background:var(--like);border:none;color:#fff;width:64px;height:64px;font-size:28px}.round.maybe{color:var(--maybe);font-weight:700}.hint{text-align:center;font-size:12.5px;color:var(--text2);margin:14px 0 0}.plist{display:flex;gap:10px;margin:16px 0 20px}.pcard{flex:1;background:var(--card);border:1px solid var(--border);border-radius:16px;padding:12px 14px;display:flex;flex-direction:column;gap:6px}.pname{font-size:14px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pnum{font-size:12px;color:var(--text2)}.empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:10px;padding:20px}.empty h3{margin:8px 0 0;font-size:20px;font-weight:700}.empty .muted{max-width:250px;font-size:14.5px}.mlist{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}.mrow{display:flex;align-items:center;gap:14px;background:var(--card);border:1px solid var(--border);border-radius:18px;padding:16px 18px;box-shadow:var(--shadow);animation:fadeUp .3s ease both}.mrow .dot{width:11px;height:11px}.mname{flex:1;font-size:20px;font-weight:600}.mgender{font-size:13px;color:var(--text2)}.mheart{color:var(--primary);font-size:18px}.mrow.super{border-color:color-mix(in oklab,var(--super) 55%,var(--border));background:color-mix(in oklab,var(--super) 8%,var(--card))}.mrow.super .mgender{color:var(--super);font-weight:600}.mrow.super .mheart{color:var(--super)}.mrow.maybe{border-color:color-mix(in oklab,var(--maybe) 50%,var(--border));background:color-mix(in oklab,var(--maybe) 8%,var(--card))}.mrow.maybe .mgender{color:var(--maybe);font-weight:600}.mrow.maybe .mheart{color:var(--maybe);font-weight:700}.maybe-section{margin-top:26px}.maybe-title{font-size:18px;font-weight:700;margin:0}.maybe-sub{font-size:13.5px;margin:4px 0 12px}.maybe-row{padding:12px 14px;gap:10px}.mini{width:40px;height:40px;border-radius:50%;flex:none;display:flex;align-items:center;justify-content:center;font-size:17px;cursor:pointer;border:2px solid var(--border);background:var(--card);transition:transform .12s ease}.mini:active{transform:scale(.88)}.mini.no{color:var(--nope)}.mini.yes{background:var(--like);border:none;color:#fff}.leave{margin:24px auto 8px;border:none;background:none;color:var(--text2);font:inherit;font-size:14px;text-decoration:underline;cursor:pointer;min-height:44px;padding:0 12px}.burst{position:absolute;top:0;right:0;bottom:0;left:0;z-index:10;pointer-events:none;background:color-mix(in oklab,var(--bg) 78%,transparent);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;animation:burstBg .2s ease both}.burst-heart{font-size:76px;color:var(--primary);animation:burstHeart .5s cubic-bezier(.2,1.6,.4,1) both}.burst-label{font-size:15px;font-weight:600;color:var(--text2);letter-spacing:1px;text-transform:uppercase}.burst-name{font-size:36px;font-weight:700}.burst-mini{position:absolute;color:var(--primary);animation:floatUp 1.3s ease-out both}.burst.super .burst-heart,.burst.super .burst-mini,.burst.super .burst-label{color:var(--super)}.burst.maybe .burst-heart,.burst.maybe .burst-mini,.burst.maybe .burst-label{color:var(--maybe)}.bm1{font-size:22px;margin-left:-90px}.bm2{font-size:16px;margin-left:80px;color:var(--secondary);animation-delay:.15s}.bm3{font-size:18px;margin-left:20px;margin-top:40px;animation-delay:.25s}@keyframes fadeUp{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}@keyframes burstBg{0%{opacity:0}to{opacity:1}}@keyframes burstHeart{0%{transform:scale(.3);opacity:0}40%{transform:scale(1.15);opacity:1}60%{transform:scale(.96)}to{transform:scale(1)}}@keyframes floatUp{0%{transform:translateY(0) scale(.6);opacity:0}25%{opacity:1}to{transform:translateY(-130px) scale(1.1);opacity:0}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}
