:root,:root[data-theme=sombre]{--bg: #1F1530;--sf: #2E2145;--sf2: #3C2C58;--line: #4A3A66;--tx: #FFF6EC;--mu: #C9B9DB;--nav: #160F24;--navline: #160F24;--wall: #2E2145;--floor: #3C2C58;--rug: #4A3A66;--frame: #4A3A66;--pole: #6B5A8A;--link: #FFD36E;--shadow: 0 12px 30px rgba(10, 6, 20, .45);--scrim: rgba(10, 6, 20, .6);color-scheme:dark}:root[data-theme=clair]{--bg: #FFFFFF;--sf: #F7F1EA;--sf2: #EEE4D8;--line: #E2D6C8;--tx: #1F1530;--mu: #6B5A7E;--nav: #FFFFFF;--navline: #EEE4D8;--wall: #F3E6D8;--floor: #E4D2BE;--rug: #D8C3AD;--frame: #FFFFFF;--pole: #8C7A9C;--link: #B5481A;--shadow: 0 10px 30px rgba(31, 21, 48, .14);--scrim: rgba(31, 21, 48, .45);color-scheme:light}*{box-sizing:border-box}html,body{margin:0;padding:0;background:var(--bg)}body{font-family:DM Sans,system-ui,sans-serif;color:var(--tx);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}button,input,textarea,select{font:inherit;color:inherit}button{cursor:pointer}a{color:var(--link)}.display{font-family:Bricolage Grotesque,DM Sans,sans-serif;font-weight:800;letter-spacing:-.02em}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.no-scrollbar{scrollbar-width:none}.no-scrollbar::-webkit-scrollbar{display:none}.app{max-width:480px;margin:0 auto;min-height:100dvh;display:flex;flex-direction:column;background:var(--bg);position:relative}.screen{flex:1;display:flex;flex-direction:column;min-height:0;padding-bottom:16px}.screen.with-nav{padding-bottom:104px}.pad{padding:0 16px}.stack{display:flex;flex-direction:column}.row{display:flex;align-items:center}.grow{flex:1;min-width:0}.gap-4{gap:4px}.gap-6{gap:6px}.gap-8{gap:8px}.gap-10{gap:10px}.gap-12{gap:12px}.gap-14{gap:14px}.gap-16{gap:16px}.gap-20{gap:20px}.gap-24{gap:24px}.muted{color:var(--mu)}.small{font-size:13px}.center{text-align:center}.header{padding:calc(16px + env(safe-area-inset-top)) 20px 14px;display:flex;align-items:center;justify-content:space-between;gap:12px}.header h1{margin:0;font-size:30px;line-height:1.05}.page-title{margin:0;font-size:32px;line-height:1.05}.label-caps{font-size:12px;font-weight:800;letter-spacing:1.2px;text-transform:uppercase}.section-title{font-family:Bricolage Grotesque,sans-serif;font-weight:700;font-size:19px;padding:0 4px;margin:0}.icon-btn{width:44px;height:44px;flex-shrink:0;border-radius:999px;border:none;background:var(--sf);color:var(--tx);display:inline-flex;align-items:center;justify-content:center;position:relative}.icon-btn.accent{background:#ff9e6d;color:#1f1530}.dot{position:absolute;top:6px;right:6px;width:10px;height:10px;border-radius:999px;background:#ff9e6d;border:2px solid var(--sf)}.btn{min-height:56px;border-radius:999px;border:none;padding:0 24px;background:#ff9e6d;color:#1f1530;font-size:17px;font-weight:800;display:inline-flex;align-items:center;justify-content:center;gap:8px;text-decoration:none;width:100%}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.small{min-height:46px;width:auto;font-size:15px;padding:0 20px}.btn.dark{background:#1f1530;color:#fff6ec}.btn.light{background:var(--tx);color:var(--bg)}.btn.ghost{background:transparent;border:2px solid var(--line);color:var(--tx);font-weight:700}.btn.danger{background:#e5484d;color:#fff}.link-btn{background:none;border:none;min-height:44px;color:var(--link);font-weight:700;font-size:15px;padding:0 8px}.bottom-actions{padding:12px 20px calc(24px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:8px;margin-top:auto}.card{background:var(--sf);border-radius:24px;overflow:hidden}.card.pad-card{padding:16px}.field{display:flex;flex-direction:column;gap:8px}.field label{font-size:14px;font-weight:700}.input{height:56px;border-radius:18px;border:2px solid var(--sf2);background:var(--sf);padding:0 18px;font-size:17px;color:var(--tx);width:100%;outline:none}.input:focus{border-color:#ff9e6d}textarea.input{height:auto;min-height:96px;padding:14px 18px;resize:vertical;line-height:1.4}.error{color:#e5484d;font-size:14px;font-weight:700}.notice{background:var(--sf);border-radius:18px;padding:14px 16px;font-size:15px;line-height:1.45}.chip{min-height:44px;padding:0 16px;border-radius:999px;border:none;background:var(--sf);color:var(--tx);font-size:15px;font-weight:700}.chip.on{background:#8ee3c0;color:#1f1530}.chip.accent{background:#ff9e6d;color:#1f1530}.progress{display:flex;gap:6px;flex:1}.progress span{flex:1;height:6px;border-radius:99px;background:var(--sf2)}.progress span.on{background:#ff9e6d}.bar{height:8px;border-radius:99px;background:var(--line);overflow:hidden}.bar>div{height:100%;border-radius:99px;background:#8ee3c0}.avatar{display:inline-flex;border-radius:999px;overflow:hidden;flex-shrink:0}.avatar svg{display:block}.option{min-height:60px;border-radius:18px;border:2px solid var(--sf);background:var(--sf);padding:8px 14px 8px 8px;display:flex;align-items:center;gap:12px;text-align:left;width:100%}.option.on{border-color:#ff9e6d;background:var(--sf2)}.option .tile{width:42px;height:42px;flex-shrink:0;border-radius:13px;display:flex;align-items:center;justify-content:center;color:#1f1530}.radio{width:24px;height:24px;flex-shrink:0;border-radius:999px;border:2px solid var(--mu);display:flex;align-items:center;justify-content:center}.option.on .radio{border-color:#ff9e6d}.option.on .radio:after{content:"";width:12px;height:12px;border-radius:999px;background:#ff9e6d}.nav{position:fixed;left:50%;transform:translate(-50%);bottom:0;width:100%;max-width:480px;background:var(--nav);border-top:1px solid var(--navline);padding:8px 4px calc(10px + env(safe-area-inset-bottom));display:grid;grid-template-columns:repeat(5,minmax(0,1fr));z-index:20}.nav button{min-height:56px;border:none;background:none;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;color:var(--mu);font-size:12px;font-weight:600}.nav button .pill{position:relative;width:56px;height:30px;border-radius:999px;display:flex;align-items:center;justify-content:center}.nav button[aria-current=page]{color:var(--tx);font-weight:800}.nav button[aria-current=page] .pill{background:#ff9e6d;color:#1f1530}.badge{position:absolute;top:-3px;right:8px;min-width:18px;height:18px;padding:0 4px;border-radius:999px;background:#ff9e6d;color:#1f1530;font-size:11px;font-weight:800;display:flex;align-items:center;justify-content:center}.hscroll{display:flex;gap:12px;overflow-x:auto;margin:0 -16px;padding:0 16px;scrollbar-width:none}.hscroll::-webkit-scrollbar{display:none}.list-row{min-height:58px;padding:0 16px;display:flex;align-items:center;gap:14px;color:var(--tx);text-decoration:none;background:none;border:none;width:100%;text-align:left;font-size:16px;font-weight:700}.list-row+.list-row{border-top:1px solid var(--bg)}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;display:flex;justify-content:center}.overlay>.inner{width:100%;max-width:480px;display:flex;flex-direction:column}.scrim{background:var(--scrim)}.sheet{background:var(--bg);border-radius:28px 28px 0 0;padding:12px 20px calc(30px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:8px}.handle{align-self:center;width:40px;height:5px;border-radius:99px;background:var(--line);margin-bottom:8px}.sheet-btn{min-height:56px;border-radius:16px;border:2px solid transparent;background:var(--sf);font-size:16px;font-weight:700;display:flex;align-items:center;gap:12px;padding:0 16px;text-align:left}.sheet-btn.on{border-color:#e5484d}.bubble{max-width:78%;padding:12px 14px;font-size:16px;line-height:1.4;white-space:pre-wrap;word-wrap:break-word}.bubble.me{align-self:flex-end;background:#ff9e6d;color:#1f1530;border-radius:20px 20px 6px}.bubble.them{align-self:flex-start;background:var(--sf);border-radius:20px 20px 20px 6px}.bubble.cafe{align-self:stretch;max-width:none;background:#ffd36e;color:#1f1530;border-radius:20px;font-weight:700}.switch{width:56px;height:34px;flex-shrink:0;border-radius:999px;border:none;background:var(--line);padding:3px;display:flex;justify-content:flex-start}.switch[aria-checked=true]{background:#4fb38a;justify-content:flex-end}.switch span{width:28px;height:28px;border-radius:999px;background:#fff}.discover-card{position:relative;flex:1;border-radius:32px;overflow:hidden;background:var(--sf);display:flex;flex-direction:column;box-shadow:var(--shadow);min-height:380px}.round-btn{border-radius:999px;border:none;display:flex;align-items:center;justify-content:center}.spinner{width:28px;height:28px;border-radius:999px;border:3px solid var(--sf2);border-top-color:#ff9e6d;animation:spin .8s linear infinite;margin:40px auto}@keyframes spin{to{transform:rotate(360deg)}}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}@keyframes blink{0%,to{opacity:.25}50%{opacity:1}}@media (prefers-reduced-motion: reduce){*{animation:none!important;transition:none!important}}.chip:disabled{opacity:.4}.sheet{scrollbar-width:none}.sheet::-webkit-scrollbar{display:none}.event-card{background:var(--sf);border-radius:20px;padding:12px 14px;display:flex;gap:12px;align-items:center}.date-tile{width:50px;flex-shrink:0;border-radius:14px;background:#ffd36e;color:#1f1530;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:6px 0;line-height:1.05}.date-tile b{font-size:20px}.date-tile span{font-size:11px;font-weight:800;text-transform:uppercase}.game-card{align-self:stretch;background:var(--sf);border:2px solid var(--sf2);border-radius:22px;padding:12px 14px;max-width:360px}.game-card.mine{align-self:flex-end}.rec-dot{width:12px;height:12px;border-radius:999px;background:#e5484d;animation:recpulse 1s ease-in-out infinite}@keyframes recpulse{50%{opacity:.3}}.season-drop{position:absolute;top:-40px;animation:season-fall 3.6s ease-in forwards;opacity:.9}@keyframes season-fall{to{transform:translateY(110vh) rotate(200deg);opacity:.2}}.game-line{display:flex;align-items:center;gap:10px;max-width:320px;width:100%;padding:10px 12px;border-radius:18px;background:var(--sf);border:2px solid transparent;color:var(--tx);cursor:pointer}.game-stage{background:var(--sf);border-radius:24px;padding:18px 14px}.gi{position:fixed;top:0;right:0;bottom:0;left:0;z-index:80;border:none;padding:24px;width:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;color:#fff6ec;cursor:pointer;overflow:hidden;background:radial-gradient(circle at 50% 35%,#4b2e6b,#2a1b42 45%,#150d24);animation:gi-in .3s ease-out both}.gi-out{animation:gi-out .35s ease-in forwards}.gi-float{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.gi-float span{position:absolute;bottom:-50px;opacity:.22;animation:gi-rise 3.2s linear infinite}.gi-pad{font-size:54px;animation:gi-bounce 1s cubic-bezier(.3,1.6,.5,1) both;filter:drop-shadow(0 8px 24px rgba(255,158,109,.5))}.gi-title{display:flex;gap:2px;font-family:Bricolage Grotesque,DM Sans,sans-serif;font-weight:800;font-size:54px;letter-spacing:2px;line-height:1}.gi-title span{display:inline-block;animation:gi-pop .45s cubic-bezier(.3,1.6,.5,1) both;background:linear-gradient(180deg,#ffd36e,#ff9e6d);-webkit-background-clip:text;background-clip:text;color:transparent}.gi-games{font-weight:900;font-size:18px;letter-spacing:12px;padding-left:12px;color:#b9a4ff;animation:gi-fade .5s .6s both}.gi-card{display:flex;align-items:center;gap:12px;margin-top:26px;background:#ffffff14;border:1px solid rgba(255,255,255,.14);border-radius:22px;padding:10px 18px 10px 10px;animation:gi-zoom .5s .85s cubic-bezier(.3,1.4,.5,1) both}.gi-icon{width:48px;height:48px;border-radius:15px;display:flex;align-items:center;justify-content:center;font-size:26px}.gi-name{font-weight:800;font-size:19px}.gi-bar{width:min(260px,70vw);height:8px;border-radius:99px;background:#ffffff1f;overflow:hidden;margin-top:26px}.gi-bar span{display:block;height:100%;width:0;border-radius:99px;background:linear-gradient(90deg,#ff9e6d,#ffd36e);animation:gi-load linear forwards}.gi-tip{font-size:14px;opacity:.8;max-width:300px;text-align:center;line-height:1.4;animation:gi-fade .5s 1.1s both}.gi-skip{position:absolute;bottom:calc(18px + env(safe-area-inset-bottom));font-size:12px;opacity:.5}.gi-still *,.gi-still{animation-duration:.01s!important;animation-delay:0s!important}@keyframes gi-in{0%{opacity:0}to{opacity:1}}@keyframes gi-out{to{opacity:0;transform:scale(1.06)}}@keyframes gi-rise{to{transform:translateY(-115vh) rotate(25deg)}}@keyframes gi-bounce{0%{transform:translateY(-40px) scale(.4);opacity:0}to{transform:none;opacity:1}}@keyframes gi-pop{0%{transform:translateY(30px) scale(.3);opacity:0}to{transform:none;opacity:1}}@keyframes gi-fade{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@keyframes gi-zoom{0%{opacity:0;transform:scale(.6)}to{opacity:1;transform:none}}@keyframes gi-load{to{width:100%}}.sheet>*{flex-shrink:0}
