@import url("https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Playfair+Display:ital,wght@0,600;1,600&display=swap");:root{font-family:DM Sans,sans-serif;color:#332823;background:#fffaf5;font-synthesis:none;--rose:#b85c5d;--wine:#803f45;--cream:#fffaf5;--ink:#332823}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;background:var(--cream)}button,input,textarea{font:inherit}.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}button{cursor:pointer}.shell{width:min(1120px,calc(100% - 48px));margin-inline:auto}.nav-wrap{position:-webkit-sticky;position:sticky;top:0;z-index:20;border-bottom:1px solid #eadfd5;background:rgba(255,250,245,.9);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.nav{height:76px;justify-content:space-between}.brand,.nav{display:flex;align-items:center}.brand{gap:11px;color:var(--ink);border:0;background:none;font-family:Playfair Display;font-size:20px}.brand span{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;color:#fff;background:var(--wine);font-style:italic}.nav-links{display:flex;gap:5px;padding:4px;background:#f5ede5;border-radius:99px}.love-note-link,.nav-links button{border:0;background:transparent;color:#806e64;padding:9px 15px;border-radius:99px;display:flex;align-items:center;gap:7px}.nav-links button.active{background:#fff;color:var(--wine);box-shadow:0 2px 8px #4e2c1d12}.love-note-link{color:var(--wine);border:1px solid #e2cfc5}.hero{min-height:650px;display:grid;grid-template-columns:1.05fr .95fr;align-items:center;grid-gap:70px;gap:70px;padding-block:76px}.eyebrow,.section-kicker{letter-spacing:.13em;text-transform:uppercase;color:var(--rose);font-weight:700;font-size:12px}.eyebrow{display:flex;align-items:center;gap:8px}h1,h2,h3,p{margin-top:0}.hero h1{font:600 clamp(54px,7vw,88px)/.98 Playfair Display;letter-spacing:-.045em;margin:22px 0}.hero h1 em{color:var(--rose);display:block}.lead{color:#76675e;font-size:18px;line-height:1.75;max-width:600px}.hero-actions{display:flex;gap:12px;margin:34px 0}.primary,.secondary{border:0;border-radius:4px;padding:14px 22px;font-weight:700;display:inline-flex;align-items:center;justify-content:center;gap:10px}.primary{color:#fff;background:var(--wine);box-shadow:0 8px 24px #803f4530}.primary:hover{background:#6c3439;transform:translateY(-1px)}.secondary{color:var(--wine);background:transparent;border:1px solid #d9c8bd}.promise{display:flex;gap:13px;align-items:center;padding-top:24px;border-top:1px solid #e9ddd3;color:var(--rose);max-width:520px}.promise span{display:flex;flex-direction:column;color:var(--ink);font-size:13px}.promise small{color:#8a7a71;margin-top:3px}.hero-art{height:480px;position:relative;display:grid;place-items:center;background:radial-gradient(circle,#ead0c3 0 2px,transparent 2px) 0 0/25px 25px}.hero-art:before{content:"";position:absolute;width:370px;height:370px;border-radius:50%;background:#f4ded2}.letter{position:relative;z-index:2;width:280px;height:330px;background:#fffdfa;padding:44px 34px;transform:rotate(-4deg);box-shadow:0 24px 55px #704b3430;border:1px solid #efe4db}.letter:after{content:"";position:absolute;inset:11px;border:1px solid #eadbd0;pointer-events:none}.letter span{color:#a98d7e;font:italic 15px Playfair Display}.letter h2{margin:57px 0 35px;color:var(--wine);font:italic 600 39px/1.2 Playfair Display}.letter p{font:italic 14px Playfair Display;color:#9a776b}.letter-stamp{position:absolute;right:27px;top:25px;border:1px solid #c68b83;color:var(--rose);width:38px;height:43px;display:grid;place-items:center;font:italic 22px Playfair Display}.flower,.orbit{position:absolute;z-index:3;color:var(--rose);font-size:37px}.f1{bottom:47px;left:41px}.f2{bottom:25px;left:79px;color:#d8a894}.f3{top:67px;right:39px}.orbit-one{top:28px;left:54px;font-size:22px}.orbit-two{bottom:64px;right:35px;font-size:28px}.moments{padding:90px 0 110px}.moments>div:first-child{display:flex;justify-content:space-between;align-items:end;margin-bottom:34px}.game-heading h1,.moments h2,.notes-section h2{font:600 42px Playfair Display;margin:8px 0}.moment-grid{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid #dfd1c7;border-bottom:1px solid #dfd1c7}.moment-grid article{padding:34px 35px;border-right:1px solid #dfd1c7;min-height:220px}.moment-grid article:first-child{padding-left:0}.moment-grid article:last-child{border:0}.moment-grid article>span{color:#c6aaa0;font:italic 16px Playfair Display}.moment-grid h3{font:600 23px Playfair Display;margin:20px 0 10px}.moment-grid p{color:#837269;line-height:1.6;min-height:52px;font-size:14px}.moment-grid button{border:0;background:none;color:var(--wine);padding:0;font-weight:700;display:flex;gap:7px;align-items:center}.soon{font-size:10px;letter-spacing:.12em;color:#a18578;margin-top:15px}.notes-section{background:#f2e5dc;padding:90px 0}.note-layout{display:grid;grid-template-columns:1fr 1fr;grid-gap:100px;gap:100px;align-items:center}.note-layout>div>p{color:#806e64;line-height:1.7;max-width:420px}.note-card{background:#fffdf9;padding:30px;box-shadow:0 17px 45px #6945331c}.note-card label{font:italic 22px Playfair Display;color:var(--wine)}.note-card textarea{display:block;border:0;border-bottom:1px solid #ead9cf;resize:none;width:100%;height:130px;margin:15px 0;outline:none;background:repeating-linear-gradient(transparent,transparent 31px,#efe4dc 32px);line-height:32px;color:var(--ink)}.note-card>div{display:flex;align-items:center;justify-content:space-between}.note-card small{color:#aa978c}.note-card button{border:0;background:var(--wine);color:#fff;padding:11px 16px;display:flex;gap:7px;align-items:center}.note-card button:disabled{opacity:.45;cursor:not-allowed}.game-page{padding:64px 0 90px}.game-heading{text-align:center}.game-heading h1{font-size:50px;margin:12px 0 7px}.game-heading p{color:#88766d}.online-panel{max-width:850px;margin:35px auto 0;padding:20px 22px;border:1px solid #dfd1c7;background:#fffdfa;display:flex;align-items:center;justify-content:space-between;gap:24px}.online-intro span{display:flex;align-items:center;gap:8px;font-size:11px;font-weight:700;letter-spacing:.1em;color:var(--wine)}.online-intro p{font-size:12px;color:#8e7c72;margin:6px 0 0}.room-actions,.room-status{display:flex;align-items:center;gap:10px;flex-shrink:0}.room-actions>span{font:italic 13px Playfair Display;color:#ae988c}.copy-code,.host-button,.join-control button{border:0;background:var(--wine);color:#fff;padding:10px 13px;display:flex;align-items:center;gap:7px;font-size:12px;font-weight:700}.join-control{display:flex;border:1px solid #dbc9bf}.join-control input{width:112px;border:0;outline:0;padding:9px 11px;background:#fff;letter-spacing:.13em;font-size:11px;text-transform:uppercase}.join-control button{border-radius:0}.room-status div{display:flex;flex-direction:column}.room-status small{font-size:8px;letter-spacing:.12em;color:#8d786d}.room-status strong{font:600 21px Playfair Display;letter-spacing:.13em;color:var(--wine)}.copy-code{background:#f1e2da;color:var(--wine)}.leave{border:0;background:none;color:#9d8178;font-size:11px;text-decoration:underline}.connection-error{width:100%;margin:8px 0 0;color:#a33f48;font-size:11px}.game-board{margin:18px auto 24px;max-width:850px;background:#f1e1d6;border:1px solid #e1cfc4;box-shadow:0 20px 50px #67391c18}.scorebar{height:86px;background:#fffdfa;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;text-align:center;border-bottom:1px solid #e1cfc4}.scorebar div{display:flex;flex-direction:column;gap:5px}.scorebar small{color:#9d887d;font-size:10px;letter-spacing:.13em}.scorebar strong{font:600 23px Playfair Display;color:var(--wine)}.heart-chip{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:#f2d8d1;color:var(--rose)}.table{min-height:380px;padding:38px;display:flex;justify-content:center;align-items:center;gap:70px;background:radial-gradient(circle at center,#f9eee7,#ecd7ca)}.player{text-align:center}.player>span{display:block;font-size:10px;letter-spacing:.15em;font-weight:700;color:#8c7569;margin-bottom:12px}.versus{font:italic 20px Playfair Display;color:#b29384}.playing-card{position:relative;width:164px;height:230px;border-radius:9px;background:#fffdfa;box-shadow:0 15px 25px #53342133;border:1px solid #e1d7d1}.playing-card.red{color:#b7464d}.playing-card.black{color:#292424}.corner{position:absolute;left:13px;top:10px;display:flex;flex-direction:column;font:700 24px/1 Playfair Display}.corner i{font-style:normal;font-size:21px}.corner.bottom{left:auto;top:auto;right:13px;bottom:10px;transform:rotate(180deg)}.suit{height:100%;display:grid;place-items:center;font-size:83px}.card-back{border:7px solid #fff;background:repeating-linear-gradient(45deg,#9b5055 0 5px,#864148 5px 10px);color:#fff;display:grid;place-items:center}.card-back:before{content:"";position:absolute;inset:8px;border:1px solid #e8c3bc}.card-back div{font-size:54px}.card-back span{position:absolute;font:700 10px/1.2 DM Sans;letter-spacing:.2em;text-align:center;color:#f5ded7;margin-top:75px}.result{text-align:center;color:#795f53;font:italic 16px Playfair Display;background:#fff9f4;padding:13px}.result.show{color:var(--wine);font-weight:600}.controls{background:#fffdfa;display:flex;align-items:end;justify-content:center;gap:34px;padding:24px;border-top:1px solid #e1cfc4}.bet label{display:block;font-size:10px;letter-spacing:.1em;color:#8c776d;margin-bottom:7px;text-transform:uppercase}.bet>div{display:flex;border:1px solid #dbc9bf}.bet button{border:0;background:#f8f0ea;width:36px;font-size:19px;color:var(--wine)}.bet-input-wrap{min-width:120px;text-align:center;padding:9px 8px;background:#fff;font-weight:700}.bet-input-wrap input{width:88px;border:0;outline:0;background:transparent;font-weight:700;color:var(--ink);-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.bet-input-wrap input::-webkit-inner-spin-button{-webkit-appearance:none;appearance:none}.deal{min-width:180px;border-radius:2px;padding:13px 20px}.balance{max-width:850px;margin:auto;border:1px solid #e5d8ce;padding:18px 24px;display:flex;align-items:center;justify-content:space-between;background:#fffdfa}.balance div{display:flex;flex-direction:column;gap:4px}.balance span{font-size:9px;letter-spacing:.15em;color:#9c887d}.balance strong{font:600 17px Playfair Display}.balance button{border:0;background:none;color:#8c7569;display:flex;gap:7px;align-items:center}.local-note{text-align:center;color:#a08d83;font-size:12px;margin-top:18px}footer{background:#302622;color:#e8dbd2;padding:27px 0}footer .shell{display:flex;align-items:center;gap:8px;font:600 17px Playfair Display}footer span{color:#d48787}footer small{margin-left:auto;font:400 11px DM Sans;color:#a8988f}.crash-page{min-height:100vh;display:grid;place-items:center;padding:30px;text-align:center;background:var(--cream)}.crash-page>div{max-width:520px;padding:55px 45px;border:1px solid #e4d4ca;background:#fffdfa;box-shadow:0 20px 55px #6945331c}.crash-page svg{color:var(--rose)}.crash-page h1{margin:20px 0 12px;font:600 45px Playfair Display;color:var(--wine)}.crash-page p{margin-bottom:28px;color:#806e64;line-height:1.7}@media(max-width:760px){.shell{width:min(100% - 32px,1120px)}.love-note-link{display:none}.nav{height:66px}.hero{grid-template-columns:1fr;padding-block:55px;gap:25px}.hero h1{font-size:55px}.hero-art{height:400px}.hero-art:before{width:310px;height:310px}.letter{width:245px;height:300px}.letter h2{font-size:34px;margin:45px 0 30px}.moment-grid{grid-template-columns:1fr}.moment-grid article,.moment-grid article:first-child{padding:28px 5px;border-right:0;border-bottom:1px solid #dfd1c7}.note-layout{grid-template-columns:1fr;gap:30px}.moments,.notes-section{padding:65px 0}.online-panel{align-items:stretch;flex-direction:column}.room-actions,.room-status{justify-content:space-between}.table{gap:16px;padding:30px 12px;min-height:320px}.playing-card{width:125px;height:180px}.suit{font-size:62px}.corner{font-size:19px}.controls{flex-direction:column;align-items:stretch;gap:16px}.bet>div{justify-content:space-between}.game-heading h1{font-size:42px}.scorebar strong{font-size:18px}.balance{align-items:flex-start;gap:15px}.balance button{font-size:0}.balance button svg{width:18px;height:18px}footer small{display:none}}@media(max-width:420px){.nav-links button{padding:8px 10px}.nav-links svg{display:none}.hero-actions{flex-direction:column}.hero-art{overflow:hidden}.room-actions{align-items:stretch;flex-direction:column}.room-actions>span{display:none}.join-control input{width:100%}.room-status{flex-wrap:wrap}.playing-card{width:110px;height:158px}.table{gap:10px}.versus{font-size:14px}.game-page{padding-top:45px}}.notes-page{padding:70px 0 100px;min-height:70vh}.notes-heading{text-align:center;max-width:650px;margin:0 auto 35px}.notes-heading h1{font:600 50px Playfair Display;margin:12px 0}.notes-heading p,.notes-status{color:#88766d}.note-composer{max-width:680px;margin:0 auto 55px;border:1px solid #eadbd2}.notes-status{text-align:center;padding:35px}.notes-status.error{color:#a33f48}.notes-grid{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:18px;gap:18px}.notes-grid article{min-height:190px;padding:25px;background:#fffdfa;border:1px solid #e5d6cc;box-shadow:0 10px 28px #69453310;display:flex;flex-direction:column}.notes-grid svg{color:var(--rose)}.notes-grid p{font:italic 18px/1.6 Playfair Display;white-space:pre-wrap;margin:18px 0;flex:1 1}.notes-grid time{font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:#9e897f}.recipient-picker{border:0;padding:0;margin:0 0 22px;display:flex;gap:8px;align-items:center}.recipient-picker legend{float:left;margin-right:7px;padding:8px 0;color:#8c776d;font-size:11px;text-transform:uppercase;letter-spacing:.08em}.recipient-picker button{border:1px solid #dfd1c7;background:#fff;color:#806e64;padding:8px 12px;border-radius:99px}.recipient-picker button.selected.her{background:#f7e2e4;border-color:#dbaeb4;color:#8d414b}.recipient-picker button.selected.him{background:#e3eaf0;border-color:#aabac8;color:#344e65}.notes-grid article.note-deborah{background:linear-gradient(145deg,#fffafb,#fff4f6);border-top:4px solid #d48c9b}.notes-grid article.note-brume{background:linear-gradient(145deg,#f9fcff,#edf3f7);border-top:4px solid #66829a}.note-top{display:flex;justify-content:space-between;align-items:center}.recipient-badge{font-size:10px;letter-spacing:.12em;font-weight:700;color:#8d6570}.note-brume .recipient-badge{color:#48677e}.note-actions{display:flex;gap:5px}.note-actions button{display:grid;place-items:center;padding:7px;border:0;border-radius:50%;background:#ffffffaa;color:#806e64}.note-actions button:hover{background:#fff;color:var(--wine)}.modal-backdrop{position:fixed;inset:0;z-index:50;background:#33282399;display:grid;place-items:center;padding:20px;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.code-modal{width:min(440px,100%);background:#fffdfa;padding:34px;box-shadow:0 25px 70px #21151055;text-align:center}.code-modal>span{font-size:30px;color:var(--rose)}.code-modal h2{font:600 28px Playfair Display;margin:10px 0}.code-modal p{color:#806e64;font-size:13px}.code-modal input,.code-modal textarea{width:100%;border:1px solid #dfd1c7;padding:12px;margin:8px 0;outline-color:var(--rose)}.code-modal textarea{height:110px;resize:vertical}.code-modal>small{display:block;color:#a33f48;margin:5px}.code-modal>div{display:flex;justify-content:flex-end;gap:8px;margin-top:15px}.code-modal button{border:1px solid #d9c8bd;background:#fff;padding:10px 15px}.code-modal button.confirm{background:var(--wine);color:#fff;border-color:var(--wine)}.code-modal button:disabled{opacity:.45}.online-setup{display:flex;flex-direction:column;align-items:flex-end;gap:9px}.player-picker{display:flex;gap:6px}.player-picker button,.return-room{border:1px solid #dbc9bf;background:#fff;color:#806e64;padding:7px 10px;font-size:11px}.player-picker button.selected{background:#f1e2da;color:var(--wine);border-color:#b97973;font-weight:700}.return-room{width:100%;background:#edf4ef;color:#49715a;border-color:#bed2c3;font-weight:700}.host-button:disabled,.join-control button:disabled{opacity:.45;cursor:not-allowed}@media(max-width:760px){.notes-grid{grid-template-columns:1fr}.notes-heading h1{font-size:40px}.notes-page{padding-top:50px}}.wager-controls{background:#fffdfa;padding:24px;display:grid;grid-template-columns:auto auto 1fr;align-items:end;grid-gap:24px;gap:24px;border-top:1px solid #e1cfc4}.stake-total{display:flex;flex-direction:column;min-width:130px}.raise-control label,.stake-total small{font-size:9px;letter-spacing:.12em;color:#9c887d;text-transform:uppercase}.stake-total strong{font:600 27px Playfair Display;color:var(--wine);margin:3px 0}.stake-total span{font-size:11px;color:#8c7569}.raise-control label{display:block;margin-bottom:7px}.raise-control>span{display:flex;align-items:center;border:1px solid #dbc9bf;background:#fff;padding:10px 12px;font-weight:700}.raise-control input{width:90px;border:0;outline:0;background:transparent;font-weight:700;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.wager-actions{display:flex;justify-content:flex-end;gap:8px}.wager-actions button{padding:12px 15px;border:1px solid #d9c8bd;background:#fff;color:var(--wine);font-weight:700}.wager-actions .raise{background:#f3e4db}.wager-actions .accept{border-color:var(--wine);color:#fff}.wager-actions button:disabled{opacity:.4;cursor:not-allowed}@media(max-width:760px){.wager-controls{grid-template-columns:1fr 1fr}.wager-actions{grid-column:1/-1;justify-content:stretch}.wager-actions button{flex:1 1}.wager-actions .accept{flex:1.6 1}}@media(max-width:480px){.wager-controls{grid-template-columns:1fr}.wager-actions{grid-column:auto;display:grid;grid-template-columns:1fr 1fr}.wager-actions .accept{grid-column:1/-1}.raise-control input{width:100%}}