:root{font-family:Inter,ui-rounded,SF Pro Rounded,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;color:#312018;background:#f7efe3;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100svh;background:#fbf5ea}button,input{font:inherit}button{cursor:pointer}.app{min-height:100svh;display:grid;place-items:start center;padding:max(20px,env(safe-area-inset-top)) 18px max(22px,env(safe-area-inset-bottom))}.app.wedding{background:linear-gradient(180deg,#ffffff4d,#fff0 26%),linear-gradient(135deg,#fbf5ea,#f5eadb 58%,#ecd9bf)}.app.party{overflow:hidden;background:#0c0e0e;color:#fff5e9}.party-screen{position:relative;isolation:isolate;width:min(100%,414px);min-height:min(900px,100svh);overflow:hidden;padding:27px 16px max(24px,env(safe-area-inset-bottom));color:#fff7ef;background:linear-gradient(180deg,#0a0c0c1a,#0a0c0cd1 32%,#0a0c0cf5),#0c0e0e;box-shadow:0 26px 80px #00000094}.party-screen:before{content:"";position:absolute;inset:0;z-index:-2;background:linear-gradient(180deg,#0c0e0e0f,#0c0e0e9e 46%,#0c0e0ef5),url(/assets/party-crowd-bg-DyptUept.png) center -128px / cover no-repeat;filter:saturate(1.05) contrast(1.05)}.party-screen:after{content:"";pointer-events:none;position:absolute;inset:0;z-index:-1;background:radial-gradient(circle at 24% 13%,rgba(255,114,98,.18),transparent 24%),radial-gradient(circle at 78% 18%,rgba(108,117,255,.12),transparent 22%),linear-gradient(180deg,#090b0b05 0,#090b0b8f 48%,#090b0bf0)}.party-header{display:grid;justify-items:center;gap:10px;min-height:48px;margin-bottom:18px;text-align:center}.party-couple{display:inline-flex;align-items:center;justify-content:center;width:min(100%,360px);min-width:0;gap:12px;color:#fff8ef;font-family:Georgia,Times New Roman,serif;font-size:clamp(23px,6vw,30px);font-weight:500;letter-spacing:0;line-height:1.08;text-wrap:balance;text-shadow:0 10px 26px rgba(0,0,0,.55)}.party-couple span{min-width:0;overflow-wrap:anywhere}.party-sprig{width:clamp(30px,8vw,42px);height:clamp(19px,5vw,26px);color:#f0bd63;flex:0 0 auto;filter:drop-shadow(0 8px 16px rgba(0,0,0,.34))}.party-sprig.mirrored{transform:scaleX(-1)}.party-title{display:grid;justify-items:center;gap:13px;margin:0 0 20px;text-align:center}.party-title h1{color:#fff9f2;font-size:clamp(48px,14vw,66px);line-height:.9;text-shadow:0 16px 42px rgba(0,0,0,.54)}.party-title span{width:62px;height:5px;border-radius:99px;background:linear-gradient(90deg,#ff6f66,#ff8a7e);box-shadow:0 0 20px #ff6f6670}.phone{width:min(100%,414px);min-height:min(844px,calc(100svh - 44px));position:relative;overflow:hidden;border-radius:32px;padding:22px 16px 18px;box-shadow:0 24px 72px #31201829}.phone>:not(.wedding-ornaments){position:relative;z-index:1}.phone:before{pointer-events:none;content:"";position:absolute;inset:12px;border-radius:26px;opacity:0}.wedding .phone{background:linear-gradient(180deg,#fffdf9e6,#fffaf4c7),#fffcf6db;border:1px solid rgba(120,95,66,.1);padding-bottom:48px}.wedding .phone:before{opacity:1;border:1px solid rgba(199,155,77,.3);box-shadow:inset 0 0 0 4px #ffffff70}.party .phone{background:linear-gradient(180deg,#231f1df5,#131817fa);border:1px solid rgba(255,245,233,.12);box-shadow:0 28px 90px #00000085}.wedding-ornaments{pointer-events:none;position:absolute;inset:0;z-index:0;color:#9a875c}.ornament{position:absolute;display:block}.ornament.top-left{top:34px;left:-3px;width:72px;opacity:.42;transform:rotate(-8deg)}.ornament.top-right{top:118px;right:-2px;width:58px;opacity:.34;transform:rotate(16deg) scaleX(-1)}.ornament.bottom-flourish{left:50%;bottom:10px;width:142px;color:#b88b3e;opacity:.72;transform:translate(-50%)}.loading-state{display:grid;place-items:center;align-content:center;gap:18px;text-align:center;font-weight:700}.loading-mark{width:42px;height:42px;border-radius:50%;border:3px solid rgba(190,92,89,.22);border-top-color:#b95654;animation:spin .9s linear infinite}.event-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:18px}.wedding .event-header{display:grid;justify-content:center;justify-items:center;align-items:center;gap:8px;padding-top:8px;text-align:center}.wedding .event-header>div{width:max-content;max-width:100%;justify-self:center}.event-date{margin:0 0 5px;color:#8a7666;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:0}.wedding .event-date{color:#b28a3e;font-size:12px;font-weight:760;letter-spacing:.18em}.party .event-date{color:#fff5e9a3}h1,h2,p{margin:0}h1{font-family:Georgia,Times New Roman,serif;font-size:clamp(34px,11vw,47px);font-weight:500;line-height:.94;color:#8f3f42}.party h1{color:#fff5e9}.table-chip,.section-title span{border-radius:999px;padding:7px 10px;font-size:11px;font-weight:850;white-space:nowrap}.table-chip{color:#61412e;background:#90a77b2e;border:1px solid rgba(90,111,74,.16)}.wedding .table-chip{grid-row:1;color:#6b542e;background:#ffffffb8;border-color:#b28a3e3d}.party .table-chip{color:#f3bd66;background:#1414128a;border-color:#d5a24e94;box-shadow:inset 0 0 0 1px #fff5e90a,0 12px 26px #00000040}.request-panel,.top-picks,.now-playing{border-radius:26px;padding:15px}.wedding .request-panel,.wedding .top-picks,.wedding .now-playing{background:linear-gradient(145deg,#ffffffd1,#fff7f0b8);border:1px solid rgba(196,174,148,.3);box-shadow:0 18px 44px #452b1b0e,inset 0 1px #ffffff9e}.party .request-panel,.party .top-picks,.party .now-playing{background:#fff5e912;border:1px solid rgba(255,245,233,.11)}.request-panel{display:grid;gap:11px}.wedding .request-panel{margin-top:10px}.request-panel .section-title h2{max-width:100%;white-space:nowrap}.section-title{display:flex;justify-content:space-between;align-items:center;gap:14px}.wedding .section-title{align-items:flex-start}.section-title h2{max-width:58%;font-size:21px;line-height:1.04;font-weight:850;white-space:nowrap}.wedding .section-title h2{max-width:72%;font-family:Georgia,Times New Roman,serif;color:#241d1b;font-size:28px;font-weight:500;letter-spacing:0}.section-title.compact h2{font-size:20px}.wedding .section-title.compact{align-items:center}.wedding .section-title.compact h2{font-family:Inter,ui-rounded,SF Pro Rounded,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;color:#34231b;font-size:20px;font-weight:850}.top-heading{display:inline-flex;align-items:center;min-width:0;gap:8px;white-space:nowrap}.trend-icon{width:21px;height:21px;color:#b88b3e;flex:0 0 auto}.mode-chip{display:inline-flex;align-items:center;gap:6px}.shield-icon{width:15px;height:15px;flex:0 0 auto}.section-title span{color:#8f3f42;background:#db928621}.party .section-title span{color:#ffd6c9;background:#e9664f2e}.search-box,.name-box{display:flex;align-items:center;gap:11px;min-height:52px;border-radius:18px;padding:0 15px}.search-box{color:#8b7361}.wedding .search-box,.wedding .name-box{background:#fffcf7db;border:1px solid rgba(178,138,62,.22);box-shadow:inset 0 1px #ffffffb8}.party .search-box,.party .name-box{background:#ffffff14;border:1px solid rgba(255,255,255,.13);color:#fff5e9b3}.search-box input,.name-box input{width:100%;min-width:0;border:0;outline:0;background:transparent;color:inherit;font-size:16px;font-weight:700}.search-box input::placeholder,.name-box input::placeholder{color:currentColor;opacity:.68}.search-results{display:grid;gap:7px;max-height:188px;overflow:auto;padding:2px 3px 2px 0;overscroll-behavior:contain}.song-row,.selected-song,.top-row{display:grid;grid-template-columns:44px minmax(0,1fr) auto;align-items:center;gap:11px;width:100%;border:0;text-align:left;border-radius:18px;padding:8px}.song-row{color:inherit}.wedding .song-row,.wedding .selected-song,.wedding .top-row{background:#ffffffbd}.wedding .selected-song{border:1px solid rgba(178,138,62,.2);box-shadow:0 10px 28px #452b1b0f}.party .song-row,.party .selected-song,.party .top-row{background:#ffffff12}.song-row.selected{outline:2px solid rgba(138,156,113,.78)}.artwork{width:44px;height:44px;display:grid;place-items:center;flex:0 0 auto;border-radius:12px;object-fit:cover;background:linear-gradient(135deg,#e8b6aa,#dbc07f);color:#6c3a28;font-weight:900}.party .artwork.placeholder{background:linear-gradient(135deg,#eb684f,#2aa699);color:#fff5e9}.party-screen .artwork{background:radial-gradient(circle at 28% 22%,rgba(255,120,108,.42),transparent 31%),linear-gradient(135deg,#283532,#171a1a 56%,#3b2522);color:#fff5e9}strong{display:block;min-width:0;overflow:hidden;color:inherit;font-size:15px;font-weight:850;line-height:1.12;text-overflow:ellipsis;white-space:nowrap}small{display:block;min-width:0;overflow:hidden;color:#88705e;font-size:12px;font-weight:720;line-height:1.25;text-overflow:ellipsis;white-space:nowrap}.party small{color:#fff5e99e}.selected-song{grid-template-columns:44px minmax(0,1fr) 34px;min-height:62px}.clear-button{width:34px;height:34px;border:0;border-radius:50%;color:inherit;background:#825b471c;font-weight:900}.primary-button{min-height:54px;border:0;border-radius:999px;color:#fff;background:linear-gradient(135deg,#d27769,#964649);font-weight:900;font-size:16px;box-shadow:0 14px 30px #96464938}.party .primary-button{background:linear-gradient(135deg,#ed6f55,#2aa699);box-shadow:0 12px 30px #2aa6992b}.primary-button:disabled{cursor:not-allowed;opacity:.45;box-shadow:none}.top-picks{display:grid;gap:11px;margin-top:14px}.top-row{grid-template-columns:28px 48px minmax(0,1fr) auto;min-height:68px;padding:10px}.top-row.no-voting{grid-template-columns:28px 48px minmax(0,1fr)}.rank{color:#b88b3e;font-family:Georgia,Times New Roman,serif;font-size:25px;font-weight:500;line-height:1;text-align:center}.party .rank{color:#6ed0c7}.top-row button{display:inline-flex;align-items:center;gap:6px;min-width:58px;min-height:42px;justify-content:center;border:0;border-radius:999px;color:#5e3f2e;background:#90a77b2e;border:1px solid rgba(125,99,75,.11);font-weight:850}.top-row.featured button{color:#fff;background:linear-gradient(135deg,#ef7769,#ddada6);border-color:transparent}.party .top-row button{color:#fff5e9;background:#ed6f5538}.top-row button .heart{font-size:19px;line-height:1}.empty-list{display:grid;place-items:center;min-height:78px;border-radius:16px;color:#8b7361;background:#ffffff6b;font-size:14px;font-weight:800}.party .empty-list{color:#fff5e994;background:#ffffff0f}.party-now-playing,.party-search,.party-tabs,.party-list,.party-dock,.party-selected-song,.party-search-results{position:relative;border:1px solid rgba(255,255,255,.13);background:linear-gradient(135deg,#ffffff1b,#ffffff0b),#1416169e;box-shadow:inset 0 1px #ffffff14,0 20px 42px #0000004d;backdrop-filter:blur(18px) saturate(1.1);-webkit-backdrop-filter:blur(18px) saturate(1.1)}.party-now-playing{display:grid;grid-template-columns:92px minmax(0,1fr) 44px;align-items:center;gap:18px;min-height:126px;margin-bottom:14px;padding:14px;border-radius:24px}.party-now-playing .artwork,.party-now-playing .pulse-bars{width:92px;height:92px;border-radius:16px}.party-now-playing .pulse-bars{background:radial-gradient(circle at 28% 22%,rgba(255,255,255,.08),transparent 30%),linear-gradient(135deg,#2aa6996b,#183835c7)}.party-now-playing .pulse-bars i{background:#88e5dd}.party-now-playing small{color:#ff7c72;font-size:12px;font-weight:900;letter-spacing:.18em;text-transform:uppercase}.party-now-playing strong{margin-top:7px;color:#fffaf3;font-size:26px;font-weight:760;line-height:1.02;letter-spacing:0}.party-now-playing span:not(.pulse-bars):not(.party-eq){margin-top:7px;color:#fff7ef94;font-size:17px;font-weight:540}.party-eq{display:inline-flex;align-items:end;justify-content:center;gap:5px;color:#f5bd68}.party-eq i{width:4px;border-radius:99px;background:currentColor;box-shadow:0 0 14px #f5bd6838}.party-eq i:nth-child(1){height:14px}.party-eq i:nth-child(2){height:31px}.party-eq i:nth-child(3){height:22px}.party-eq i:nth-child(4){height:37px}.party-search{display:flex;align-items:center;gap:15px;min-height:72px;margin-bottom:12px;border-radius:22px;padding:0 21px;color:#ff756d}.party-search svg{width:27px;height:27px;flex:0 0 auto}.party-search input{width:100%;min-width:0;border:0;outline:0;color:#fffaf3;background:transparent;font-size:21px;font-weight:520}.party-search input::placeholder{color:#fff7ef8a}.party-search-results{display:grid;gap:1px;max-height:260px;overflow:auto;margin:-2px 0 12px;padding:8px;border-radius:22px}.party-result-row,.party-selected-song{display:grid;grid-template-columns:56px minmax(0,1fr) auto;align-items:center;gap:13px;width:100%;min-height:72px;border:0;border-radius:16px;padding:8px;color:#fffaf3;background:#ffffff0b;text-align:left}.party-result-row .artwork,.party-selected-song .artwork{width:56px;height:56px;border-radius:12px}.party-result-row strong,.party-selected-song strong{font-size:17px}.party-selected-song{margin-bottom:12px;border-color:#ff716642}.party-tabs{display:grid;grid-template-columns:1fr 1fr;overflow:hidden;min-height:64px;margin-bottom:12px;border-radius:24px;padding:0}.party-tabs button{position:relative;border:0;color:#fff7ef94;background:transparent;font-size:19px;font-weight:600}.party-tabs button+button{border-left:1px solid rgba(255,255,255,.1)}.party-tabs button.active{color:#ff756d;font-weight:850}.party-tabs button.active:after{content:"";position:absolute;left:16%;right:16%;bottom:0;height:4px;border-radius:99px;background:linear-gradient(90deg,#ff6f66,#ff8a7e);box-shadow:0 0 18px #ff6f6661}.party-list{display:grid;overflow:hidden;margin-bottom:14px;border-radius:22px}.party-track-row{display:grid;grid-template-columns:38px 70px minmax(0,1fr) 58px 56px;align-items:center;gap:13px;min-height:110px;padding:12px 12px 12px 10px;background:#ffffff0b}.party-track-row.no-voting{grid-template-columns:38px 70px minmax(0,1fr)}.party-track-row+.party-track-row{border-top:1px solid rgba(255,255,255,.075)}.party-rank{display:grid;place-items:center;width:31px;height:31px;border-radius:999px;color:#fff;background:linear-gradient(135deg,#ff625f,#ff8175);font-size:17px;font-weight:900;box-shadow:0 8px 18px #ff625f47}.party-track-row .artwork{width:70px;height:70px;border-radius:10px}.party-track-copy strong{color:#fffaf3;font-size:20px;font-weight:720;line-height:1.07;white-space:normal}.party-track-copy small{margin-top:7px;color:#fff7ef8a;font-size:16px;font-weight:520}.party-vote-count{display:grid;justify-items:center;gap:1px}.party-vote-count strong{color:#ff7c72;font-size:27px;font-weight:850}.party-vote-count small{color:#fff7ef85;font-size:13px;font-weight:560}.party-vote-button{display:grid;place-items:center;width:56px;height:56px;border:0;border-radius:50%;color:#fff;background:linear-gradient(135deg,#ff6e66,#ff8176);box-shadow:0 14px 30px #ff6f663d}.party-vote-button svg{width:27px;height:27px}.party-empty-list{display:grid;place-items:center;min-height:120px;color:#fff7ef9e;font-weight:760}.party-dock{display:grid;grid-template-columns:minmax(0,1fr) 124px;align-items:center;gap:12px;min-height:76px;border-radius:22px;padding:12px}.party-dock-name{display:grid;grid-template-columns:34px minmax(0,1fr);align-items:center;gap:12px;min-width:0;color:#ff756d}.party-dock-name svg{width:32px;height:32px}.party-dock-name label{display:grid;gap:2px;min-width:0}.party-dock-name label span{color:#fff7ef8f;font-size:11px;font-weight:850;letter-spacing:.08em;text-transform:uppercase}.party-dock-name input{width:100%;min-width:0;border:0;outline:0;color:#fffaf3;background:transparent;font-size:18px;font-weight:680}.party-dock-name input::placeholder{color:#fffaf3;opacity:.95}.party-request-button{min-height:52px;border:0;border-radius:14px;color:#fff;background:linear-gradient(135deg,#ff675f,#ff8275);font-size:18px;font-weight:760;box-shadow:0 14px 30px #ff6f663b}.party-request-button:disabled{cursor:not-allowed;opacity:.58;box-shadow:none}.now-playing{display:grid;grid-template-columns:44px minmax(0,1fr) auto;align-items:center;gap:13px;margin-top:14px}.wedding .now-playing{padding:11px 13px;border-radius:20px}.party .now-playing{margin-top:12px;margin-bottom:2px}.now-playing .artwork,.now-playing .pulse-bars{width:44px;height:44px;border-radius:13px}.now-playing div{display:grid;min-width:0;gap:2px}.now-playing small{color:#b88b3e;font-size:10px;font-weight:900;letter-spacing:.12em;text-transform:uppercase}.party .now-playing small{color:#6ed0c7}.now-playing strong{overflow:hidden;color:#2f211a;font-size:16px;font-weight:900;line-height:1.08;text-overflow:ellipsis;white-space:nowrap}.party .now-playing strong{color:#fff7ee}.now-playing span:not(.pulse-bars){overflow:hidden;color:#8b7361;font-size:13px;font-weight:750;text-overflow:ellipsis;white-space:nowrap}.party .now-playing span:not(.pulse-bars){color:#fff5e9ad}.now-playing em{max-width:82px;padding:7px 9px;border-radius:999px;color:#6b542e;background:#90a77b29;font-size:11px;font-style:normal;font-weight:850;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.party .now-playing em{color:#fff5e9;background:#2aa69929}.pulse-bars{display:inline-flex;align-items:end;gap:3px;width:40px;height:40px;justify-content:center;border-radius:14px;background:#2aa69938}.pulse-bars i{width:4px;height:12px;border-radius:999px;background:#6ed0c7;animation:pulse .9s ease-in-out infinite alternate}.pulse-bars i:nth-child(2){height:20px;animation-delay:.15s}.pulse-bars i:nth-child(3){height:15px;animation-delay:.3s}.toast{position:fixed;left:50%;bottom:max(22px,env(safe-area-inset-bottom));z-index:20;width:min(330px,calc(100vw - 44px));transform:translate(-50%);border-radius:999px;padding:13px 20px;color:#fff;background:#5f8e63;font-size:15px;font-weight:900;text-align:center;box-shadow:0 14px 34px #384a2e3d}.toast.error{background:#b5524a}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{to{transform:scaleY(.58)}}@media(max-width:460px){.app{padding:max(13px,env(safe-area-inset-top)) 0 max(18px,env(safe-area-inset-bottom));align-items:stretch}.app.party{padding:0}.party-screen{width:100%;min-height:100svh;padding:max(22px,env(safe-area-inset-top)) 15px max(18px,env(safe-area-inset-bottom));box-shadow:none}.party-header{gap:9px;margin-bottom:16px}.party-couple{width:min(100%,330px);justify-content:center;font-size:clamp(22px,6.3vw,27px)}.party-title h1{font-size:clamp(46px,14vw,60px)}.party-now-playing{grid-template-columns:74px minmax(0,1fr) 36px;min-height:104px;gap:14px;padding:12px}.party-now-playing .artwork,.party-now-playing .pulse-bars{width:74px;height:74px}.party-now-playing strong{font-size:22px}.party-search{min-height:64px;border-radius:21px}.party-search input{font-size:20px}.party-tabs{min-height:58px}.party-track-row{grid-template-columns:34px 58px minmax(0,1fr) 46px 46px;gap:10px;min-height:96px;padding:10px}.party-track-row .artwork{width:58px;height:58px}.party-track-copy strong{font-size:18px}.party-track-copy small{font-size:14px}.party-vote-count strong{font-size:22px}.party-vote-button{width:46px;height:46px}.party-dock{grid-template-columns:minmax(0,1fr) 108px;min-height:70px;border-radius:21px}.party-request-button{font-size:16px}.phone{width:100%;min-height:auto;border-radius:0;padding:16px 14px 18px;box-shadow:none}.wedding .phone,.party .phone{border:0}.phone:before{inset:8px;border-radius:24px}.event-header{margin-bottom:16px}h1{font-size:clamp(34px,11vw,44px)}.wedding .event-header{padding-top:16px}.ornament.top-left{top:28px;left:-6px;width:70px}.ornament.top-right{top:112px;right:-10px;width:58px}.ornament.bottom-flourish{bottom:8px}.wedding .section-title h2{font-size:clamp(25px,7.2vw,28px)}.request-panel,.top-picks,.now-playing{border-radius:25px;padding:15px}.section-title h2{font-size:21px}.search-results{max-height:174px}.toast{bottom:max(16px,env(safe-area-inset-bottom));width:min(330px,calc(100vw - 36px))}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
