@import"https://fonts.googleapis.com/css2?family=Manrope:wght@400;500;600;700&family=Sora:wght@500;600;700&display=swap";:root{color-scheme:dark;--bg: #0d0f0e;--bg-surface: #141918;--panel: #1c2220;--surface-overlay: #242c29;--ink: #e8ede9;--ink-soft: #9aa89c;--ink-muted: #5c6b5f;--brand: #3ecf8e;--brand-dim: #1a6b48;--brand-soft: #0f2d1f;--brand-glow: rgba(62, 207, 142, .15);--line: #2a332f;--line-strong: #3d4f47;--danger: #f87171;--danger-soft: #2d1515;--status-ready-bg: rgba(62, 207, 142, .12);--status-ready-text: #3ecf8e;--status-ready-border: rgba(62, 207, 142, .25);--status-processing-bg: rgba(96, 165, 250, .12);--status-processing-text: #60a5fa;--status-processing-border: rgba(96, 165, 250, .25);--status-failed-bg: rgba(248, 113, 113, .12);--status-failed-text: #f87171;--status-failed-border: rgba(248, 113, 113, .25);--status-pending-bg: rgba(251, 191, 36, .1);--status-pending-text: #f59e0b;--status-pending-border: rgba(251, 191, 36, .2);--radius: 12px;--radius-sm: 6px;--radius-lg: 18px;--display: "Sora", "Manrope", "Segoe UI", sans-serif}*{box-sizing:border-box}html,body,#root{margin:0;min-height:100%}body{font-family:Manrope,Segoe UI,sans-serif;color:var(--ink);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:radial-gradient(circle at 15% 20%,rgba(62,207,142,.04) 0%,transparent 36%),radial-gradient(circle at 80% 0%,rgba(31,138,100,.03) 0%,transparent 30%),var(--bg)}h1,h2,h3,h4,p{margin:0}button,input,select,textarea{font:inherit}.nav-btn,.feed-card,.ghost-btn,.primary-btn,.admin-upload-btn,.entity-item,.asset-item,input,select,textarea{transition:background-color .15s ease,border-color .15s ease,box-shadow .15s ease}.nav-btn:focus-visible,.feed-card:focus-visible,.ghost-btn:focus-visible,.primary-btn:focus-visible,.admin-upload-btn:focus-visible,.entity-item:focus-visible,.asset-item:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,button:focus-visible{outline:none;box-shadow:0 0 0 3px var(--brand-glow)}.gallery-layout{display:grid;grid-template-columns:280px minmax(0,1fr) 340px;min-height:100vh;gap:16px;padding:16px}.gallery-sidebar,.gallery-main,.admin-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius)}.admin-login-card{background:#1c2220b8;backdrop-filter:blur(16px) saturate(1.4);-webkit-backdrop-filter:blur(16px) saturate(1.4);border:1px solid var(--line);border-radius:var(--radius)}.gallery-sidebar{padding:18px;display:flex;flex-direction:column;gap:18px}.gallery-sidebar header p,.gallery-header p,.muted{color:var(--ink-soft)}.nav-block{display:flex;flex-direction:column;gap:8px}.nav-block h2{font-size:.8rem;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-soft)}.nav-btn{border:1px solid var(--line);background:var(--bg-surface);color:var(--ink);text-align:left;border-radius:10px;padding:9px 12px;cursor:pointer}.nav-btn:hover{background:#ffffff0a}.nav-btn.is-active{border-color:var(--brand);background:var(--brand-soft);color:var(--brand)}.gallery-main{display:flex;flex-direction:column;min-width:0;overflow:hidden}.gallery-header{border-bottom:1px solid var(--line);padding:18px 20px}.feed-shell{position:relative;height:calc(100vh - 150px);overflow:auto;padding:14px}.feed-row{position:absolute;width:100%;left:0;top:0;padding:8px 0}.feed-grid{display:grid;gap:12px}.feed-card{border:1px solid var(--line);border-radius:12px;overflow:hidden;text-align:left;background:var(--panel);padding:0;cursor:pointer;transition:background-color .15s ease,border-color .15s ease,box-shadow .15s ease,transform .2s ease}.feed-card:hover{border-color:var(--line-strong);transform:translateY(-2px);box-shadow:0 8px 24px #0006}.feed-card.is-selected{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-glow)}.feed-image-wrap{aspect-ratio:4 / 5;overflow:hidden;background:linear-gradient(135deg,#1a201c,#222922)}.feed-image{width:100%;height:100%;object-fit:cover;display:block}.feed-caption{padding:10px 12px}.feed-caption p{font-size:.92rem}.feed-status{text-align:center;color:var(--ink-soft);padding:12px}.detail-panel{background:#1c2220b8;backdrop-filter:blur(16px) saturate(1.4);-webkit-backdrop-filter:blur(16px) saturate(1.4);border:1px solid var(--line);border-radius:var(--radius);padding:14px;display:flex;flex-direction:column;gap:10px;max-height:calc(100vh - 32px);overflow:auto}.detail-header{display:flex;align-items:center;justify-content:space-between}.detail-list{display:flex;flex-direction:column;gap:10px}.detail-card{border:1px solid var(--line);border-radius:12px;overflow:hidden;background:var(--panel)}.detail-card img{width:100%;aspect-ratio:4 / 3;object-fit:cover;display:block}.detail-card h4,.detail-card p{padding:8px 10px}.primary-btn,.ghost-btn{border-radius:10px;border:1px solid transparent;padding:9px 12px;cursor:pointer}.primary-btn{background:var(--brand);color:var(--bg);font-weight:600}.primary-btn:hover:not(:disabled){filter:brightness(1.1)}.ghost-btn{border-color:var(--line);background:var(--panel);color:var(--ink)}.ghost-btn:hover{background:#ffffff0f;border-color:var(--line-strong)}.admin-login-shell{min-height:100vh;display:grid;place-items:center;padding:16px}.admin-login-card{width:min(420px,100%);padding:24px;display:flex;flex-direction:column;gap:12px}.admin-login-card label{display:flex;flex-direction:column;gap:6px}.admin-shell{display:grid;gap:12px;padding:16px}.admin-shell-redesign{min-height:100vh;background:radial-gradient(circle at 0% 0%,rgba(62,207,142,.06) 0%,transparent 48%),radial-gradient(circle at 100% 20%,rgba(15,92,66,.05) 0%,transparent 42%)}.admin-topbar{display:flex;justify-content:space-between;align-items:flex-start;background:#1c2220b8;backdrop-filter:blur(16px) saturate(1.4);-webkit-backdrop-filter:blur(16px) saturate(1.4);border:1px solid var(--line);border-radius:var(--radius);padding:18px;gap:12px}.admin-title-group h1{font-family:var(--display);font-size:clamp(1.6rem,2.8vw,2.2rem);line-height:1.1;letter-spacing:-.03em}.admin-title-group .admin-subtitle{margin-top:8px;color:var(--ink-soft);max-width:62ch}.admin-eyebrow{font-size:.72rem;letter-spacing:.12em;text-transform:uppercase;color:var(--brand);font-weight:700;margin-bottom:8px}.admin-topbar-actions{display:flex;align-items:center;gap:8px}.admin-session-pill{border:1px solid var(--line);background:var(--bg-surface);border-radius:999px;padding:6px 10px;font-size:.8rem;color:var(--ink-soft)}.admin-command{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(260px,1fr);gap:12px}.admin-upload-hero{border-radius:var(--radius);border:1px solid rgba(62,207,142,.2);background:linear-gradient(145deg,#3ecf8e14,#0f5c421f);backdrop-filter:blur(20px) saturate(1.6);-webkit-backdrop-filter:blur(20px) saturate(1.6);color:var(--ink);padding:16px;display:flex;flex-direction:column;gap:12px;min-height:0;overflow:hidden}.admin-upload-hero h2{font-family:var(--display);font-size:clamp(1.3rem,2.2vw,1.8rem);line-height:1.15}.hero-kicker{font-size:.72rem;text-transform:uppercase;letter-spacing:.11em;font-weight:700;color:var(--brand);margin-bottom:6px}.admin-upload-hero header p{color:var(--ink-soft)}.admin-field{display:grid;gap:6px}.admin-field span{font-size:.82rem;color:inherit}.admin-field-full{grid-column:1 / -1}.admin-inline-note{border-radius:10px;border:1px solid rgba(255,255,255,.08);background:#ffffff0d;padding:8px 10px;font-size:.9rem;color:var(--ink-soft)}.admin-insights{display:grid;gap:10px}.insight-card{border:1px solid var(--line);border-radius:var(--radius);background:var(--panel);padding:12px}.insight-label{color:var(--ink-soft);font-size:.86rem}.insight-value{margin-top:5px;font-size:1.5rem;line-height:1;font-family:var(--display)}.admin-management-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.admin-management-card,.admin-recent-card{border:1px solid var(--line);background:var(--panel);border-radius:var(--radius);padding:14px;display:grid;gap:10px}.admin-card-head h2{font-family:var(--display);font-size:1.12rem}.admin-card-head p{margin-top:4px;color:var(--ink-soft);font-size:.9rem}.admin-mini-form{display:grid;gap:8px}.admin-entity-list{list-style:none;padding:0;margin:0;display:grid;gap:8px;max-height:290px;overflow:auto}.entity-item{border:1px solid var(--line);border-radius:10px;padding:10px;background:var(--bg-surface);display:flex;justify-content:space-between;align-items:center;gap:10px}.entity-item:hover{background:var(--surface-overlay)}.entity-item strong{display:block}.entity-item p{margin-top:2px;color:var(--ink-soft);font-size:.88rem}.entity-item span{color:var(--ink-soft);font-size:.84rem;white-space:nowrap}.asset-rail{list-style:none;padding:0;margin:0;display:grid;gap:8px}.asset-item{border:1px solid var(--line);border-radius:10px;padding:10px;background:var(--bg-surface);display:flex;align-items:center;justify-content:space-between;gap:10px}.asset-item:hover{background:var(--surface-overlay)}.asset-item-main p{margin-top:2px;color:var(--ink-soft);font-size:.88rem}.status-pill{border-radius:999px;padding:4px 10px;font-size:.8rem;border:1px solid transparent;text-transform:capitalize}.status-pill.is-ready{background:var(--status-ready-bg);color:var(--status-ready-text);border-color:var(--status-ready-border)}.status-pill.is-processing{background:var(--status-processing-bg);color:var(--status-processing-text);border-color:var(--status-processing-border)}.status-pill.is-failed{background:var(--status-failed-bg);color:var(--status-failed-text);border-color:var(--status-failed-border)}.status-pill.is-pending{background:var(--status-pending-bg);color:var(--status-pending-text);border-color:var(--status-pending-border)}.error-text{color:var(--danger)}input,select,textarea{border:1px solid var(--line);border-radius:10px;padding:8px 10px;background:var(--bg-surface);color:var(--ink)}input::placeholder,textarea::placeholder{color:var(--ink-muted)}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-glow)}@media(max-width:1180px){.gallery-layout{grid-template-columns:260px minmax(0,1fr)}.detail-panel{display:none}.admin-command,.admin-management-grid{grid-template-columns:1fr}}@media(max-width:780px){.gallery-layout{grid-template-columns:1fr;padding:10px}.gallery-sidebar{order:2}.gallery-main{order:1}.feed-shell{height:62vh}.admin-shell{padding:10px}.admin-topbar{flex-direction:column}}.upload-manager{display:flex;flex-direction:column;gap:16px;width:100%;min-height:0}.upload-dropzone{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;min-height:180px;padding:32px 24px;border:2px dashed var(--line-strong);border-radius:var(--radius-lg);background:var(--bg-surface);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);cursor:pointer;transition:border-color .18s ease,background .18s ease,box-shadow .18s ease;text-align:center;-webkit-user-select:none;user-select:none}.upload-dropzone:hover{border-color:var(--brand);background:var(--brand-soft);box-shadow:0 0 0 4px var(--brand-glow)}.upload-dropzone--drag-over{border-color:var(--brand);border-style:solid;background:var(--brand-soft);box-shadow:0 0 0 4px var(--brand-glow),inset 0 0 40px var(--brand-glow)}.upload-dropzone--has-files{min-height:72px;padding:16px 24px;flex-direction:row;justify-content:flex-start;gap:16px;border-style:solid;border-color:var(--line-strong);cursor:default}.upload-dropzone--has-files:hover{background:var(--bg-surface);box-shadow:none}.upload-dropzone__icon{width:40px;height:40px;color:var(--ink-muted);flex-shrink:0;transition:color .18s ease}.upload-dropzone--drag-over .upload-dropzone__icon,.upload-dropzone:hover .upload-dropzone__icon{color:var(--brand)}.upload-dropzone__label{font-family:Sora,sans-serif;font-size:15px;font-weight:600;color:var(--ink);line-height:1.3}.upload-dropzone__sublabel{font-family:Manrope,sans-serif;font-size:12px;color:var(--ink-muted);margin-top:2px}.upload-dropzone__file-count{font-family:Sora,sans-serif;font-size:20px;font-weight:700;color:var(--brand)}.upload-dropzone__file-count-label{font-family:Manrope,sans-serif;font-size:12px;color:var(--ink-soft);margin-top:1px}.upload-dropzone__input{position:absolute;inset:0;opacity:0;cursor:pointer;width:100%;height:100%}.upload-dropzone__add-more{margin-left:auto;flex-shrink:0;display:flex;align-items:center;gap:6px;padding:6px 14px;border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:transparent;color:var(--ink-soft);font-family:Manrope,sans-serif;font-size:12px;font-weight:600;cursor:pointer;transition:border-color .15s ease,color .15s ease}.upload-dropzone__add-more:hover{border-color:var(--brand);color:var(--brand)}.upload-batch-controls{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.upload-batch-controls__select{flex:1;min-width:180px;max-width:260px;height:38px;padding:0 32px 0 12px;border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:var(--panel);color:var(--ink);font-family:Manrope,sans-serif;font-size:13px;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='7' fill='none' viewBox='0 0 12 7'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%235c6b5f' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;cursor:pointer;transition:border-color .15s ease}.upload-batch-controls__select:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-glow)}.upload-batch-controls__select option{background:var(--panel);color:var(--ink)}.upload-batch-controls__actions{display:flex;align-items:center;gap:8px;margin-left:auto}.upload-btn-primary{display:flex;align-items:center;gap:6px;height:38px;padding:0 18px;border:none;border-radius:var(--radius-sm);background:var(--brand);color:#0d0f0e;font-family:Manrope,sans-serif;font-size:13px;font-weight:700;cursor:pointer;transition:opacity .15s ease,transform .1s ease;white-space:nowrap}.upload-btn-primary:hover:not(:disabled){opacity:.88}.upload-btn-primary:active:not(:disabled){transform:scale(.97)}.upload-btn-primary:disabled{opacity:.4;cursor:not-allowed}.upload-btn-ghost{display:flex;align-items:center;gap:6px;height:38px;padding:0 14px;border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:transparent;color:var(--ink-soft);font-family:Manrope,sans-serif;font-size:13px;font-weight:600;cursor:pointer;transition:border-color .15s ease,color .15s ease;white-space:nowrap}.upload-btn-ghost:hover:not(:disabled){border-color:var(--danger);color:var(--danger)}.upload-btn-ghost:disabled{opacity:.35;cursor:not-allowed}.upload-progress-summary{display:flex;flex-direction:column;gap:8px;padding:12px 16px;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px)}.upload-progress-summary__stats{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:4px}.upload-progress-summary__label{font-family:Manrope,sans-serif;font-size:13px;color:var(--ink-soft)}.upload-progress-summary__label strong{font-weight:700;color:var(--ink)}.upload-progress-summary__failed{font-family:Manrope,sans-serif;font-size:12px;font-weight:600;color:var(--danger)}.upload-progress-bar{height:6px;border-radius:99px;background:var(--line-strong);overflow:hidden}.upload-progress-bar__fill{height:100%;border-radius:99px;background:var(--brand);transition:width .3s ease;background-image:linear-gradient(90deg,var(--brand) 0%,#5fdfaa 50%,var(--brand) 100%);background-size:200% 100%}.upload-progress-bar__fill--active{animation:upload-shimmer 1.6s linear infinite}.upload-progress-bar__fill--done{background-image:none;background:var(--brand)}@keyframes upload-shimmer{0%{background-position:200% center}to{background-position:-200% center}}.upload-file-list{flex:1;min-height:0;display:flex;flex-direction:column;border:1px solid var(--line);border-radius:var(--radius);background:var(--panel);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);overflow:hidden}.upload-file-list__header{display:grid;grid-template-columns:1fr 72px 160px 90px 64px;align-items:center;padding:0 12px;height:36px;border-bottom:1px solid var(--line);flex-shrink:0}.upload-file-list__header-cell{font-family:Manrope,sans-serif;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-muted)}.upload-file-list__viewport{flex:1;overflow-y:auto;overflow-x:hidden;max-height:400px;scrollbar-width:thin;scrollbar-color:var(--line-strong) transparent}.upload-file-list__viewport::-webkit-scrollbar{width:4px}.upload-file-list__viewport::-webkit-scrollbar-track{background:transparent}.upload-file-list__viewport::-webkit-scrollbar-thumb{background:var(--line-strong);border-radius:99px}.upload-file-list__inner{position:relative;width:100%}.upload-file-list__empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;height:120px;color:var(--ink-muted);font-family:Manrope,sans-serif;font-size:13px}.upload-file-row{position:absolute;top:0;left:0;width:100%;height:52px;display:grid;grid-template-columns:1fr 72px 160px 90px 64px;align-items:center;padding:0 12px;border-bottom:1px solid var(--line);overflow:hidden;transition:background .12s ease}.upload-file-row:hover{background:#ffffff06}.upload-file-row--uploading{background:#3ecf8e0a}.upload-file-row--failed{background:var(--danger-soft)}.upload-file-row--done{opacity:.7}.upload-file-row__name{font-family:Manrope,sans-serif;font-size:13px;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding-right:8px}.upload-file-row__size{font-family:Manrope,sans-serif;font-size:12px;color:var(--ink-muted);white-space:nowrap}.upload-file-row__title-input{width:100%;height:28px;padding:0 8px;border:1px solid transparent;border-radius:var(--radius-sm);background:transparent;color:var(--ink);font-family:Manrope,sans-serif;font-size:12px;transition:border-color .15s ease,background .15s ease;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.upload-file-row__title-input:hover{border-color:var(--line-strong);background:var(--bg-surface)}.upload-file-row__title-input:focus{outline:none;border-color:var(--brand);background:var(--bg-surface);box-shadow:0 0 0 2px var(--brand-glow)}.upload-file-row__status{display:flex;align-items:center;gap:6px;overflow:hidden}.upload-file-row__status-icon{width:16px;height:16px;flex-shrink:0}.upload-file-row__status-icon--pending{color:var(--ink-muted)}.upload-file-row__status-icon--uploading,.upload-file-row__status-icon--done{color:var(--brand)}.upload-file-row__status-icon--failed{color:var(--danger)}.upload-file-row__error-text{font-size:11px;color:var(--danger);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.upload-file-row__mini-bar{flex:1;height:3px;border-radius:99px;background:var(--line-strong);overflow:hidden}.upload-file-row__mini-bar-fill{height:100%;border-radius:99px;background:var(--brand);transition:width .2s ease}.upload-file-row__actions{display:flex;align-items:center;justify-content:flex-end;gap:4px}.upload-file-row__action-btn{display:flex;align-items:center;justify-content:center;width:26px;height:26px;border:none;border-radius:var(--radius-sm);background:transparent;cursor:pointer;transition:background .12s ease,color .12s ease;color:var(--ink-muted)}.upload-file-row__action-btn:hover{background:var(--line);color:var(--ink)}.upload-file-row__action-btn--cancel:hover{background:var(--danger-soft);color:var(--danger)}.upload-file-row__action-btn--retry:hover{background:var(--brand-soft);color:var(--brand)}@keyframes upload-spin{to{transform:rotate(360deg)}}.upload-file-row__status-icon--uploading{animation:upload-spin 1s linear infinite}@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}
