:root{--bg: #0d0f14;--panel: #161a23;--panel-2: #1d2230;--border: #2a3140;--text: #e8ecf3;--muted: #9aa6b8;--accent: #3ddc84;--accent-2: #5b9dff;--danger: #ff6b6b;--warn: #ffc233;--radius: 14px;--shadow: 0 8px 30px rgba(0, 0, 0, .35)}*{box-sizing:border-box}body{margin:0;font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:radial-gradient(1200px 600px at 80% -10%,#1a2030 0%,var(--bg) 60%);color:var(--text);-webkit-font-smoothing:antialiased}.app{max-width:1140px;margin:0 auto;padding:28px 22px 80px}.topbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:26px}.brand{display:flex;align-items:center;gap:12px;font-weight:800;font-size:22px;letter-spacing:-.02em}.brand .dot{width:14px;height:14px;border-radius:50%;background:var(--accent);box-shadow:0 0 14px var(--accent)}.brand small{color:var(--muted);font-weight:500;font-size:13px}button,.button-link{font:inherit;cursor:pointer;border:1px solid var(--border);background:var(--panel-2);color:var(--text);padding:9px 14px;border-radius:10px;transition:.15s ease;text-decoration:none;display:inline-flex;align-items:center;justify-content:center}button:hover,.button-link:hover{border-color:var(--accent-2);transform:translateY(-1px)}button:disabled{opacity:.45;cursor:not-allowed;transform:none}button.primary{background:var(--accent);color:#06210f;border-color:transparent;font-weight:700}.button-link.ghost,button.ghost{background:transparent}button.danger{border-color:#5a2a2a;color:var(--danger)}.button-link.sm,button.sm{padding:6px 10px;font-size:13px}.card{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:18px;box-shadow:var(--shadow)}.grid{display:grid;gap:14px}.grid.cols-2{grid-template-columns:repeat(2,1fr)}.grid.cols-3{grid-template-columns:repeat(3,1fr)}@media (max-width: 820px){.grid.cols-2,.grid.cols-3{grid-template-columns:1fr}}.muted{color:var(--muted)}.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.spacer{flex:1}h1,h2,h3{letter-spacing:-.02em}.section-title{font-size:15px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin:26px 0 12px}input[type=text],input[type=password],input[type=number],textarea,select{width:100%;background:var(--panel-2);border:1px solid var(--border);color:var(--text);border-radius:10px;padding:10px 12px;font:inherit}textarea{resize:vertical;min-height:70px}.auth-chip{display:flex;align-items:center;gap:10px;flex-wrap:wrap;border:1px solid var(--border);border-radius:999px;padding:5px 6px 5px 12px;background:#1d2230c7;font-size:13px}.login-shell{min-height:62vh;display:grid;place-items:center}.login-card{width:min(430px,100%);display:flex;flex-direction:column;gap:16px}.field-label{display:flex;flex-direction:column;gap:7px;color:var(--muted);font-size:13px}.field-label input{margin-top:0}.quota-badge{border:1px solid #1f5a37;color:var(--accent);border-radius:999px;padding:5px 10px;font-size:12px;font-weight:700;white-space:nowrap}.quota-badge.blocked{color:var(--danger);border-color:#5a2a2a}.limit-note{color:var(--danger);font-size:13px;margin-top:10px}.project-card{display:flex;flex-direction:column;gap:10px;cursor:pointer}.project-card:hover{border-color:var(--accent-2)}.badge{display:inline-block;padding:3px 9px;border-radius:999px;font-size:12px;font-weight:600;border:1px solid var(--border)}.badge.created{color:var(--muted)}.badge.titles,.badge.title_selected{color:var(--accent-2);border-color:#294066}.badge.slides,.badge.slides_approved{color:var(--warn);border-color:#5a4d1f}.badge.image_prompts,.badge.images{color:#d08bff;border-color:#4a2f5e}.badge.done{color:var(--accent);border-color:#1f5a37}.badge.pending{color:var(--warn);border-color:#5a4d1f}.stepper{display:flex;gap:8px;margin:18px 0 24px;flex-wrap:wrap}.step{display:flex;align-items:center;gap:8px;padding:8px 12px;border-radius:999px;border:1px solid var(--border);font-size:13px;color:var(--muted)}.step.active{color:var(--text);border-color:var(--accent);background:#3ddc8414}.step.done{color:var(--accent)}.step.clickable{cursor:pointer}.step.done.locked{cursor:not-allowed;opacity:.55}.step .num{width:20px;height:20px;border-radius:50%;background:var(--panel-2);display:grid;place-items:center;font-size:12px}.step.active .num{background:var(--accent);color:#06210f}.title-item{display:flex;gap:12px;align-items:flex-start;padding:12px;border-radius:10px;border:1px solid transparent}.title-item:hover{background:var(--panel-2)}.title-item.selected{border-color:var(--accent);background:#3ddc8412}.slide-card{display:flex;flex-direction:column;gap:10px}.slide-head{display:flex;align-items:center;gap:10px}.pill{font-size:11px;padding:2px 8px;border-radius:999px;border:1px solid var(--border);color:var(--muted)}.pill.approved{color:var(--accent);border-color:#1f5a37}.pill.rejected{color:var(--danger);border-color:#5a2a2a}.pill.pending{color:var(--warn);border-color:#5a4d1f}.cover-variant{padding:12px;border-radius:10px;border:1px solid var(--border);cursor:pointer}.cover-variant.selected{border-color:var(--accent);background:#3ddc8412}.cover-variant .tag{font-size:11px;color:var(--accent-2);font-weight:700}.thumb{width:100%;aspect-ratio:4/5;object-fit:cover;border-radius:10px;border:1px solid var(--border);background:var(--panel-2)}.thumb-button{display:block;width:100%;padding:0;border:none;background:transparent;cursor:zoom-in;border-radius:10px}.thumb-button:hover .thumb{border-color:var(--accent-2)}.thumb-empty{display:grid;place-items:center;color:var(--muted);font-size:13px}.lightbox{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;background:#04060aeb;display:grid;grid-template-columns:auto 1fr auto;grid-template-rows:auto 1fr;gap:12px;padding:16px}.lightbox-toolbar{grid-column:1 / -1;display:flex;align-items:center;gap:10px}.lightbox-title{font-weight:600;font-size:15px}.lightbox-stage{grid-column:2;display:flex;align-items:center;justify-content:center;min-height:0;min-width:0}.lightbox-image{max-width:min(92vw,720px);max-height:calc(100vh - 120px);width:auto;height:auto;object-fit:contain;border-radius:12px;border:1px solid var(--border);box-shadow:var(--shadow)}.lightbox-nav{align-self:center;width:48px;height:48px;border-radius:50%;font-size:28px;line-height:1;padding:0;background:#1d2230e6;border:1px solid var(--border)}.lightbox-nav:disabled{opacity:.25;cursor:not-allowed;transform:none}.lightbox-nav.prev{grid-column:1}.lightbox-nav.next{grid-column:3}@media (max-width: 640px){.lightbox{grid-template-columns:1fr;grid-template-rows:auto 1fr auto}.lightbox-nav.prev,.lightbox-nav.next{grid-column:1;justify-self:center}.lightbox-stage{grid-column:1;grid-row:2}.lightbox-nav.prev,.lightbox-nav.next{grid-row:3}}.cover-upload{display:flex;flex-direction:column;gap:6px}.upload-label{display:inline-flex;align-items:center;justify-content:center;border:1px dashed var(--border);border-radius:10px;padding:8px 10px;font-size:12px;color:var(--accent);background:#3ddc840f;cursor:pointer}.upload-label:hover{border-color:var(--accent)}.upload-label.disabled{opacity:.5;cursor:not-allowed}.upload-label input{display:none}.toast{position:fixed;bottom:22px;left:50%;transform:translate(-50%);background:var(--panel-2);border:1px solid var(--border);padding:12px 18px;border-radius:10px;box-shadow:var(--shadow);z-index:50}.toast.error{border-color:#5a2a2a;color:var(--danger)}.progress{height:8px;background:var(--panel-2);border-radius:999px;overflow:hidden}.progress>span{display:block;height:100%;background:var(--accent);transition:width .3s ease}.spinner{width:16px;height:16px;border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .7s linear infinite;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.center-empty{text-align:center;padding:60px 0;color:var(--muted)}.skeleton{background:linear-gradient(90deg,var(--panel-2) 25%,var(--border) 50%,var(--panel-2) 75%);background-size:400% 100%;animation:shimmer 1.6s ease-in-out infinite;border-radius:10px}@keyframes shimmer{0%{background-position:100% 0}to{background-position:-100% 0}}.skeleton-thumb{width:100%;aspect-ratio:4/5}.skeleton-line{height:14px;margin:6px 0}.skeleton-line.short{width:45%}.skeleton-line.medium{width:65%}.skeleton-pill{height:20px;width:60px;border-radius:999px}
