.login-screen{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100vh;padding:24px;text-align:center}.login-title{font-size:36px;font-weight:700;margin-bottom:8px}.login-subtitle{color:var(--hint);margin-bottom:32px}.login-widget{margin-bottom:24px}.login-apikey{color:var(--hint);margin-top:16px}.login-apikey summary{cursor:pointer;padding:8px}.login-apikey form{display:flex;flex-direction:column;gap:8px;margin-top:12px;max-width:280px}.login-apikey input{background:var(--surface);border:1px solid var(--border);color:var(--text);padding:10px;border-radius:var(--radius-sm)}.login-apikey .error{color:var(--danger);font-size:13px}.track-card{background:var(--surface);border-radius:var(--radius);padding:14px;margin-bottom:8px;position:relative;transition:background .15s}.track-card.highlight{background:linear-gradient(135deg,var(--accent-soft),transparent 60%),var(--surface);border:1px solid var(--accent-soft)}.track-title{font-weight:500;margin-bottom:4px}.track-title-link{display:block;color:inherit;text-decoration:none;transition:color .12s}.track-title-link:hover,.track-title-link:focus-visible{color:var(--accent);text-decoration:underline}.track-author{color:var(--hint);font-size:13px;font-variant-numeric:tabular-nums}.track-playat{color:var(--accent)}.track-playedat{color:var(--hint)}.track-played-stats{display:flex;gap:12px;margin-top:8px;color:var(--hint);font-size:13px}.track-played-stats .vote-stat{display:inline-flex;align-items:center;gap:4px}.track-from{color:var(--hint);font-size:12px;margin-top:4px}.track-rank{position:absolute;top:-8px;left:-8px;background:var(--surface-2);color:var(--hint);padding:2px 8px;border-radius:12px;font-size:12px;font-weight:600}.track-rank.top-1{background:#d4af37;color:#000}.track-rank.top-2{background:silver;color:#000}.track-rank.top-3{background:#cd7f32;color:#fff}.track-badge{position:absolute;top:12px;right:12px;background:var(--accent);color:var(--bg);padding:2px 8px;border-radius:10px;font-size:11px;font-weight:600}.track-badge:before{content:"";display:inline-block;width:6px;height:6px;background:currentColor;border-radius:50%;margin-right:4px;animation:pulse 1.5s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}.track-card>.track-status{position:absolute;top:12px;right:12px;display:inline-flex;align-items:center;gap:8px;background:var(--surface-2);padding:4px 12px 4px 8px;border-radius:999px;font-size:11px;text-transform:uppercase;letter-spacing:.6px;color:var(--accent);line-height:1}.track-card>.track-status.is-paused{color:var(--hint)}.track-status-label{font-weight:600}.track-card.is-now-playing .track-title,.track-card.is-now-playing .track-author{padding-right:92px}.admin-controls{display:flex;gap:6px;margin-top:10px}.admin-controls .ctrl{background:var(--surface-2);border:none;color:var(--text);padding:6px 10px;border-radius:var(--radius-sm);display:inline-flex;align-items:center}.admin-controls .ctrl:hover{background:var(--accent);color:var(--bg)}.admin-controls .ctrl.danger:hover{background:var(--danger)}.admin-controls .ctrl.ghost{background:transparent;color:var(--hint);border:1px solid var(--surface-2);margin-left:auto}.admin-controls .ctrl.ghost.danger:hover{background:var(--danger);color:var(--bg);border-color:var(--danger)}.section-title{font-size:12px;text-transform:uppercase;letter-spacing:.6px;color:var(--hint);margin:24px 0 8px;padding:0 4px}.collapsible{margin-top:24px}.collapsible-head{display:flex;align-items:center;gap:8px;width:100%;background:none;border:none;padding:6px 4px;font:inherit;color:var(--hint);cursor:pointer;font-size:12px;text-transform:uppercase;letter-spacing:.6px;text-align:left}.collapsible-head:hover{color:var(--text)}.collapsible-title{flex:none}.collapsible-count{background:var(--surface-2);color:var(--hint);padding:1px 8px;border-radius:999px;font-size:11px;font-weight:600;letter-spacing:0;text-transform:none;min-width:22px;text-align:center}.collapsible-count-pending{color:#ffb84d}.collapsible-chev{margin-left:auto;transition:transform .2s ease;color:var(--hint)}.collapsible-head.open .collapsible-chev{transform:rotate(180deg)}.collapsible-body{animation:collapsible-in .18s ease-out}@keyframes collapsible-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}@media(prefers-reduced-motion:reduce){.collapsible-chev{transition:none}.collapsible-body{animation:none}}.show-more{display:block;width:100%;background:var(--surface-2);border:1px dashed var(--border);color:var(--hint);padding:10px;border-radius:var(--radius-sm);font:inherit;font-size:13px;margin-top:4px;transition:background .15s,color .15s}.show-more:hover{background:var(--surface);color:var(--text);border-style:solid}.track-card.verifying{opacity:.72;border-left:3px dashed #ffb84d}.track-card.mine:before{content:"";position:absolute;left:0;top:10%;bottom:10%;width:3px;background:#5294ff;border-radius:0 2px 2px 0}.track-card.verifying.mine{border-left:3px dashed #ffb84d}.track-verifying-badge{position:absolute;top:12px;right:12px;background:#ffb84d21;color:#ffb84d;font-size:10px;padding:2px 6px;border-radius:4px;font-weight:600;display:inline-flex;align-items:center;gap:4px}.track-card.verifying-fast .track-title,.track-card.verifying-fast .track-author{padding-right:80px}.track-card.verifying-deep .track-title,.track-card.verifying-deep .track-author{padding-right:130px}.track-verifying-spinner{width:8px;height:8px;border:1.5px solid #ffb84d;border-top-color:transparent;border-radius:50%;animation:tc-spin .8s linear infinite}.track-card.has-pos{padding-left:36px}.track-pos{position:absolute;left:8px;top:14px;font-size:11px;color:var(--hint);min-width:22px;text-align:center;font-variant-numeric:tabular-nums}@keyframes tc-spin{to{transform:rotate(360deg)}}::view-transition-old(*),::view-transition-new(*){animation-duration:.32s;animation-timing-function:cubic-bezier(.4,0,.2,1)}.vote-row{display:flex;gap:8px}.vote-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;background:var(--surface-2);border:1px solid transparent;color:var(--hint);padding:6px 12px;border-radius:var(--radius-sm);font-size:13px;font-variant-numeric:tabular-nums;cursor:pointer;transition:background .15s,color .15s,border-color .15s,transform .08s;user-select:none}.vote-btn:hover:not(:disabled){background:var(--surface);color:var(--text)}.vote-btn:active:not(:disabled){transform:scale(.96)}.vote-btn.active.like{background:var(--accent-soft);color:var(--accent);border-color:color-mix(in srgb,var(--accent) 35%,transparent)}.vote-btn.active.dislike{background:var(--danger-soft);color:var(--danger);border-color:color-mix(in srgb,var(--danger) 35%,transparent)}.vote-btn:disabled{opacity:.5;cursor:not-allowed}.vote-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.vote-row--prominent{gap:10px;margin-top:12px}.vote-row--prominent .vote-btn{flex:1;padding:12px 16px;font-size:15px;font-weight:600;border-radius:var(--radius)}.vote-row--prominent .vote-btn.active.like{background:linear-gradient(135deg,var(--accent-soft),transparent 140%)}.vote-row--prominent .vote-btn.active.dislike{background:linear-gradient(135deg,var(--danger-soft),transparent 140%)}.vote-row--compact{gap:4px}.vote-row--compact .vote-btn{padding:4px 8px;font-size:12px;gap:4px;background:transparent}.vote-row--compact .vote-btn:hover:not(:disabled){background:var(--surface-2)}.played-list{background:var(--surface);border-radius:var(--radius);padding:4px 6px;margin-bottom:8px}.played-row{display:flex;align-items:center;gap:10px;padding:10px 8px;border-radius:var(--radius-sm);transition:background .12s}.played-row+.played-row{border-top:1px solid var(--surface-2)}.played-row:hover{background:var(--surface-2)}.played-row__main{flex:1;min-width:0}.played-row__title{display:block;color:var(--text);font-size:14px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.played-row__title-link{text-decoration:none}.played-row__title-link:hover,.played-row__title-link:focus-visible{color:var(--accent);text-decoration:underline}.played-row__meta{color:var(--hint);font-size:12px;font-variant-numeric:tabular-nums;margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.played-row__stats{display:flex;gap:10px;flex-shrink:0;color:var(--hint);font-size:12px;font-variant-numeric:tabular-nums}.played-row__stat{display:inline-flex;align-items:center;gap:4px}.now-page{padding-bottom:80px;position:relative}.now-add-cta{position:fixed;left:16px;right:16px;bottom:76px;z-index:5;padding:12px;background:linear-gradient(135deg,#7c5cff,#5d8bff);color:#fff;border:0;border-radius:12px;font-size:14px;font-weight:600;display:inline-flex;align-items:center;justify-content:center;gap:8px;box-shadow:0 8px 24px -8px #7c5cff99;cursor:pointer}.now-toast{position:fixed;left:50%;top:90px;transform:translate(-50%);z-index:60;padding:10px 14px;background:#2dd4a424;border:1px solid rgba(45,212,164,.45);color:#a7f0d6;border-radius:12px;font-size:13px;font-weight:500;animation:toast-in .25s ease-out}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,-8px)}to{opacity:1;transform:translate(-50%)}}.search-sheet-backdrop{position:fixed;inset:0;z-index:50;background:#0000008c}.search-sheet{position:absolute;left:0;right:0;bottom:0;height:92%;background:var(--tg-theme-bg-color, #0e0f12);border-radius:22px 22px 0 0;box-shadow:0 -20px 60px #0009;display:flex;flex-direction:column;animation:sheet-up .28s cubic-bezier(.2,.9,.3,1);padding-bottom:12px}@keyframes sheet-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}.search-sheet-handle{width:38px;height:4px;background:var(--line, #262a32);border-radius:4px;margin:8px auto 4px}.search-sheet-head{display:flex;align-items:center;justify-content:space-between;padding:8px 16px}.search-sheet-title{font-size:16px;font-weight:600}.search-sheet-balance{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:999px;background:var(--tg-theme-secondary-bg-color, #16181d);border:1px solid var(--line, #262a32);font-size:13px;font-weight:600}.search-sheet-body{flex:1;overflow-y:auto;padding:0 16px 16px;display:flex;flex-direction:column;gap:12px}.search-input{display:flex;align-items:center;gap:10px;height:44px;padding:0 14px;background:var(--tg-theme-secondary-bg-color, #16181d);border:1px solid var(--line, #262a32);border-radius:14px}.search-input input{flex:1;background:transparent;border:0;outline:none;color:var(--tg-theme-text-color, #f3f4f6);font-size:14.5px}.search-input input::placeholder{color:var(--tg-theme-hint-color, #6b7077)}.search-clear{background:transparent;border:0;cursor:pointer;color:var(--tg-theme-hint-color, #6b7077);padding:4px;display:flex;align-items:center}.search-results{display:flex;flex-direction:column;gap:10px}.search-cap-hint{margin-top:6px;font-size:11px;color:var(--tg-theme-hint-color, #6b7077);opacity:.7}.search-hint{background:linear-gradient(180deg,#7c5cff14,#7c5cff05);border:1px solid rgba(124,92,255,.18);color:var(--tg-theme-hint-color, #9aa0aa);border-radius:14px;padding:14px;font-size:13px;line-height:1.5}.search-hint b{color:var(--tg-theme-text-color, #f3f4f6);font-weight:600}.search-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}.search-chip{padding:6px 10px;border-radius:999px;background:var(--tg-theme-secondary-bg-color, #1d2026);border:1px solid var(--line, #262a32);font-size:12px;cursor:pointer;color:inherit}.search-empty{text-align:center;padding:32px 20px;color:var(--tg-theme-hint-color, #9aa0aa)}.search-empty h3{font-size:15px;color:var(--tg-theme-text-color, #f3f4f6);margin:0 0 6px}.search-empty p{font-size:13px;margin:0;line-height:1.5}.result-card{display:grid;grid-template-columns:76px 1fr;gap:12px;padding:10px;background:var(--tg-theme-secondary-bg-color, #16181d);border:1px solid var(--line, #262a32);border-radius:16px}.result-card.is-other-adding{opacity:.55}.result-thumb{width:76px;height:56px;border-radius:10px;overflow:hidden;background:linear-gradient(135deg,#2b2e36,#1a1c22);position:relative}.result-thumb img{width:100%;height:100%;object-fit:cover;display:block}.result-dur{position:absolute;right:4px;bottom:4px;background:#000000b3;color:#fff;font-size:10px;padding:1px 5px;border-radius:4px;font-variant-numeric:tabular-nums}.result-meta{display:flex;flex-direction:column;min-width:0;gap:2px}.result-title{font-size:14px;font-weight:600;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.result-channel{font-size:12px;color:var(--tg-theme-hint-color, #6b7077)}.result-actions{grid-column:1 / -1;display:flex;justify-content:flex-end}.result-cta{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border-radius:10px;font-size:13px;font-weight:600;border:0;background:linear-gradient(135deg,#7c5cff,#5d8bff);color:#fff;cursor:pointer}.result-cta:disabled{cursor:default;opacity:.6}.result-cta.is-locked,.result-cta.is-adding{background:var(--tg-theme-secondary-bg-color, #1d2026);color:var(--tg-theme-hint-color, #9aa0aa);border:1px solid var(--line, #262a32)}.result-price{font-variant-numeric:tabular-nums;opacity:.9}.spin{animation:spin .9s linear infinite}.sk-shimmer{background:linear-gradient(90deg,#1f2229,#2a2e37,#1f2229);background-size:200% 100%;animation:shimmer 1.4s linear infinite;border-radius:6px}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.sk-line{height:11px}.sk-line.lg{height:13px}.sk-line.sm{width:60%}.stats-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:12px}.stats-tile{background:var(--surface);padding:16px;border-radius:var(--radius);display:flex;flex-direction:column;gap:6px}.stats-tile.full{grid-column:1 / -1}.stats-tile-label{font-size:11px;color:var(--hint);text-transform:uppercase;letter-spacing:.4px;display:inline-flex;gap:6px;align-items:center}.stats-tile-value{font-size:22px;font-weight:600}.stats-tile-value.positive{color:var(--success)}.stats-tile-value.negative{color:var(--danger)}.profile-card{background:var(--surface);padding:16px;border-radius:var(--radius);margin-bottom:12px;display:flex;flex-direction:column;gap:10px}.profile-card-title{font-size:11px;color:var(--hint);text-transform:uppercase;letter-spacing:.4px}.profile-toggle{display:grid;grid-template-columns:1fr 1fr;gap:6px;background:var(--bg);padding:4px;border-radius:var(--radius)}.profile-toggle button{background:transparent;border:none;padding:8px;border-radius:calc(var(--radius) - 4px);color:var(--hint);display:inline-flex;align-items:center;justify-content:center;gap:6px;font-size:13px;cursor:pointer}.profile-toggle button.active{background:var(--surface);color:var(--text);font-weight:600}.profile-toggle button:disabled{opacity:.5;cursor:not-allowed}.profile-real-hint{font-size:12px;color:var(--hint)}.profile-real-hint b{color:var(--text);font-weight:500}.profile-label{font-size:11px;color:var(--hint);text-transform:uppercase;letter-spacing:.4px;margin-top:4px}.profile-pseudonym-row{display:flex;gap:6px;align-items:center}.profile-input{flex:1;padding:10px 12px;border-radius:var(--radius);border:1px solid var(--border, #2a2a2a);background:var(--bg);color:var(--text);font-size:14px}.profile-input:disabled{opacity:.6}.profile-icon-btn{background:var(--bg);color:var(--text);border:none;padding:10px;border-radius:var(--radius);cursor:pointer;display:inline-flex;align-items:center;justify-content:center}.profile-icon-btn:disabled{opacity:.4;cursor:not-allowed}:root{--tg-theme-bg-color: var(--bg, #0d0e13);--tg-theme-text-color: var(--text, #e4e4ec);--tg-theme-hint-color: var(--hint, #5e5e72);--tg-theme-link-color: #8b7cf7;--tg-theme-button-color: var(--accent, #7c6cf0);--tg-theme-button-text-color: #ffffff;--tg-theme-secondary-bg-color: var(--surface, #161622);--tg-theme-destructive-text-color: var(--danger, #f04d5a);--surface-color: var(--surface, #161622);--surface-hover: var(--surface-2, #1e1e2c);--border-subtle: var(--border, rgba(255, 255, 255, .06));--border-color: var(--border, rgba(255, 255, 255, .08));--border-active: rgba(124, 108, 240, .4);--glow-accent: rgba(124, 108, 240, .12);--success-color: var(--success, #34d399);--text-muted: var(--hint, #5e5e72);--accent-color: var(--accent, #7c6cf0);--radius-md: 14px;--radius-lg: 20px;--radius-pill: 999px;--transition-fast: .15s ease}.card{background:var(--tg-theme-secondary-bg-color);border:1px solid var(--border-subtle);border-radius:var(--radius-md);padding:16px;margin-bottom:10px}.card-title{font-size:11px;font-weight:600;color:var(--tg-theme-hint-color);text-transform:uppercase;letter-spacing:.08em;margin-bottom:12px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:10px 18px;border:none;border-radius:var(--radius-sm);font-family:inherit;font-size:13px;font-weight:600;cursor:pointer;transition:all var(--transition-fast);background:var(--tg-theme-button-color);color:var(--tg-theme-button-text-color);user-select:none;-webkit-tap-highlight-color:transparent}.btn:active{transform:scale(.96);opacity:.85}.btn:disabled{opacity:.35;cursor:not-allowed;transform:none}.btn-danger{background:var(--tg-theme-destructive-text-color);color:#fff}.btn-outline{background:transparent;border:1px solid var(--border-subtle);color:var(--tg-theme-text-color)}.btn-outline:active{background:var(--surface-hover)}.btn-sm{padding:6px 12px;font-size:12px;border-radius:8px}.btn-group{display:flex;gap:8px;flex-wrap:wrap}.btn-allow{background:#2a7;color:#fff}.btn-deny{background:#c33;color:#fff}.player-status{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:500}.status-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.status-dot.online{background:var(--success-color);box-shadow:0 0 8px #34d39966}.status-dot.offline{background:var(--tg-theme-destructive-text-color);box-shadow:0 0 6px #f04d5a4d}.now-playing-card{background:var(--tg-theme-secondary-bg-color);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);padding:20px;margin-bottom:10px;position:relative;overflow:hidden}.now-playing-card.active:before{content:"";position:absolute;inset:0;background:linear-gradient(135deg,var(--glow-accent) 0%,transparent 60%);pointer-events:none}.now-playing-content{display:flex;align-items:center;gap:16px;position:relative;z-index:1}.now-playing-empty{text-align:center;padding:16px 0;color:var(--tg-theme-hint-color);font-size:15px}.now-playing-info{flex:1;min-width:0}.now-playing-title{display:block;font-size:17px;font-weight:700;line-height:1.3;margin-bottom:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:inherit;text-decoration:none}.now-playing-title:hover{color:var(--tg-theme-link-color)}.now-playing-meta{font-size:13px;color:var(--tg-theme-hint-color)}.eq{display:inline-flex;align-items:center;justify-content:center;gap:3px;height:18px;width:32px;flex-shrink:0}.eq span{display:block;width:3px;height:100%;border-radius:2px;background:var(--accent, var(--tg-theme-button-color));transform-origin:center;transform:scaleY(.18);transition:transform .35s cubic-bezier(.4,0,.2,1)}.eq:not(.paused) span{animation:eq-bounce .9s ease-in-out infinite alternate}.eq:not(.paused) span:nth-child(1){animation-delay:-.4s;animation-duration:.85s}.eq:not(.paused) span:nth-child(2){animation-delay:-.2s;animation-duration:1s}.eq:not(.paused) span:nth-child(3){animation-delay:-.6s;animation-duration:.75s}.eq:not(.paused) span:nth-child(4){animation-delay:-.1s;animation-duration:.95s}.eq:not(.paused) span:nth-child(5){animation-delay:-.3s;animation-duration:.8s}@keyframes eq-bounce{0%{transform:scaleY(.25)}50%{transform:scaleY(1)}to{transform:scaleY(.4)}}@media(prefers-reduced-motion:reduce){.eq span{animation:none!important;transform:scaleY(.5)}}.control-bar{display:flex;gap:8px;margin-bottom:12px;justify-content:center}.control-btn{display:flex;align-items:center;justify-content:center;gap:6px;padding:10px 18px;border:1px solid var(--border-subtle);border-radius:var(--radius-pill);font-family:inherit;font-size:13px;font-weight:600;cursor:pointer;background:var(--tg-theme-secondary-bg-color);color:var(--tg-theme-text-color);transition:all var(--transition-fast);user-select:none;-webkit-tap-highlight-color:transparent}.control-btn:active{transform:scale(.95);background:var(--surface-hover)}.control-btn:disabled{opacity:.3;cursor:not-allowed;transform:none}.control-btn.accent{background:var(--tg-theme-button-color);color:var(--tg-theme-button-text-color);border-color:transparent}.control-btn .icon{font-size:12px}.track-row{display:flex;align-items:center;padding:10px 0;gap:10px;border-bottom:1px solid var(--border-subtle)}.track-row:last-child{border-bottom:none;padding-bottom:0}.track-row:first-child{padding-top:0}.track-num{font-size:12px;font-weight:600;color:var(--tg-theme-hint-color);width:20px;text-align:center;flex-shrink:0}.track-info{flex:1;min-width:0}.track-row .track-title{display:block;font-weight:600;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.3;color:inherit;text-decoration:none}.track-row .track-title:hover{color:var(--tg-theme-link-color)}.track-meta{font-size:12px;color:var(--tg-theme-hint-color);margin-top:2px}.status-indicator{width:8px;height:8px;border-radius:50%;flex-shrink:0}.badge-pseudonym{display:inline-block;padding:0 6px;border-radius:4px;background:#7c6cf026;color:var(--tg-theme-link-color);font-size:11px;margin-left:4px}.track-remove{width:28px;height:28px;display:flex;align-items:center;justify-content:center;border:none;border-radius:8px;background:#f04d5a1a;color:var(--tg-theme-destructive-text-color);font-size:11px;cursor:pointer;transition:all var(--transition-fast);flex-shrink:0;-webkit-tap-highlight-color:transparent}.track-remove:active{transform:scale(.9);background:#f04d5a40}.input{width:100%;padding:10px 14px;border-radius:var(--radius-sm);border:1px solid var(--border-subtle);background:var(--tg-theme-bg-color);color:var(--tg-theme-text-color);font-family:inherit;font-size:14px;transition:border-color var(--transition-fast)}.input:focus{outline:none;border-color:var(--border-active)}.input::placeholder{color:var(--tg-theme-hint-color);opacity:.5}select.input{appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%235e5e72' stroke-width='1.5' fill='none'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:32px;cursor:pointer}select.input option{background:#1a1a2e;color:var(--tg-theme-text-color);padding:8px 12px}select.input::-ms-expand{display:none}@supports (scrollbar-color: auto){select.input{scrollbar-color:var(--tg-theme-hint-color) transparent;scrollbar-width:thin}}.field{margin-bottom:12px}.field label{display:block;font-size:12px;font-weight:500;color:var(--tg-theme-hint-color);margin-bottom:6px}.field-hint{font-size:11px;color:var(--tg-theme-hint-color);margin-top:4px;opacity:.7}.field-row{display:flex;gap:8px;align-items:flex-end}.field-row .field{flex:1;margin-bottom:0}.tabs{display:flex;gap:4px;padding:4px;background:var(--tg-theme-secondary-bg-color);border:1px solid var(--border-subtle);border-radius:var(--radius-sm);overflow-x:auto;scrollbar-width:none;margin-bottom:12px}.tabs::-webkit-scrollbar{display:none}.tab-item{padding:6px 12px;border-radius:8px;color:var(--tg-theme-hint-color);font-size:13px;font-weight:500;text-decoration:none;white-space:nowrap;transition:all var(--transition-fast);background:transparent;border:none;cursor:pointer;font-family:inherit}.tab-item:hover{color:var(--tg-theme-text-color)}.tab-item.active{background:var(--tg-theme-button-color);color:var(--tg-theme-button-text-color)}.table{width:100%;border-collapse:collapse;font-size:13px}.table th,.table td{padding:8px 10px;text-align:left;border-bottom:1px solid var(--border-subtle)}.table th{font-weight:600;color:var(--tg-theme-hint-color);font-size:11px;text-transform:uppercase;letter-spacing:.05em}.table tr:last-child td{border-bottom:none}.badge{display:inline-block;padding:2px 8px;border-radius:6px;font-size:11px;font-weight:600;background:var(--surface-hover);color:var(--tg-theme-text-color)}.badge.success{background:#34d39926;color:var(--success-color)}.badge.danger{background:#f04d5a26;color:var(--tg-theme-destructive-text-color)}.badge.warning{background:#d4a01726;color:#d4a017}.filter-bar{display:flex;gap:6px;margin-bottom:12px;overflow-x:auto;scrollbar-width:none}.filter-bar::-webkit-scrollbar{display:none}.filter-btn{padding:6px 14px;border-radius:var(--radius-pill);border:1px solid var(--border-subtle);background:transparent;color:var(--tg-theme-hint-color);font-family:inherit;font-size:12px;font-weight:500;cursor:pointer;white-space:nowrap;transition:all var(--transition-fast);-webkit-tap-highlight-color:transparent}.filter-btn.active{background:var(--tg-theme-button-color);color:var(--tg-theme-button-text-color);border-color:transparent}.filter-btn:active{transform:scale(.96)}.modal-backdrop{position:fixed;inset:0;background:#000000b3;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:999;animation:fade-in .15s ease;padding:20px}.modal{background:var(--tg-theme-secondary-bg-color);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);padding:24px;max-width:340px;width:100%;animation:modal-in .2s ease}.modal h3{font-size:17px;font-weight:700;margin-bottom:8px}.modal p{color:var(--tg-theme-hint-color);font-size:14px;line-height:1.5}.modal .btn-group{margin-top:20px;justify-content:flex-end}@keyframes modal-in{0%{opacity:0;transform:scale(.95) translateY(8px)}to{opacity:1;transform:scale(1) translateY(0)}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%);padding:12px 20px;border-radius:var(--radius-sm);background:var(--tg-theme-secondary-bg-color);border:1px solid var(--border-subtle);color:var(--tg-theme-text-color);font-family:inherit;font-size:13px;font-weight:500;z-index:1000;animation:toast-in .25s ease;box-shadow:0 8px 32px #0006;max-width:90vw}.toast.error{border-color:#f04d5a4d;color:var(--tg-theme-destructive-text-color)}@keyframes toast-in{0%{opacity:0;transform:translate(-50%) translateY(12px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.pagination{display:flex;justify-content:center;align-items:center;gap:12px;padding:16px 0}.page-info{font-size:13px;font-weight:500;color:var(--tg-theme-hint-color)}.loading{text-align:center;padding:48px 20px;color:var(--tg-theme-hint-color)}.error-msg{background:#f04d5a1a;border:1px solid rgba(240,77,90,.2);color:var(--tg-theme-destructive-text-color);padding:12px 16px;border-radius:var(--radius-sm);margin-bottom:10px;font-size:13px}.empty{text-align:center;padding:32px 16px;color:var(--tg-theme-hint-color)}.empty-state{display:flex;flex-direction:column;align-items:center;gap:12px;padding:48px 16px;text-align:center;color:var(--tg-theme-hint-color)}.user-link{color:var(--tg-theme-link-color);text-decoration:none;font-weight:500}.stats-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.stat-item{text-align:center;padding:14px 4px;background:var(--tg-theme-bg-color);border-radius:var(--radius-sm)}.stat-item.banned{background:#f04d5a14}.stat-value{font-size:22px;font-weight:700;line-height:1.2}.stat-label{font-size:11px;color:var(--tg-theme-hint-color);margin-top:4px;font-weight:500}.user-row{display:flex;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid var(--border-subtle);text-decoration:none;color:inherit;transition:opacity var(--transition-fast);-webkit-tap-highlight-color:transparent}.user-row:last-child{border-bottom:none;padding-bottom:0}.user-row:first-child{padding-top:0}.user-row:active{opacity:.7}.user-row-main{flex:1;min-width:0}.user-row-name{font-weight:600;font-size:14px;display:flex;align-items:center;gap:6px}.user-row-balance{font-size:15px;font-weight:700;color:var(--tg-theme-button-color);flex-shrink:0}.user-profile-id{font-size:12px;color:var(--tg-theme-hint-color);font-family:SF Mono,Fira Code,Consolas,monospace;margin-top:2px}.tx-row{display:flex;justify-content:space-between;align-items:center}.tx-amount{font-weight:600;font-size:13px}.tx-amount.positive{color:var(--success-color)}.tx-amount.negative{color:var(--tg-theme-destructive-text-color)}.code-mono{font-family:SF Mono,Fira Code,Consolas,monospace;letter-spacing:.05em}.fallback-status{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;background:var(--tg-theme-secondary-bg-color);border:1px solid var(--border-subtle);border-radius:var(--radius-sm);margin-bottom:12px}.fallback-status-info{flex:1}.fallback-status-label{font-size:13px;color:var(--tg-theme-hint-color)}.fallback-status-value{font-size:15px;font-weight:600;display:flex;align-items:center}.fallback-preset-card{background:var(--tg-theme-secondary-bg-color);border:1px solid var(--border-subtle);border-radius:var(--radius-sm);padding:12px 16px;margin-bottom:8px;display:flex;align-items:center;gap:12px}.fallback-preset-icon{font-size:20px;flex-shrink:0}.fallback-preset-info{flex:1;min-width:0}.fallback-preset-name{font-weight:600;font-size:15px;display:flex;align-items:center}.fallback-preset-meta{font-size:13px;color:var(--tg-theme-hint-color);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.fallback-preset-badge{font-size:11px;color:#d4a017;background:#d4a01726;padding:2px 8px;border-radius:8px;white-space:nowrap}.fallback-preset-actions{display:flex;gap:8px;flex-shrink:0}.btn-preview-active{background:var(--accent-color);color:#fff;animation:preview-pulse 1.5s ease-in-out infinite}@keyframes preview-pulse{0%,to{opacity:1}50%{opacity:.6}}.radio-result{display:flex;align-items:center;gap:10px;padding:10px 12px;background:var(--tg-theme-secondary-bg-color);border:1px solid var(--border-subtle);border-radius:8px;margin-bottom:6px}.radio-result-info{flex:1;min-width:0}.radio-result-name{font-weight:600;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.radio-result-meta{font-size:12px;color:var(--tg-theme-hint-color);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.radio-result-actions{display:flex;gap:6px;flex-shrink:0}.radio-preview-btn{background:none;border:1px solid var(--tg-theme-button-color);color:var(--tg-theme-button-color);border-radius:6px;padding:4px 10px;font-size:12px;cursor:pointer;transition:all var(--transition-fast)}.radio-preview-btn.playing{background:var(--tg-theme-button-color);color:var(--tg-theme-button-text-color)}.yt-status{display:flex;align-items:center;gap:8px;padding:10px;background:var(--tg-theme-secondary-bg-color);border:1px solid var(--border-subtle);border-radius:8px;margin-top:8px;font-size:13px}.yt-track-list{max-height:200px;overflow-y:auto;margin-top:8px}.yt-track-item{font-size:13px;padding:4px 0;color:var(--tg-theme-text-color);border-bottom:1px solid var(--border-subtle)}.color-picker-palette{display:flex;gap:8px;flex-wrap:wrap}.color-picker-swatch{width:28px;height:28px;border-radius:50%;border:2px solid transparent;cursor:pointer;transition:all var(--transition-fast);padding:0}.color-picker-swatch:hover{transform:scale(1.15)}.color-picker-swatch.active{border-color:#fff;box-shadow:0 0 0 2px var(--tg-theme-button-color)}.timeline-container{margin-top:8px}.timeline-axis{display:flex;position:relative;margin-left:32px;height:20px;margin-bottom:4px}.timeline-hour-mark{position:absolute;font-size:9px;color:var(--tg-theme-hint-color);transform:translate(-50%)}.timeline-row{display:flex;align-items:center;margin-bottom:4px}.timeline-day-label{width:32px;font-size:12px;font-weight:600;color:var(--tg-theme-hint-color);flex-shrink:0;text-align:center;cursor:pointer;position:relative;user-select:none}.timeline-track{flex:1;height:40px;background:var(--tg-theme-secondary-bg-color);border-radius:6px;position:relative;border:1px solid var(--border-subtle);cursor:crosshair;touch-action:none;overflow:visible}.timeline-slot{position:absolute;top:3px;bottom:3px;border-radius:4px;display:flex;align-items:center;overflow:visible;cursor:pointer;transition:filter .1s;box-sizing:border-box;min-width:2px}.timeline-slot:hover{filter:brightness(1.2);z-index:15}.timeline-slot.selected{outline:2px solid #fff;outline-offset:1px;z-index:10;filter:brightness(1.2)}.timeline-slot-label{padding:0 6px;font-size:10px;color:#fff;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;pointer-events:none;max-width:100%;box-sizing:border-box}.timeline-slot-delete{position:absolute;top:-6px;right:-6px;width:18px;height:18px;background:var(--tg-theme-destructive-text-color);color:#fff;border-radius:50%;font-size:11px;display:flex;align-items:center;justify-content:center;cursor:pointer;opacity:0;transition:opacity .1s;z-index:20;border:none;font-weight:700;line-height:1;padding:0}.timeline-slot:hover .timeline-slot-delete{opacity:1}.timeline-detail-panel{display:flex;align-items:center;gap:14px;padding:12px 16px;margin-top:10px;background:var(--tg-theme-secondary-bg-color);border:1px solid var(--border-subtle);border-radius:var(--radius-sm);flex-wrap:wrap}.timeline-detail-info{min-width:100px}.timeline-detail-name{font-size:14px;font-weight:700;color:var(--tg-theme-text-color)}.timeline-detail-day{font-size:12px;color:var(--tg-theme-hint-color)}.timeline-detail-field{display:flex;flex-direction:column;gap:2px}.timeline-detail-field label{font-size:10px;color:var(--tg-theme-hint-color);text-transform:uppercase;letter-spacing:.5px}.timeline-detail-field .input{width:100px;padding:4px 8px;font-size:13px}.timeline-detail-field input[type=time]::-webkit-calendar-picker-indicator{filter:invert(1);opacity:.7;cursor:pointer}.timeline-detail-field input[type=time]::-webkit-calendar-picker-indicator:hover{opacity:1}.timeline-detail-field select.input{width:auto;min-width:120px}.timeline-legend{display:flex;gap:14px;margin-top:10px;flex-wrap:wrap}.timeline-legend-item{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--tg-theme-hint-color)}.timeline-legend-dot{width:10px;height:10px;border-radius:3px;flex-shrink:0}.timeline-hints{font-size:11px;color:var(--tg-theme-hint-color);opacity:.6;margin-top:6px}.timeline-day-label:hover,.timeline-day-label.active{color:var(--tg-theme-text-color)}.timeline-day-menu{position:absolute;top:100%;left:0;background:var(--tg-theme-secondary-bg-color);border:1px solid var(--border-subtle);border-radius:var(--radius-sm);padding:4px 0;z-index:50;min-width:140px;box-shadow:0 4px 16px #0006}.timeline-day-menu-item{display:block;width:100%;padding:6px 12px;border:none;background:none;color:var(--tg-theme-text-color);font-size:13px;text-align:left;cursor:pointer;font-family:inherit}.timeline-day-menu-item:hover{background:var(--tg-theme-button-color);color:var(--tg-theme-button-text-color)}.timeline-day-menu-danger{color:var(--tg-theme-destructive-text-color)}.timeline-day-menu-danger:hover{background:var(--tg-theme-destructive-text-color);color:#fff}.timeline-slot:hover .timeline-resize-handle{opacity:1}.timeline-resize-handle{position:absolute;top:-2px;bottom:-2px;width:12px;opacity:0;cursor:col-resize;z-index:16;transition:opacity .1s}.timeline-resize-handle:after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:3px;height:18px;background:#fffc;border-radius:2px;box-shadow:0 0 4px #0000004d}.timeline-resize-handle:hover:after{background:#fff;box-shadow:0 0 6px #7c6cf099}.timeline-resize-left{left:-4px}.timeline-resize-right{right:-4px}.timeline-slot-preview{background:#7c6cf04d!important;border:1px dashed rgba(124,108,240,.7);pointer-events:none;z-index:3;justify-content:center}.timeline-slot-preview.timeline-slot-preview-time-only{background:transparent!important;border:none;z-index:25}.timeline-drag-time{position:absolute;top:-18px;left:50%;transform:translate(-50%);font-size:11px;font-weight:600;color:#fff;background:#1e1e32e6;padding:1px 6px;border-radius:4px;white-space:nowrap;pointer-events:none}.drawer-backdrop{position:fixed;inset:0;background:#00000059;z-index:900;display:flex;justify-content:flex-end}.drawer{width:480px;max-width:100%;height:100%;background:var(--tg-theme-bg-color);border-left:1px solid var(--border-subtle);box-shadow:-4px 0 16px #00000026;display:flex;flex-direction:column;overflow-y:auto;animation:drawer-slide-in .22s ease-out}@keyframes drawer-slide-in{0%{transform:translate(100%)}to{transform:translate(0)}}.drawer-header{display:flex;align-items:flex-start;gap:10px;padding:14px 16px;border-bottom:1px solid var(--border-subtle);background:var(--surface-color);position:sticky;top:0;z-index:2}.drawer-header-body{flex:1;min-width:0}.drawer-header-label{font-size:10px;text-transform:uppercase;letter-spacing:.5px;color:var(--text-muted);font-weight:600}.drawer-header-title{font-family:monospace;font-size:14px;font-weight:600;word-break:break-all;margin-top:2px}.drawer-header-subtitle{font-size:13px;color:var(--tg-theme-text-color);margin-top:3px;line-height:1.3}.drawer-header-channel{font-size:11px;color:var(--text-muted);margin-top:3px;font-family:monospace;word-break:break-all}.drawer-back-mobile,.drawer-close-desktop{background:none;border:none;color:var(--text-muted);cursor:pointer;padding:4px;border-radius:6px;display:flex;align-items:center;justify-content:center}.drawer-back-mobile:hover,.drawer-close-desktop:hover{background:var(--surface-hover);color:var(--tg-theme-text-color)}.drawer-back-mobile{display:none}.drawer-loading{padding:24px;text-align:center;color:var(--text-muted);display:flex;gap:8px;justify-content:center;align-items:center}.drawer-loading .spin{animation:drawer-spin 1s linear infinite}@keyframes drawer-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.drawer-section{padding:12px 16px;border-bottom:1px solid var(--border-subtle)}.drawer-section-label{font-size:10px;text-transform:uppercase;letter-spacing:.5px;color:var(--text-muted);font-weight:600;margin-bottom:8px}.drawer-section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.drawer-empty{color:var(--text-muted);font-size:12px;font-style:italic;padding:6px 0}.drawer-verdict-blocked{background:#dc3c3c14}.drawer-verdict-allowed{background:#3caa5a14}.drawer-verdict-header{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:6px}.drawer-badge{padding:3px 8px;border-radius:4px;font-size:10px;font-weight:700;letter-spacing:.3px;color:#fff}.drawer-badge-blocked{background:#c33}.drawer-badge-allowed{background:#2a7}.drawer-chip{padding:2px 6px;border-radius:4px;font-size:10px;background:var(--surface-hover);color:var(--tg-theme-text-color)}.drawer-chip-muted{color:var(--text-muted)}.drawer-reason{font-size:13px;line-height:1.4;margin:4px 0}.drawer-verdict-meta{font-size:11px;color:var(--text-muted);margin-top:4px}.drawer-transcript{background:var(--surface-color);border:1px solid var(--border-subtle);border-radius:6px;padding:10px;font-size:12px;line-height:1.5;max-height:180px;overflow-y:auto;white-space:pre-wrap;word-break:break-word}.drawer-transcript mark{background:#ffe4a3;color:#222;padding:0 2px;border-radius:2px}.drawer-textarea{width:100%;background:var(--surface-color);border:1px solid var(--border-subtle);border-radius:6px;padding:8px;font-family:inherit;font-size:12px;line-height:1.5;color:var(--tg-theme-text-color);resize:vertical;box-sizing:border-box}.drawer-inline-actions{display:flex;gap:6px;margin-top:8px;flex-wrap:wrap}.drawer-timeline{max-height:240px;overflow-y:auto}.drawer-timeline-event{display:flex;gap:8px;flex-wrap:wrap;padding:5px 4px;border-bottom:1px dashed var(--border-subtle);font-size:12px;align-items:center}.drawer-timeline-event.highlighted{background:#fff8d099;border-radius:4px}.drawer-timeline-time{font-size:11px;color:var(--text-muted);min-width:100px}.drawer-timeline-action{font-family:monospace;font-size:11px;color:var(--tg-theme-text-color)}.drawer-timeline-verdict,.drawer-timeline-chip{padding:1px 6px;border-radius:3px;background:var(--surface-hover);font-size:10px}.drawer-actions{display:flex;gap:6px;flex-wrap:wrap}.drawer-actions .btn,.drawer-actions .btn-outline{padding:8px 12px;font-size:12px;display:inline-flex;align-items:center;gap:6px}.drawer-json{background:var(--surface-color);border:1px solid var(--border-subtle);border-radius:6px;padding:10px;font-size:11px;line-height:1.4;max-height:260px;overflow:auto;white-space:pre}.drawer-event-header{display:flex;flex-direction:column;gap:4px;font-size:12px;margin-bottom:10px}@media(max-width:640px){.drawer{width:100%;border-left:none;animation:drawer-slide-up .22s ease-out}@keyframes drawer-slide-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}.drawer-close-desktop{display:none}.drawer-back-mobile{display:flex}}.settings-sections{display:flex;flex-direction:column;gap:20px;margin-top:12px}.settings-sections.is-dimmed>.settings-section{opacity:.55;pointer-events:none;filter:saturate(.5)}.settings-section{display:flex;flex-direction:column;gap:8px}.settings-section-title{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--tg-theme-hint-color);margin:0;padding:0 4px;font-weight:600}.settings-disabled-hint{background:color-mix(in srgb,var(--tg-theme-destructive-text-color) 12%,transparent);color:var(--tg-theme-destructive-text-color);border:1px solid color-mix(in srgb,var(--tg-theme-destructive-text-color) 30%,transparent);padding:10px 14px;border-radius:10px;font-size:13px;margin:12px 0}.settings-hint{margin:4px 0 0;padding:0 4px;color:var(--tg-theme-hint-color);font-size:12px;line-height:1.4;font-style:italic}.sidebar-sub{display:flex;flex-direction:column;gap:2px;padding:2px 0 4px 14px}.sidebar-subitem{display:block;padding:7px 12px;border-radius:6px;color:var(--tg-theme-hint-color);font-size:13px;text-decoration:none;min-height:32px}.sidebar-subitem:hover{background:#ffffff0a;color:var(--tg-theme-text-color)}.sidebar-subitem.active{background:color-mix(in srgb,var(--tg-theme-button-color) 18%,transparent);color:var(--tg-theme-button-color)}:root{--bg: #0d0e12;--surface: #1a1c22;--surface-2: #232631;--text: #ffffff;--hint: #8b8e96;--accent: #4ea9ff;--accent-soft: rgba(78, 169, 255, .18);--danger: #ff5757;--danger-soft: rgba(255, 87, 87, .18);--success: #4cd964;--warning: #ffb84d;--border: rgba(255, 255, 255, .08);--shadow: 0 4px 20px rgba(0, 0, 0, .35);--radius: 12px;--radius-sm: 8px;--tab-h: 64px;--topbar-h: 56px;--sidebar-w: 280px}[data-tg-theme]{--bg: var(--tg-bg-color, #0d0e12);--surface: var(--tg-section-bg-color, var(--tg-secondary-bg-color, #1a1c22));--surface-2: var(--tg-secondary-bg-color, #232631);--text: var(--tg-text-color, #ffffff);--hint: var(--tg-hint-color, #8b8e96);--accent: var(--tg-button-color, #4ea9ff);--danger: var(--tg-destructive-text-color, #ff5757)}@media(prefers-color-scheme:light){:root:not([data-tg-theme=dark]){--bg: #f3f4f6;--surface: #ffffff;--surface-2: #e5e7eb;--text: #111418;--hint: #6b7280;--border: rgba(0, 0, 0, .08)}}*{box-sizing:border-box}html,body,#app{height:100%}body{margin:0;background:var(--bg);color:var(--text);font:15px/1.4 -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;-webkit-font-smoothing:antialiased}button,input,textarea,select{font:inherit;color:inherit}button{cursor:pointer}a{color:var(--accent);text-decoration:none}.btn{background:var(--accent);color:var(--bg);border:none;padding:10px 16px;border-radius:var(--radius-sm);font-weight:500;transition:opacity .15s}.btn:hover:not(:disabled){opacity:.85}.btn:disabled{opacity:.4;cursor:not-allowed}.btn.ghost{background:transparent;color:var(--text);border:1px solid var(--border)}.btn.danger{background:var(--danger);color:#fff}.empty-state{display:flex;flex-direction:column;align-items:center;gap:12px;padding:48px 16px;text-align:center;color:var(--hint)}.spinner{width:24px;height:24px;border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.toast{position:fixed;bottom:80px;left:50%;transform:translate(-50%);background:var(--surface-2);color:var(--text);padding:10px 16px;border-radius:var(--radius-sm);box-shadow:var(--shadow);z-index:100;max-width:90vw}.toast.error{background:var(--danger);color:#fff}.modal-backdrop{position:fixed;inset:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:200;padding:16px}.modal{background:var(--surface);border-radius:var(--radius);width:100%;max-width:480px;max-height:90vh;overflow:auto}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:16px;border-bottom:1px solid var(--border);font-weight:500}.modal-close{background:none;border:none;color:var(--hint);padding:4px}.modal-body{padding:16px}.modal-body .btn-row{display:flex;gap:8px;justify-content:flex-end;margin-top:16px}.period-toggle{display:inline-flex;background:var(--surface-2);border-radius:var(--radius-sm);padding:2px}.period-toggle button{background:none;border:none;color:var(--hint);padding:6px 14px;border-radius:calc(var(--radius-sm) - 2px);font-size:13px}.period-toggle button.active{background:var(--accent);color:var(--bg)}.app-shell{min-height:100vh}.app-shell.desktop{display:grid;grid-template-columns:var(--sidebar-w) 1fr}.app-shell.mobile{display:flex;flex-direction:column}.app-main{padding:16px;padding-bottom:calc(var(--tab-h) + 16px + var(--tg-safe-area-inset-bottom, env(safe-area-inset-bottom, 0px)) + var(--tg-content-safe-area-inset-bottom, 0px));max-width:720px;width:100%;margin:0 auto}.app-shell.desktop .app-main{padding-bottom:16px}.sidebar{background:var(--surface);border-right:1px solid var(--border);padding:16px;height:100vh;position:sticky;top:0;overflow-y:auto}.sidebar-brand{font-size:22px;font-weight:700;padding:8px 12px 24px}.nav-item{display:flex;align-items:center;gap:12px;padding:10px 12px;color:var(--text);border-radius:var(--radius-sm);margin-bottom:2px;background:none;border:none;width:100%;text-align:left}.nav-item:hover{background:var(--surface-2)}.nav-item.active{background:var(--accent-soft);color:var(--accent)}.nav-item.logout{margin-top:24px;color:var(--hint)}.topbar{position:sticky;top:0;background:var(--surface);border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;padding:0 16px;z-index:50;height:calc(var(--topbar-h) + var(--tg-safe-area-inset-top, env(safe-area-inset-top, 0px)) + var(--tg-content-safe-area-inset-top, 0px));padding-top:calc(var(--tg-safe-area-inset-top, env(safe-area-inset-top, 0px)) + var(--tg-content-safe-area-inset-top, 0px));padding-left:calc(16px + var(--tg-safe-area-inset-left, env(safe-area-inset-left, 0px)));padding-right:calc(16px + var(--tg-safe-area-inset-right, env(safe-area-inset-right, 0px)))}.topbar-brand{font-weight:700;font-size:17px}.topbar-menu{background:none;border:none;color:var(--text);padding:8px}.bottom-tabs{position:fixed;bottom:0;left:0;right:0;background:var(--surface);border-top:1px solid var(--border);display:flex;z-index:50;padding-bottom:calc(var(--tg-safe-area-inset-bottom, env(safe-area-inset-bottom, 0px)) + var(--tg-content-safe-area-inset-bottom, 0px))}.tab{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;padding:8px 0;color:var(--hint);font-size:11px}.tab.active{color:var(--accent)}.drawer-backdrop{position:fixed;inset:0;background:#0006;z-index:100}.drawer{position:absolute;top:0;right:0;bottom:0;width:min(320px,85vw);background:var(--surface);padding:16px;overflow-y:auto;padding-top:calc(16px + var(--tg-safe-area-inset-top, env(safe-area-inset-top, 0px)) + var(--tg-content-safe-area-inset-top, 0px));padding-bottom:calc(16px + var(--tg-safe-area-inset-bottom, env(safe-area-inset-bottom, 0px)) + var(--tg-content-safe-area-inset-bottom, 0px));animation:slideIn .2s ease-out}@keyframes slideIn{0%{transform:translate(100%)}to{transform:translate(0)}}.drawer-section{padding:8px 0}.drawer-section+.drawer-section{border-top:1px solid var(--border);margin-top:8px}.drawer-heading{font-size:11px;text-transform:uppercase;color:var(--hint);padding:8px 12px}
