:root{--bg: var(--tg-theme-secondary-bg-color, #f2f3f5);--surface: var(--tg-theme-bg-color, #ffffff);--text: var(--tg-theme-text-color, #16191d);--hint: var(--tg-theme-hint-color, #8a8f98);--link: var(--tg-theme-link-color, #2481cc);--accent: var(--tg-theme-button-color, #2481cc);--accent-text: var(--tg-theme-button-text-color, #ffffff);--danger: var(--tg-theme-destructive-text-color, #e5484d);--line: color-mix(in srgb, var(--hint) 22%, transparent);--radius: 14px;--tab-height: 58px}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--text);font:15px/1.45 -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;overscroll-behavior-y:none}button{font:inherit;color:inherit;border:0;background:none;cursor:pointer}img{display:block;max-width:100%}.app{min-height:100%;padding-bottom:calc(var(--tab-height) + env(safe-area-inset-bottom,0px))}.page{padding:12px 14px 20px}.page-title{font-size:22px;font-weight:700;margin:4px 0 14px}.section-title{font-size:13px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--hint);margin:20px 0 8px}.limits{display:flex;gap:8px;overflow-x:auto;padding:2px 14px 12px;scrollbar-width:none}.limits::-webkit-scrollbar{display:none}.limit-chip{flex:0 0 auto;background:var(--surface);border-radius:12px;padding:8px 12px;display:flex;align-items:center;gap:8px}.limit-chip .emoji{font-size:17px}.limit-chip .value{font-weight:700;font-variant-numeric:tabular-nums}.limit-chip .name{color:var(--hint);font-size:13px}.limit-chip.empty .value{color:var(--hint)}.chips{display:flex;gap:8px;overflow-x:auto;padding:0 14px 14px;scrollbar-width:none}.chips::-webkit-scrollbar{display:none}.chip{flex:0 0 auto;padding:7px 14px;border-radius:20px;font-size:14px;background:var(--surface);color:var(--text);white-space:nowrap;transition:background .15s,color .15s}.chip.active{background:var(--accent);color:var(--accent-text)}.cards{display:grid;gap:12px;padding:0 14px}.card{background:var(--surface);border-radius:var(--radius);overflow:hidden;text-align:left;width:100%;display:block;transition:transform .12s ease}.card:active{transform:scale(.985)}.card.dim .cover,.card.dim .card-body{opacity:.55}.cover{aspect-ratio:16 / 9;width:100%;object-fit:cover;background:var(--bg)}.cover-fallback{aspect-ratio:16 / 9;display:grid;place-items:center;font-size:44px;background:linear-gradient(135deg,color-mix(in srgb,var(--accent) 16%,var(--surface)),color-mix(in srgb,var(--accent) 4%,var(--surface)))}.card-body{padding:12px 14px 14px;display:flex;gap:12px}.date-badge{flex:0 0 auto;width:46px;text-align:center;padding-top:2px;border-right:1px solid var(--line);padding-right:12px}.date-badge .day{font-size:20px;font-weight:700;line-height:1.1}.date-badge .month{font-size:12px;color:var(--hint);text-transform:lowercase}.date-badge .time{font-size:12px;color:var(--hint);margin-top:3px}.card-main{min-width:0;flex:1}.card-title{font-size:16px;font-weight:600;margin:0 0 3px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.card-venue{color:var(--hint);font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.card-status{margin-top:7px;font-size:13px;display:flex;align-items:center;gap:6px}.card-status.ok{color:var(--hint)}.card-status.warn{color:#d98324}.card-status.off{color:var(--hint)}.card-status.done{color:#2e9e5b;font-weight:600}.card-cat{font-size:12px;color:var(--hint);margin-bottom:4px}.detail{position:relative}.back-fab{position:absolute;z-index:5;top:calc(12px + env(safe-area-inset-top,0px));left:12px;width:36px;height:36px;border-radius:50%;font-size:19px;line-height:1;display:grid;place-items:center;background:#00000073;color:#fff;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}.back-fab:active{background:#0000009e}.detail-cover{width:100%;aspect-ratio:16 / 9;object-fit:cover}.detail-body{padding:16px 14px 24px;background:var(--surface)}.detail-title{font-size:21px;font-weight:700;margin:0 0 10px}.detail-meta{display:grid;gap:10px;margin:14px 0}.meta-row{display:flex;gap:11px;align-items:flex-start;font-size:15px}.meta-row .ico{width:22px;text-align:center;flex:0 0 auto}.meta-row .sub{color:var(--hint);font-size:13px}.detail-desc{white-space:pre-line;color:var(--text);margin-top:6px}.spend-note{background:var(--bg);border-radius:12px;padding:12px 14px;margin:16px 0 0;font-size:14px}.spend-note b{font-variant-numeric:tabular-nums}.cta-bar{position:sticky;bottom:0;padding:12px 14px calc(12px + env(safe-area-inset-bottom,0px));background:var(--surface);border-top:1px solid var(--line)}.btn{width:100%;padding:14px;border-radius:12px;font-size:16px;font-weight:600;background:var(--accent);color:var(--accent-text);text-align:center}.btn[disabled]{opacity:.45}.btn.secondary{background:var(--bg);color:var(--text)}.btn.danger{background:transparent;color:var(--danger)}.sheet-backdrop{position:fixed;inset:0;background:#00000073;z-index:40;display:flex;align-items:flex-end;animation:fade .18s ease}.sheet{width:100%;background:var(--surface);border-radius:18px 18px 0 0;padding:8px 18px calc(18px + env(safe-area-inset-bottom,0px));animation:rise .22s cubic-bezier(.2,.8,.3,1);max-height:92vh;overflow-y:auto}.sheet-grip{width:36px;height:4px;border-radius:4px;background:var(--line);margin:6px auto 14px}.sheet h2{font-size:19px;margin:0 0 10px}.sheet p{margin:0 0 12px}.warn-box{background:color-mix(in srgb,var(--danger) 10%,transparent);border-radius:12px;padding:12px 14px;margin-bottom:14px}.warn-box .warn-title{font-weight:600;color:var(--danger);margin-bottom:4px}.warn-box .warn-text{font-size:14px}.agree{display:flex;gap:10px;align-items:center;padding:12px 2px;margin-bottom:6px;-webkit-user-select:none;user-select:none}.agree input{width:20px;height:20px;accent-color:var(--accent);flex:0 0 auto}.sheet-actions{display:grid;gap:8px}.segmented{display:flex;background:var(--surface);border-radius:10px;padding:3px;margin:0 14px 14px}.segmented button{flex:1;padding:8px;border-radius:8px;font-size:14px;font-weight:500;color:var(--hint)}.segmented button.active{background:var(--accent);color:var(--accent-text)}.ticket{background:var(--surface);border-radius:var(--radius);overflow:hidden;margin:0 14px 12px}.ticket-head{padding:14px 16px 10px}.ticket-title{font-size:17px;font-weight:600;margin:0 0 4px}.ticket-when{color:var(--hint);font-size:14px}.ticket-qr{padding:16px;display:flex;flex-direction:column;align-items:center;gap:10px;border-top:1px dashed var(--line);margin-top:10px;position:relative}.ticket-qr:before,.ticket-qr:after{content:"";position:absolute;top:-9px;width:18px;height:18px;border-radius:50%;background:var(--bg)}.ticket-qr:before{left:-9px}.ticket-qr:after{right:-9px}.qr-frame{background:#fff;padding:9px;border-radius:10px}.qr-frame canvas{display:block}.ticket-hint{color:var(--hint);font-size:13px;text-align:center}.ticket-foot{padding:0 16px 14px}.ticket.past .ticket-head{opacity:.6}.ticket-status{display:inline-block;margin-top:8px;font-size:13px;padding:3px 10px;border-radius:20px;background:var(--bg);color:var(--hint)}.list{background:var(--surface);border-radius:var(--radius);overflow:hidden;margin:0 0 14px}.list-row{display:flex;justify-content:space-between;align-items:center;gap:14px;padding:13px 16px;border-bottom:1px solid var(--line)}.list-row:last-child{border-bottom:0}.list-row .label{color:var(--hint);font-size:14px}.list-row .value{font-weight:500;text-align:right}.limit-row .bar{height:5px;border-radius:3px;background:var(--line);margin-top:7px;overflow:hidden}.limit-row .bar i{display:block;height:100%;background:var(--accent);border-radius:3px}.limit-row{display:block}.limit-row .top{display:flex;justify-content:space-between;align-items:baseline;gap:12px}.lang-switch{display:flex;gap:6px}.lang-switch button{padding:6px 14px;border-radius:8px;font-size:14px;background:var(--bg);color:var(--hint)}.lang-switch button.active{background:var(--accent);color:var(--accent-text)}.center{min-height:70vh;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:30px 34px;gap:8px}.center .ico{font-size:46px;margin-bottom:6px}.center h2{font-size:18px;margin:0}.center p{color:var(--hint);margin:0}.center .btn{margin-top:16px;max-width:260px}.skeleton{background:linear-gradient(90deg,var(--surface) 25%,color-mix(in srgb,var(--hint) 10%,var(--surface)) 37%,var(--surface) 63%);background-size:400% 100%;animation:shimmer 1.3s infinite linear;border-radius:var(--radius)}.skeleton.card-skeleton{height:210px}.toast{position:fixed;left:50%;bottom:calc(var(--tab-height) + 20px);transform:translate(-50%);background:#141416eb;color:#fff;padding:11px 18px;border-radius:10px;font-size:14px;z-index:60;max-width:86vw;text-align:center;animation:fade .2s ease}.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:30;display:flex;background:var(--surface);border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom,0px)}.tabbar button{flex:1;height:var(--tab-height);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;color:var(--hint);font-size:11px}.tabbar button .ico{font-size:21px;line-height:1}.tabbar button.active{color:var(--accent)}.tabbar .badge{position:absolute;transform:translate(15px,-14px);min-width:16px;height:16px;border-radius:8px;background:var(--danger);color:#fff;font-size:10px;display:grid;place-items:center;padding:0 4px}@keyframes shimmer{0%{background-position:100% 0}to{background-position:-100% 0}}@keyframes rise{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes fade{0%{opacity:0}to{opacity:1}}@media(prefers-reduced-motion:reduce){*{animation-duration:.01ms!important;transition-duration:.01ms!important}}
