:root{--bg: #0f1115;--surface: #151922;--surface-2: #1b2130;--border: #2a3140;--text: #e6eaf2;--muted: #a8b0c2;--accent: #3b82f6;--success: #22c55e;--warning: #f59e0b;--error: #ef4444}*{box-sizing:border-box}html,body,#root{width:100%;min-height:100%;margin:0}body{color:var(--text);font-family:Space Grotesk,sans-serif;background:radial-gradient(circle at 0% 0%,#1f2738 0%,transparent 36%),radial-gradient(circle at 100% 100%,#131a29 0%,transparent 40%),var(--bg)}.layout-root{display:grid;grid-template-columns:370px 1fr;gap:14px;min-height:100vh;padding:14px}.card{border:1px solid var(--border);background:linear-gradient(180deg,var(--surface) 0%,#131722 100%);border-radius:14px;box-shadow:inset 0 1px #ffffff0a}.left-panel{display:flex;flex-direction:column;gap:12px;overflow-y:auto;max-height:100vh}.app-heading{padding:16px}.app-heading h1{margin:0;font-size:1.4rem;letter-spacing:.02em}.app-heading p{margin:8px 0 0;color:var(--muted);font-size:.86rem}.controls-card{padding:14px;display:flex;flex-direction:column;gap:12px}.field-row{display:flex;flex-direction:column;gap:6px}.field-row label{color:var(--muted);font-size:.77rem;text-transform:uppercase;letter-spacing:.08em}input,select,button{font:inherit}input[type=text],input[type=number],select,input[type=file]{width:100%;border:1px solid var(--border);background:var(--surface-2);color:var(--text);border-radius:10px;padding:9px 10px}button{border:1px solid transparent;border-radius:10px;padding:9px 10px;cursor:pointer;transition:.12s ease}button:disabled{opacity:.55;cursor:not-allowed}.primary{background:linear-gradient(180deg,#4d94ff,var(--accent));color:#fff;font-weight:600}.secondary{background:#232a3a;color:var(--text);border-color:var(--border)}.danger{background:transparent;color:var(--error);border-color:var(--error)}.danger:hover{background:#ef44441f}.compact-btn{padding:4px 10px;font-size:.78rem;white-space:nowrap}.file-browse{width:100%;background:var(--surface-2);border:1px dashed var(--border);color:var(--muted);border-radius:10px;padding:9px 10px;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;transition:.12s ease}.file-browse:hover{border-color:var(--accent);color:var(--text)}.toggle-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.toggle{background:#232a3a;border-color:var(--border);color:var(--muted)}.toggle.active{border-color:#4d94ff;color:var(--text)}.split-row{display:grid;grid-template-columns:1fr 1fr;gap:8px;align-items:end}.number-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.dds-download-link{display:block;text-align:center;background:var(--surface-2);border:1px solid var(--success);color:var(--success);border-radius:10px;padding:9px 10px;font-size:.86rem;font-weight:600;text-decoration:none;transition:.12s ease}.dds-download-link:hover{background:#16261d}.toggle-line{display:flex;justify-content:space-between;align-items:center;font-size:.86rem;color:var(--muted)}.toggle-line.compact-inline{background:var(--surface-2);border:1px solid var(--border);border-radius:10px;padding:10px}.right-panel{display:grid;grid-template-rows:1fr 260px;gap:12px}.viewport-card{display:flex;flex-direction:column;padding:12px;min-height:560px}.section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.section-header h2,.section-header h3{margin:0;font-size:.98rem;font-weight:600}.section-header span{font-family:IBM Plex Mono,monospace;color:var(--muted);font-size:.78rem}.viewport-shell{position:relative;flex:1;border:1px solid var(--border);border-radius:12px;overflow:hidden}.viewport-overlay-error{position:absolute;left:16px;right:16px;bottom:16px;border:1px solid #8b2635;background:#260c13e0;border-radius:12px;padding:12px;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.viewport-overlay-error h4{margin:0 0 6px;font-size:.9rem}.viewport-overlay-error p{margin:0;color:#f6c9d0;font-size:.78rem;line-height:1.4}.viewport-overlay-error p+p{margin-top:6px}.status-card{padding:12px;display:flex;flex-direction:column}.status-list{overflow:auto;display:flex;flex-direction:column;gap:8px}.status-item{border:1px solid var(--border);border-left-width:3px;border-radius:10px;padding:8px 10px;background:#141927}.status-item p{margin:0;font-size:.84rem}.status-item small{color:var(--muted);font-family:IBM Plex Mono,monospace;font-size:.72rem}.status-info{border-left-color:var(--accent)}.status-success{border-left-color:var(--success)}.status-warning{border-left-color:var(--warning)}.status-error{border-left-color:var(--error)}.muted{color:var(--muted);font-size:.82rem}.preset-panel{padding:0}.preset-toggle{display:flex;justify-content:space-between;align-items:center;width:100%;padding:12px 14px;background:transparent;color:var(--text);font-weight:600;font-size:.88rem;border:none;border-radius:14px}.preset-toggle:hover{background:var(--surface-2)}.preset-chevron{font-size:.7rem;color:var(--muted)}.preset-empty{margin:0;padding:0 14px 12px;color:var(--muted);font-size:.8rem}.preset-list{list-style:none;margin:0;padding:0 10px 10px;display:flex;flex-direction:column;gap:6px;max-height:320px;overflow-y:auto}.preset-item{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 10px;border:1px solid var(--border);border-radius:10px;background:var(--surface-2)}.preset-item-info{display:flex;flex-direction:column;gap:2px;min-width:0;overflow:hidden}.preset-item-info strong{font-size:.84rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.preset-item-meta{color:var(--muted);font-size:.72rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.preset-item-actions{display:flex;gap:4px;flex-shrink:0}.auth-loading{display:flex;align-items:center;justify-content:center;min-height:100vh;color:var(--muted)}.login-screen{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:24px}.login-card{max-width:420px;padding:32px;text-align:center}.login-card h1{margin:0 0 12px}.login-card p{color:var(--muted);margin:0 0 20px}.discord-login-btn{display:inline-block;background:#5865f2;color:#fff;text-decoration:none;padding:10px 20px;border-radius:10px;font-weight:600}.discord-login-btn:hover{background:#4752c4}.user-bar{display:flex;align-items:center;gap:8px;padding:10px 14px}.user-bar.compact{padding:0}.user-avatar{width:24px;height:24px;border-radius:50%;object-fit:cover}.user-name{font-size:.84rem;font-weight:600}.role-badge{font-size:.7rem;text-transform:uppercase;letter-spacing:.06em;padding:2px 8px;border-radius:999px;border:1px solid var(--border);color:var(--muted)}.role-badge.role-premium{color:var(--warning);border-color:var(--warning)}.role-badge.role-admin{color:var(--accent);border-color:var(--accent)}.section-header-right{display:flex;align-items:center;gap:12px}.free-plan-note{font-size:.8rem;color:var(--muted);background:var(--surface-2);border:1px dashed var(--border);border-radius:10px;padding:9px 10px}.admin-panel{max-width:1080px;margin:0 auto;padding:24px 14px;display:flex;flex-direction:column;gap:16px}.admin-tabs{display:flex;gap:4px;border-bottom:1px solid var(--border)}.admin-tab{background:transparent;border:none;border-radius:10px 10px 0 0;color:var(--muted);padding:10px 16px;font-weight:600;font-size:.86rem}.admin-tab:hover{color:var(--text)}.admin-tab.active{color:var(--text);background:var(--surface);border:1px solid var(--border);border-bottom:1px solid var(--surface);margin-bottom:-1px}.admin-section{padding:16px}.admin-stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px}.admin-stat-tile{border:1px solid var(--border);background:linear-gradient(180deg,var(--surface) 0%,#131722 100%);border-radius:14px;padding:16px;display:flex;flex-direction:column;gap:4px}.admin-stat-tile.warn{border-color:var(--warning)}.admin-stat-value{font-size:1.8rem;font-weight:700;font-family:IBM Plex Mono,monospace}.admin-stat-label{color:var(--muted);font-size:.78rem;text-transform:uppercase;letter-spacing:.06em}.admin-stat-sub{color:var(--muted);font-size:.74rem}.admin-search{width:100%;border:1px solid var(--border);background:var(--surface-2);color:var(--text);border-radius:10px;padding:9px 10px;margin:12px 0}.admin-grid-select,.admin-days-input{width:100%;height:30px;border:1px solid var(--border);background:var(--surface-2);color:var(--text);border-radius:6px;padding:0 6px;font-size:.78rem}.admin-days-input::placeholder{color:var(--muted)}.admin-days-input:disabled{opacity:.35}.admin-actions-cell{display:flex;align-items:center;gap:6px;flex-wrap:nowrap;overflow:hidden}.admin-actions-cell .compact-btn{flex:0 0 auto}.admin-error{color:var(--error);font-size:.84rem}.admin-table{width:100%;table-layout:fixed;border-collapse:collapse;font-size:.84rem}.admin-table th{text-align:left;color:var(--muted);font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;padding:6px 8px;border-bottom:1px solid var(--border)}.admin-table td{padding:6px 8px;height:44px;border-bottom:1px solid var(--border);vertical-align:middle;overflow:hidden;white-space:nowrap}.admin-table tbody tr:nth-child(2n){background:#ffffff04}.admin-table tbody tr:hover{background:#4d94ff0f}.admin-grid{border:1px solid var(--border)}.admin-grid th,.admin-grid td{border-right:1px solid var(--border)}.admin-grid th:last-child,.admin-grid td:last-child{border-right:none}.admin-user-cell{display:flex;align-items:center;gap:8px;min-width:0}.admin-username-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.admin-discord-id{color:var(--muted);font-family:IBM Plex Mono,monospace;font-size:.78rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block}.admin-pagination{display:flex;align-items:center;justify-content:center;gap:12px;margin-top:12px;color:var(--muted);font-size:.8rem}.admin-new-preset{display:flex;gap:8px;margin:12px 0}.admin-new-preset input{flex:1;border:1px solid var(--border);background:var(--surface-2);color:var(--text);border-radius:10px;padding:9px 10px}.admin-grid-input{width:100%;height:30px;border:1px solid var(--border);background:var(--surface-2);color:var(--text);border-radius:6px;padding:0 8px;font-size:.78rem}.admin-file-input-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.admin-file-btn{width:100%}@media(max-width:1080px){.layout-root{grid-template-columns:1fr}.right-panel{grid-template-rows:minmax(440px,62vh) 260px}}@media(max-width:640px){.split-row,.number-grid,.toggle-grid{grid-template-columns:1fr}.viewport-card{min-height:420px}}
