:root{--surface-0:#151e28;--surface-1:#1b2532;--surface-2:#1f2b3a;--surface-3:#28374b;--text:#edf2fa;--text-muted:#cbd6e4;--text-subtle:#a9b8cd;--border:#3a4a60;--border-2:#465872;--pill-border:#4c5f7b;--accent:#7b6cff;--accent-hover:#9a8dff;--focus:#9bd1ff;--success:#22c55e;--warning:#f59e0b;--danger:#ef4444;--bubble-assistant-bg:var(--surface-2);--bubble-assistant-border:#3a4a60;--bubble-user-bg:#14263a;--bubble-user-border:#2f5a8a;--header-h: 56px}*,*:before,*:after{box-sizing:border-box}html{color-scheme:dark;scroll-behavior:smooth}body{margin:0;font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;background:var(--surface-0);color:var(--text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;padding-top:var(--header-h)}html,body{overflow-x:auto}.container.chat,.messages,.composer-wrap{overflow-x:visible}@media (max-width: 600px){:root{--header-h: 88px}.app-header{height:auto;grid-template-columns:1fr;grid-auto-rows:auto;row-gap:8px;padding:8px 12px;align-items:flex-start}.topnav{justify-self:flex-start;display:flex;flex-wrap:wrap;gap:4px}.auth{justify-content:flex-end;width:100%}.nav-link{padding:4px 10px;font-size:.85rem}.reset-btn{padding:6px 10px;font-size:.8rem}.app-header{overflow-x:auto}}a{color:var(--accent);text-decoration:none}a:hover{color:var(--accent-hover);text-decoration:underline}:where(button,input,textarea,select,a,[role=button]):focus-visible{outline:2px solid var(--focus);outline-offset:3px}.container{max-width:1080px;margin:0 auto;padding:24px}footer{padding:24px;text-align:center;color:var(--text-subtle)}.app-header{position:fixed;top:0;left:0;right:0;z-index:1100;height:var(--header-h);display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:12px;background:var(--surface-0);border-bottom:1px solid var(--border);padding:12px 24px}.topnav{justify-self:center;display:flex;gap:8px}.reset-btn{justify-self:end}.nav-link{color:var(--text-subtle);padding:6px 12px;border-radius:10px;border:1px solid transparent}.nav-link:hover{color:var(--text);border-color:var(--border)}.nav-link.active{color:var(--text);background:var(--surface-3);border-color:var(--border-2)}.reset-btn{border:1px solid var(--border);background:transparent;color:var(--text);padding:8px 12px;border-radius:10px;cursor:pointer}.reset-btn:hover{background:#ffffff0f}button{background:var(--accent);color:#fff;border:0;border-radius:10px;padding:10px 14px;cursor:pointer;font-weight:600;line-height:1;transition:background-color .15s ease,transform .06s ease,opacity .15s ease}button:hover:not(:disabled){background:var(--accent-hover)}button:active:not(:disabled){transform:translateY(1px)}button:disabled{opacity:.6;cursor:default}input,textarea,select{width:100%;padding:10px;border-radius:10px;border:1px solid var(--border);background:var(--surface-1);color:var(--text);transition:border-color .15s ease,box-shadow .15s ease}input::placeholder,textarea::placeholder{color:#8fa1b7}label{display:block;margin-bottom:6px;font-size:12px;color:var(--text-subtle)}.pill{display:inline-flex;align-items:center;gap:6px;padding:4px 8px;border-radius:999px;border:1px solid var(--pill-border);color:#d8e2f0;font-size:12px;line-height:1;background:#ffffff0a}.pill[data-status=queued]{color:var(--text-muted)}.pill[data-status=running]{color:var(--warning)}.pill[data-status=succeeded]{color:var(--success)}.pill[data-status=failed]{color:var(--danger)}.container.chat{max-width:min(1400px,100%);padding:24px 32px 120px}.messages{display:flex;flex-direction:column;gap:18px;padding-inline:12px}.msg{display:flex}.msg.user{justify-content:flex-end}.msg.assistant{justify-content:flex-start}.bubble{max-width:760px;width:fit-content;background:var(--bubble-assistant-bg);border:1px solid var(--bubble-assistant-border);border-radius:16px;padding:12px;box-shadow:0 1px #ffffff05 inset}.msg.assistant .bubble .msg-text{color:var(--text)}.msg.user .bubble{background:var(--bubble-user-bg);border-color:var(--bubble-user-border)}.msg .msg-text{margin:4px 0 0;white-space:pre-wrap}.assistant-top{display:flex;align-items:center;gap:8px;margin-bottom:6px}.meta-row{display:flex;justify-content:space-between;padding-top:8px;border-top:1px solid var(--border-2);color:var(--text-subtle)}.prompt-echo{margin:6px 0 10px;color:var(--text-muted)}.bubble.full{max-width:100%;width:100%;padding:0;border:none;background:transparent;overflow:hidden}.viewer,model-viewer.viewer{display:block;max-width:100%}.viewer.colossal,model-viewer.viewer.colossal{width:100%;max-width:1000px;height:600px;margin:20px auto;border:1px solid var(--border)}.user-bubble{background:var(--bubble-user-bg);border-color:var(--bubble-user-border)}.attached-large{margin:0 0 10px;padding:6px;background:#0f1622;border:1px solid #2b3c55;border-radius:14px;width:clamp(220px,42vw,560px)}.attached-large figcaption{margin-top:4px;font-size:12px;color:var(--text-subtle)}.attached-large img{width:100%;height:auto;display:block;border-radius:10px}.composer-wrap{position:sticky;bottom:0;z-index:1005;background:linear-gradient(180deg,#0b0d1000,#0b0d10eb 30%,#0b0d10);padding:12px 0 20px;border-top:1px solid var(--border)}.composer{position:relative;display:flex;align-items:flex-end;gap:10px;padding:12px 12px 12px 48px}.composer.dragging{outline:2px dashed var(--focus);outline-offset:4px}.composer.has-chip{min-height:140px;padding-left:172px}.composer .attach{position:absolute;left:12px;bottom:12px;width:28px;height:28px;border:1px solid var(--pill-border);border-radius:8px;display:grid;place-items:center;color:#d3deed;cursor:pointer;-webkit-user-select:none;user-select:none}.composer .attach input{display:none}.composer textarea{flex:1;min-height:56px;max-height:240px;resize:vertical;background:var(--surface-1);border:1px solid var(--border);border-radius:12px;padding:12px 14px;box-shadow:0 2px 5px #0003;color:var(--text);width:auto;min-width:0}.composer textarea:focus{background:var(--surface-2);border-color:var(--focus);outline:none}.composer .actions{display:flex;align-items:center;gap:10px;flex:0 0 auto}.hint-row{margin-top:8px;text-align:center}.muted{color:var(--text-subtle)}@media (prefers-reduced-motion: reduce){*{transition:none!important;animation:none!important}}@media (max-width:600px){.container{padding:16px}.container.chat{padding:16px 20px 120px}.bubble{max-width:100%}.composer{border-radius:12px}.composer.has-chip{padding-left:148px;min-height:120px}.attach-chip{width:120px;height:100px}.viewer.colossal,model-viewer.viewer.colossal{height:clamp(520px,70vh,1000px)}}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:2000;background:#0f141ca8;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:grid;place-items:center}.modal{background:var(--surface-1);color:var(--text);border:1px solid var(--border);border-radius:14px;width:min(520px,92vw);padding:18px;box-shadow:0 20px 50px #00000073}.modal h2{margin:0 0 8px;font-size:18px}.modal p{margin:0 0 14px;color:var(--text-subtle)}.modal .row{display:flex;gap:10px;justify-content:flex-end}.modal .btn-secondary{background:transparent;color:var(--text);border:1px solid var(--border);border-radius:10px;padding:10px 14px}.pill{border:1px solid var(--pill-border);padding:.2rem .5rem;border-radius:999px;font-size:.85rem}.status-processing{background:#7d7dff1a}.status-approved{background:#00c8781f}.status-printed{background:#7878781f}.status-delivery{background:#ffc8001f}.status-delivered{background:#00c8782e}.actions-sub{margin-top:8px;display:flex;justify-content:flex-end}.btn-link-danger{background:none;border:0;padding:6px 8px;text-decoration:underline;cursor:pointer;color:var(--danger, #c62828)}.btn-link-danger:focus-visible{outline:2px solid var(--focus, #66afe9);outline-offset:2px}.loading-card{padding:16px 0 12px}.loading-viewport{width:100%;height:280px;border-radius:14px;background:#151821;position:relative;overflow:hidden;margin-bottom:12px}.shimmer:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;transform:translate(-100%);background-image:linear-gradient(120deg,#fff0,#ffffff2e,#fff0);animation:shimmer 1.4s infinite}@keyframes shimmer{to{transform:translate(100%)}}.loading-meta{display:flex;align-items:center;gap:12px}.loading-dots{display:flex;gap:6px;margin-top:2px}.loading-dots span{width:8px;height:8px;border-radius:999px;background:#ffffff80;animation:bounce 1.2s infinite ease-in-out}.loading-dots span:nth-child(2){animation-delay:.12s}.loading-dots span:nth-child(3){animation-delay:.24s}@keyframes bounce{0%,80%,to{transform:translateY(0);opacity:.5}40%{transform:translateY(-4px);opacity:1}}.loading-viewport.error-bg{background:radial-gradient(circle at top,#32101a,#151821)}.loading-error-text{color:#ff8fa3;font-size:.9rem}.user-chip-btn{display:inline-flex;align-items:center;gap:8px;padding:4px 10px;border-radius:999px;border:1px solid var(--border);background:#0f172ab3;color:var(--text);cursor:pointer;font:inherit;text-align:left;transition:background .12s ease,border-color .12s ease,box-shadow .12s ease,transform .06s ease}.user-chip-btn:hover{background:#1e293bf2;border-color:var(--border-2)}.user-chip-btn:active{transform:translateY(1px)}.user-chip-avatar{width:28px;height:28px;border-radius:50%;flex-shrink:0}.user-chip-text{display:flex;flex-direction:column;align-items:flex-start;max-width:180px}.user-chip-name{font-size:.85rem;font-weight:500;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.user-chip-sub{font-size:.72rem;color:var(--text-subtle)}.user-chip-caret.open{transform:rotate(180deg)}.user-chip-btn{display:inline-flex;align-items:center;gap:8px;padding:4px 10px;border-radius:999px;border:1px solid var(--border-2);background:#ffffff0a;color:var(--text);cursor:pointer;font-size:.85rem}.user-chip-btn:hover{background:#ffffff14}.user-chip-avatar{width:24px;height:24px;border-radius:50%}.user-chip-text{max-width:140px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-chip-caret{font-size:.7rem;opacity:.8}.user-chip-wrapper{position:relative}.user-menu{position:absolute;top:calc(100% + 4px);right:0;min-width:260px;background:var(--surface-1);border-radius:12px;border:1px solid var(--border);box-shadow:0 14px 30px #00000073;padding:10px 12px 12px;z-index:40;font-size:.85rem}.user-menu{position:absolute;top:calc(100% + 8px);right:0;min-width:260px;background:var(--surface-1);border-radius:12px;border:1px solid var(--border);box-shadow:0 14px 30px #00000073;padding:10px 12px 12px;z-index:40;font-size:.85rem}.user-menu-header{display:flex;align-items:center;gap:10px;padding-bottom:8px;border-bottom:1px solid var(--border-2);margin-bottom:8px}.user-menu-avatar{width:32px;height:32px;border-radius:50%}.user-menu-name{font-weight:600}.user-menu-email{font-size:.78rem;color:var(--text-subtle)}.user-menu-section{padding-top:4px}.user-menu-label{font-size:.78rem;text-transform:uppercase;letter-spacing:.04em;color:var(--text-subtle);margin-bottom:2px}.user-menu-usage{font-weight:500}.user-menu-caption{font-size:.78rem;color:var(--text-subtle);margin-top:2px}.user-menu-error{color:#ff8fa3}.bubble.info-bubble{max-width:520px;width:fit-content;display:flex;gap:10px;align-items:flex-start;padding:10px 12px;margin:4px 0;background:radial-gradient(circle at top left,#7b6cff2e,#151e28e6);border:1px solid rgba(123,108,255,.45);border-radius:14px;box-shadow:0 12px 30px #0006}.info-icon{width:24px;height:24px;border-radius:999px;display:flex;align-items:center;justify-content:center;font-size:14px;flex-shrink:0;background:#7b6cff59;color:#f5f3ff}.info-copy{display:flex;flex-direction:column;gap:2px}.info-title{margin:0;font-size:.78rem;letter-spacing:.06em;text-transform:uppercase;color:var(--accent-hover)}.info-text{margin:0;font-size:.9rem;color:var(--text)}.info-sub{margin:2px 0 0;font-size:.78rem;color:var(--text-subtle)}.checkout-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;display:grid;grid-template-columns:minmax(0,1.4fr) minmax(320px,min(440px,42vw));background:#0009;overflow-y:auto}.checkout-overlay>div,.checkout-overlay>aside{min-height:100vh}@media (max-height: 720px),(max-width: 900px){.checkout-overlay{grid-template-columns:1fr;grid-template-rows:auto auto;align-items:flex-start}.checkout-overlay aside{border-left:none;border-top:1px solid var(--border)}}
