:root{--bg:oklch(0.145 0.006 285);--bg-card:oklch(0.155 0.006 285/0.6);--border:oklch(0.28 0.006 285/0.8);--fg:oklch(0.93 0.004 285);--muted:oklch(0.62 0.01 285);--primary:oklch(0.72 0.185 45);--primary-dim:oklch(0.72 0.185 45/0.12);--primary-border:oklch(0.72 0.185 45/0.35);--online:oklch(0.77 0.15 165);--offline:oklch(0.64 0.2 25);--font-sans:"Instrument Sans",sans-serif;--font-mono:"IBM Plex Mono",monospace}*{box-sizing:border-box;margin:0;padding:0}html{color-scheme:dark}body{min-height:100dvh;background:var(--bg);color:var(--fg);font-family:var(--font-sans);-webkit-font-smoothing:antialiased}.atmosphere{position:fixed;inset:0;z-index:-1;pointer-events:none;background-image:linear-gradient(oklch(.32 .008 285/.16) 1px,transparent 0),linear-gradient(90deg,oklch(.32 .008 285/.16) 1px,transparent 0);background-size:44px 44px;-webkit-mask-image:radial-gradient(ellipse 90% 70% at 50% 0,black 30%,transparent 75%);mask-image:radial-gradient(ellipse 90% 70% at 50% 0,black 30%,transparent 75%)}.atmosphere:after{content:"";position:absolute;inset:0;background:radial-gradient(ellipse 55% 38% at 50% -6%,oklch(.72 .185 45/.16),transparent 70%)}main{width:100%;max-width:60rem;margin:0 auto;padding:0 1.5rem 5rem}header{display:flex;align-items:center;gap:1rem;padding:2.25rem 0 1.5rem;border-bottom:1px solid oklch(.28 .006 285/.6)}header h1{font-size:1.25rem;font-weight:600;letter-spacing:-.01em;line-height:1}header .sub{margin-top:.4rem;font-family:var(--font-mono);font-size:11px;text-transform:uppercase;letter-spacing:.22em;color:var(--muted)}.logo{width:44px;height:44px;flex:none}.panel{margin-top:2rem;background:var(--bg-card);border:1px solid var(--border);border-radius:.8rem;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);padding:1.5rem}.label{display:block;font-family:var(--font-mono);font-size:11px;text-transform:uppercase;letter-spacing:.18em;color:var(--muted);margin-bottom:.6rem}input[type=password],textarea{width:100%;background:oklch(.1 .005 285);border:1px solid var(--border);border-radius:.5rem;color:var(--fg);font-family:var(--font-mono);font-size:.85rem;padding:.75rem .9rem;resize:vertical}textarea{min-height:7rem;line-height:1.5}input:focus,textarea:focus{outline:none;border-color:var(--primary-border)}.row{display:flex;gap:.6rem;flex-wrap:wrap;align-items:center;margin-top:1rem}button{font-family:var(--font-sans);font-weight:600;font-size:.88rem;padding:.6rem 1.2rem;border-radius:.5rem;border:1px solid var(--primary-border);background:var(--primary-dim);color:var(--primary);cursor:pointer;transition:background .2s,border-color .2s,opacity .2s}button:hover:not(:disabled){background:oklch(.72 .185 45/.2)}button:disabled{opacity:.5;cursor:not-allowed}button.ghost{background:transparent;color:var(--muted);border-color:var(--border)}button.ghost:hover:not(:disabled){color:var(--fg);border-color:var(--primary-border)}.hint{font-size:11px;color:var(--muted);margin-left:auto}.error,.hint{font-family:var(--font-mono)}.error{color:var(--offline);font-size:.8rem;margin-top:.8rem}.result{margin-top:1.5rem}.result .head{display:flex;align-items:center;justify-content:space-between;gap:.6rem;flex-wrap:wrap;margin-bottom:.6rem}.result .head .name{font-family:var(--font-mono);font-size:.8rem;color:var(--fg);word-break:break-all}.result .head .actions{display:flex;gap:.5rem}.result .head button{padding:.35rem .75rem;font-size:.78rem}pre{background:oklch(.1 .005 285);border:1px solid var(--border);border-radius:.6rem;padding:1rem;overflow:auto;max-height:28rem;font-family:var(--font-mono);font-size:.78rem;line-height:1.55;color:var(--fg);white-space:pre-wrap;word-break:break-word}.result.failed pre{border-color:var(--offline);color:var(--offline)}.login-wrap{min-height:100dvh;display:grid;place-items:center;padding:1.5rem}.login-card{width:100%;max-width:22rem;background:var(--bg-card);border:1px solid var(--border);border-radius:.8rem;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);padding:2rem;text-align:center}.login-card h1{font-size:1.1rem;font-weight:600;margin:1rem 0 .3rem}.login-card p{font-family:var(--font-mono);font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.18em;margin-bottom:1.5rem}.login-card input{text-align:center;margin-bottom:.8rem}.login-card button{width:100%}.orb-grain{position:fixed;inset:-75%;z-index:-1;width:250%;height:250%;pointer-events:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.75' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");opacity:.22;mask-image:radial-gradient(ellipse 100% 100% at 50% 25%,#000 65%,transparent 100%);-webkit-mask-image:radial-gradient(ellipse 100% 100% at 50% 25%,#000 65%,transparent 100%);animation:orb-grain-drift .7s steps(1) infinite;will-change:transform}@keyframes orb-grain-drift{0%{transform:translate(0)}10%{transform:translate(-4%,-6%)}20%{transform:translate(-9%,3%)}30%{transform:translate(5%,-11%)}40%{transform:translate(-3%,12%)}50%{transform:translate(-8%,5%)}60%{transform:translate(9%,1%)}70%{transform:translate(2%,8%)}80%{transform:translate(-6%,4%)}90%{transform:translate(7%,-3%)}to{transform:translate(0)}}@media (prefers-reduced-motion:reduce){.orb-grain{animation:none}}select{background:oklch(.1 .005 285);border:1px solid var(--border);border-radius:.5rem;color:var(--fg);font-family:var(--font-mono);font-size:.8rem;padding:.55rem .7rem}select:focus{outline:none;border-color:var(--primary-border)}select option{background:oklch(.12 .005 285)}.gallery{margin-top:2rem;display:grid;grid-template-columns:repeat(auto-fill,minmax(15rem,1fr));grid-gap:1rem;gap:1rem}.gallery figure{background:var(--bg-card);border:1px solid var(--border);border-radius:.8rem;overflow:hidden}.gallery img{display:block;width:100%;height:auto;background:oklch(.1 .005 285)}.gallery figcaption{display:flex;flex-direction:column;gap:.35rem;padding:.7rem .8rem .9rem;font-family:var(--font-mono);font-size:.7rem}.gallery .meta{color:var(--primary);text-transform:uppercase;letter-spacing:.1em}.gallery .prompt{color:var(--muted);line-height:1.45;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.gallery a{color:var(--fg);text-decoration:none;border-bottom:1px solid var(--primary-border);align-self:flex-start}.gallery a:hover{color:var(--primary)}