*{box-sizing:border-box;margin:0;padding:0}:root{--bg:#0b0e17;--bg-deep:#070a12;--surface:#111628;--surface-raised:#161c35;--border:#1e2544;--border-warm:#2a2540;--text:#d8d4ce;--text-bright:#ede9e3;--text-muted:#7a7586;--gold:#c9a84c;--gold-dim:#a08538;--gold-glow:#c9a84c1f;--gold-glow-strong:#c9a84c40;--teal:#4a7c6f;--danger:#c75450;--radius:10px;--font-serif:"Cormorant Garamond", Georgia, serif;--font-sans:"Outfit", system-ui, sans-serif}body{font-family:var(--font-sans);background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;min-height:100dvh;font-weight:300}body:after{content:"";pointer-events:none;z-index:9999;opacity:.025;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='1'/%3E%3C/svg%3E");background-repeat:repeat;background-size:256px 256px;position:fixed;inset:0}.page{flex-direction:column;align-items:center;min-height:100dvh;padding:1rem;display:flex}.login-page{background:radial-gradient(ellipse 60% 50% at 50% 40%, #c9a84c0a 0%, transparent 70%), var(--bg);justify-content:center}.login-card{background:var(--surface);border:1px solid var(--border);text-align:center;border-radius:16px;width:100%;max-width:380px;padding:2.5rem 2rem;position:relative}.login-card:before{content:"";background:linear-gradient(90deg, transparent, var(--gold-dim), transparent);height:1px;position:absolute;top:-1px;left:20%;right:20%}.login-card h1{font-family:var(--font-serif);color:var(--text-bright);letter-spacing:.02em;margin-bottom:.375rem;font-size:2rem;font-weight:500}.login-card h2{font-family:var(--font-serif);color:var(--text-bright);margin-bottom:.5rem;font-size:1.5rem;font-weight:500}.login-card p{color:var(--text-muted);margin-bottom:1.5rem;font-size:.9375rem}.login-card form{flex-direction:column;gap:.75rem;display:flex}input{background:var(--bg);border:1px solid var(--border);color:var(--text);font-family:var(--font-sans);border-radius:8px;padding:.75rem 1rem;font-size:1rem;font-weight:300;transition:border-color .25s,box-shadow .25s}input:focus{border-color:var(--gold-dim);box-shadow:0 0 0 3px var(--gold-glow);outline:none}input::placeholder{color:var(--text-muted);opacity:.6}button{background:var(--gold);color:var(--bg-deep);font-family:var(--font-sans);cursor:pointer;border:none;border-radius:8px;padding:.75rem 1rem;font-size:.9375rem;font-weight:500;transition:background .2s,transform .1s}button:hover{background:#d4b55a}button:active{transform:scale(.985)}.dev-login-btn{border:1px dashed var(--border);width:100%;color:var(--text-muted);background:0 0;font-size:.8125rem;font-weight:400}.dev-login-btn:hover{border-color:var(--text-muted);color:var(--text);background:0 0}.error{color:var(--danger);margin-top:.5rem;font-size:.875rem}.hint{color:var(--text-muted);font-size:.8125rem}.loading{min-height:100dvh;color:var(--text-muted);font-family:var(--font-serif);letter-spacing:.02em;justify-content:center;align-items:center;font-size:1.125rem;font-style:italic;display:flex}.landing-page{background:radial-gradient(ellipse 50% 40% at 50% 20%, #c9a84c08 0%, transparent 70%), var(--bg);max-width:480px;margin:0 auto;padding-top:3rem}.landing-page h1{font-family:var(--font-serif);text-align:center;color:var(--text-bright);letter-spacing:.01em;margin-bottom:.25rem;font-size:2rem;font-weight:500}.subtitle{color:var(--text-muted);text-align:center;margin-bottom:2rem;font-size:.9375rem}.signs-grid{grid-template-columns:repeat(3,1fr);gap:.625rem;width:100%;margin-bottom:1.5rem;display:grid}.sign-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;color:var(--text);flex-direction:column;align-items:center;gap:.2rem;padding:.875rem .5rem;transition:border-color .25s,transform .15s,box-shadow .25s;display:flex}.sign-card:hover{border-color:var(--gold-dim);transform:translateY(-2px);box-shadow:0 4px 20px #c9a84c14}.sign-symbol{font-size:1.625rem}.sign-name{font-family:var(--font-sans);text-transform:capitalize;font-size:.8125rem;font-weight:400}.sign-dates{color:var(--text-muted);font-size:.625rem}.divider{width:100%;color:var(--text-muted);align-items:center;gap:1rem;margin:1rem 0;font-size:.8125rem;display:flex}.divider:before,.divider:after{content:"";border-top:1px solid var(--border);flex:1}.build-my-sky-btn{background:linear-gradient(135deg, var(--gold), #b59a40);border-radius:var(--radius);letter-spacing:.01em;width:100%;margin-bottom:.5rem;padding:1rem;font-size:1.0625rem;font-weight:500}.build-my-sky-btn:hover{background:linear-gradient(135deg,#d4b55a,#c4a648)}.chat-page{background:radial-gradient(ellipse 80% 50% at 50% 100%, #c9a84c05 0%, transparent 60%), var(--bg);width:100%;max-width:100%;height:100dvh;margin:0;padding:0}.chat-header{background:var(--surface);justify-content:space-between;align-items:center;width:100%;padding:.75rem 1.5rem;display:flex;position:relative}.chat-header:after{content:"";background:linear-gradient(90deg, transparent 5%, var(--border) 30%, var(--gold-dim) 50%, var(--border) 70%, transparent 95%);height:1px;position:absolute;bottom:0;left:0;right:0}.chat-header h2{font-family:var(--font-serif);color:var(--text-bright);letter-spacing:.02em;font-size:1.1875rem;font-weight:500}.header-right{align-items:center;gap:.625rem;display:flex}.sign-out-btn{border:1px solid var(--border);color:var(--text-muted);font-family:var(--font-sans);letter-spacing:.02em;text-transform:uppercase;background:0 0;border-radius:6px;padding:.25rem .625rem;font-size:.6875rem;font-weight:400}.sign-out-btn:hover{color:var(--text);border-color:var(--text-muted);background:0 0}.credits-badge{color:var(--gold);background:var(--gold-glow);letter-spacing:.02em;border:1px solid #c9a84c26;border-radius:999px;padding:.25rem .75rem;font-size:.6875rem;font-weight:400}.chat-messages{scrollbar-width:thin;scrollbar-color:var(--border) transparent;flex:1;justify-content:center;display:flex;overflow-y:auto}.chat-messages::-webkit-scrollbar{width:6px}.chat-messages::-webkit-scrollbar-track{background:0 0}.chat-messages::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}.chat-messages-inner{flex-direction:column;gap:1.25rem;width:100%;max-width:680px;padding:1.75rem 1.5rem;display:flex}.load-history-btn{border:1px solid var(--border);color:var(--text-muted);cursor:pointer;letter-spacing:.02em;background:0 0;border-radius:999px;align-self:center;padding:.375rem 1rem;font-size:.75rem;font-weight:400;transition:color .2s,border-color .2s}.load-history-btn:hover{color:var(--text);border-color:var(--text-muted);background:0 0}.load-history-btn:disabled{opacity:.5;cursor:default}.chat-divider{color:var(--text-muted);letter-spacing:.04em;text-transform:uppercase;align-items:center;gap:.75rem;font-size:.6875rem;display:flex}.chat-divider:before,.chat-divider:after{content:"";border-top:1px solid var(--border);flex:1}.chat-message{animation:.35s ease-out both message-in;display:flex}@keyframes message-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.chat-message.assistant{flex-direction:column;align-items:flex-start}.chat-message.user{justify-content:flex-end}.message-bubble{border-radius:var(--radius);white-space:pre-wrap;max-width:82%;padding:.875rem 1.125rem;font-size:.9375rem;line-height:1.65}.chat-message.assistant .message-bubble{background:var(--surface);border:1px solid var(--border);color:var(--text)}.chat-message.user .message-bubble{background:var(--surface-raised);border:1px solid var(--border-warm);color:var(--text-bright)}.token-reveal{animation:.45s ease-out forwards token-in}@keyframes token-in{0%{opacity:0;filter:blur(4px)}to{opacity:1;filter:blur()}}.chat-message.assistant .message-bubble{transition:height .15s ease-out}.msg-feedback{opacity:0;gap:.125rem;margin-top:.25rem;margin-left:.25rem;transition:opacity .2s;display:flex}.chat-message:hover .msg-feedback,.msg-feedback.comment-form,.msg-feedback.submitted{opacity:1}.feedback-btn{color:var(--text-muted);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:6px;align-items:center;padding:.25rem;transition:color .15s,border-color .15s;display:flex}.feedback-btn:hover{color:var(--text);border-color:var(--border);background:0 0}.feedback-btn.active{color:var(--gold);background:0 0}.feedback-thanks{color:var(--text-muted);padding:.25rem 0;font-size:.6875rem}.feedback-popover-anchor{position:relative}.feedback-popover{background:var(--surface-raised);border:1px solid var(--border);z-index:10;border-radius:10px;width:260px;padding:.75rem;animation:.15s ease-out popover-in;position:absolute;bottom:calc(100% + .5rem);left:50%;transform:translate(-50%);box-shadow:0 8px 32px #0006}.feedback-popover:after{content:"";border:6px solid #0000;border-top-color:var(--border);position:absolute;top:100%;left:50%;transform:translate(-50%)}@keyframes popover-in{0%{opacity:0;transform:translate(-50%)translateY(4px)}to{opacity:1;transform:translate(-50%)translateY(0)}}.feedback-comment{background:var(--bg);border:1px solid var(--border);width:100%;color:var(--text);font-family:var(--font-sans);resize:none;border-radius:8px;padding:.5rem .75rem;font-size:.8125rem;line-height:1.4}.feedback-comment:focus{border-color:var(--gold-dim);outline:none}.feedback-actions{justify-content:flex-end;gap:.375rem;margin-top:.5rem;display:flex}.feedback-cancel{border:1px solid var(--border);color:var(--text-muted);background:0 0;border-radius:6px;padding:.25rem .625rem;font-size:.6875rem}.feedback-cancel:hover{color:var(--text);background:0 0}.feedback-submit{border-radius:6px;padding:.25rem .625rem;font-size:.6875rem}.streaming-cursor{vertical-align:text-bottom;background:var(--gold);width:2px;height:1.05em;box-shadow:0 0 8px var(--gold-glow-strong), 0 0 16px var(--gold-glow);border-radius:1px;margin-left:2px;animation:.8s ease-in-out infinite cursor-pulse;display:inline-block}@keyframes cursor-pulse{0%,to{opacity:1;box-shadow:0 0 8px var(--gold-glow-strong), 0 0 16px var(--gold-glow)}50%{opacity:.2;box-shadow:0 0 4px var(--gold-glow)}}.chat-input-wrapper{width:100%;padding:1rem 1.5rem calc(1.5rem + env(safe-area-inset-bottom,0px));background:linear-gradient(to top, var(--bg-deep) 0%, var(--bg) 100%);justify-content:center;display:flex;position:relative}.chat-input-wrapper:before{content:"";background:linear-gradient(90deg, transparent 10%, var(--border) 50%, transparent 90%);height:1px;position:absolute;top:0;left:0;right:0}.chat-input{background:var(--surface);border:1px solid var(--border);border-radius:14px;align-items:center;gap:0;width:100%;max-width:680px;padding:.375rem .375rem .375rem 0;transition:border-color .3s,box-shadow .3s;display:flex}.chat-input:focus-within{border-color:var(--gold-dim);box-shadow:0 0 0 3px var(--gold-glow), 0 2px 24px #c9a84c0f}.chat-input textarea{color:var(--text-bright);font-family:var(--font-sans);resize:none;background:0 0;border:none;flex:1;max-height:120px;padding:.75rem .75rem .75rem 1rem;font-size:1rem;font-weight:300;line-height:1.5}.chat-input textarea:focus{outline:none}.chat-input textarea::placeholder{color:var(--text-muted);opacity:.5}.chat-input button{white-space:nowrap;letter-spacing:.01em;border-radius:10px;flex-shrink:0;padding:.5rem 1.25rem;font-size:.875rem;font-weight:500}.chat-input button:disabled{opacity:.3;cursor:not-allowed;background:var(--text-muted)}.admin-page{max-width:720px;margin:0 auto;padding-top:1.5rem}.admin-header{margin-bottom:1.5rem}.admin-header h1{font-family:var(--font-serif);color:var(--text-bright);margin-bottom:1rem;font-size:1.5rem;font-weight:500}.admin-tabs{gap:.5rem;display:flex}.admin-tabs button{background:var(--surface);border:1px solid var(--border);color:var(--text-muted);padding:.5rem 1rem;font-size:.8125rem;font-weight:400}.admin-tabs button.active{background:var(--gold-glow);color:var(--gold);border-color:#c9a84c33}.admin-section{flex-direction:column;gap:1rem;display:flex}.admin-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1rem}.card-header{justify-content:space-between;align-items:center;margin-bottom:.5rem;display:flex}.version-badge{color:var(--gold);background:var(--gold-glow);border-radius:999px;padding:.125rem .5rem;font-size:.6875rem}.card-preview{color:var(--text-muted);margin-bottom:.75rem;font-size:.875rem;line-height:1.4}.input-row{gap:.5rem;display:flex}.input-row input{flex:1}.prompt-editor{background:var(--bg);border:1px solid var(--border);width:100%;min-height:400px;color:var(--text);resize:vertical;border-radius:8px;padding:1rem;font-family:SF Mono,Fira Code,monospace;font-size:.8125rem;line-height:1.6}.editor-header{justify-content:space-between;align-items:center;margin-bottom:1rem;display:flex}.editor-actions{gap:.5rem;display:flex}.admin-table{border-collapse:collapse;width:100%;font-size:.8125rem}.admin-table th{text-align:left;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;border-bottom:1px solid var(--border);background:var(--bg-deep);padding:.75rem 1rem;font-size:.6875rem;font-weight:400}.admin-table td{border-bottom:1px solid var(--border);vertical-align:middle;padding:.625rem 1rem}.admin-table tr:last-child td{border-bottom:none}.admin-table tr:hover td{background:#ffffff05}.text-muted{color:var(--text-muted)}.credits-cell{font-variant-numeric:tabular-nums}.grant-row{gap:.375rem;display:flex}.grant-row input{text-align:center;width:60px;padding:.25rem .5rem;font-size:.75rem}.grant-row button{border-radius:6px;padding:.25rem .625rem;font-size:.6875rem}.reset-btn{color:#f87171;cursor:pointer;background:0 0;border:1px solid #f871714d;border-radius:6px;padding:.25rem .625rem;font-size:.6875rem}.reset-btn:hover{background:#f871711a}.sign-tag{text-transform:capitalize;color:var(--gold);background:var(--gold-glow);border-radius:999px;padding:.125rem .5rem;font-size:.6875rem}label{color:var(--text-muted);letter-spacing:.02em;margin-bottom:.5rem;font-size:.8125rem;font-weight:400;display:block}
