:root{color-scheme:dark;--bg:#212121;--panel:#171717;--soft:#2f2f2f;--line:#424242;--text:#ececec;--muted:#a9a9a9;--accent:#10a37f}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:Inter,"Noto Sans KR",Segoe UI,sans-serif}button,input,textarea,select{font:inherit}a{color:inherit}header{height:58px;background:#111;border-bottom:1px solid #303030;display:flex;align-items:center;padding:0 22px;justify-content:space-between}.brand{text-decoration:none;font-weight:700;font-size:18px}.account{display:flex;gap:16px;align-items:center;color:#ccc;font-size:13px}.account a{text-decoration:none}.account form{margin:0}.account button,.history-row button{background:none;border:0;color:#aaa;cursor:pointer}.flash{padding:10px 22px}.flash.success{background:#113d31}.flash.error{background:#582020}.chat-shell{height:calc(100vh - 58px);display:grid;grid-template-columns:280px 1fr}.sidebar{background:var(--panel);padding:14px 10px;display:flex;flex-direction:column;min-height:0}.new-chat{border:1px solid var(--line);border-radius:10px;padding:12px;text-decoration:none;margin-bottom:12px}.history{overflow-y:auto;flex:1}.history-row{display:flex;border-radius:9px;margin:3px 0;align-items:center}.history-row:hover,.history-row.selected{background:#2a2a2a}.history-row>a{padding:10px;min-width:0;display:flex;flex:1;flex-direction:column;text-decoration:none}.history-row span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.history-row small{color:var(--muted);margin-top:3px}.privacy{border-top:1px solid #333;padding:14px 8px 4px;color:#8abcae;font-size:12px;line-height:1.7}.chat-main{min-width:0;display:flex;flex-direction:column;height:100%}.chat-title{height:64px;border-bottom:1px solid #333;padding:10px 24px}.chat-title h2{font-size:16px;margin:0 0 5px}.chat-title span{color:var(--muted);font-size:11px}.messages{flex:1;overflow:auto;padding:28px max(20px,calc((100% - 800px)/2)) 170px}.welcome{text-align:center;margin-top:18vh}.welcome h1{font-size:30px}.welcome p{color:var(--muted)}.message{display:flex;gap:14px;margin:0 0 28px}.avatar{width:32px;height:32px;border-radius:50%;background:#555;display:grid;place-items:center;font-size:12px;flex:none}.assistant .avatar{background:var(--accent)}.bubble{white-space:pre-wrap;line-height:1.7;min-width:0;overflow-wrap:anywhere}.user .bubble{background:var(--soft);border-radius:18px;padding:11px 16px;margin-left:auto;max-width:78%}.composer{position:fixed;bottom:0;left:280px;right:0;background:linear-gradient(transparent,var(--bg) 30%);padding:35px max(20px,calc((100% - 800px)/2)) 18px}.composer textarea{width:100%;max-height:180px;resize:none;background:var(--soft);color:white;border:1px solid #555;border-radius:24px;padding:15px 55px 15px 18px;outline:none}.composer textarea:focus{border-color:#777}.send{position:absolute;right:max(29px,calc((100% - 760px)/2));top:47px;width:36px;height:36px;border-radius:50%;border:0;background:#fff;color:#111;font-size:20px;cursor:pointer}.send:disabled{opacity:.4}.composer-note{text-align:center;color:#8d8d8d;font-size:11px;margin-top:7px}.login-page{min-height:100vh;display:grid;place-items:center;background:radial-gradient(circle at top,#183b34,#111 55%)}.login-card{width:min(420px,92vw);background:#1b1b1b;border:1px solid #3a3a3a;padding:36px;border-radius:18px;box-shadow:0 20px 70px #0008}.login-card h1{text-align:center}.login-card p,.login-card small{display:block;text-align:center;color:var(--muted)}.lock{text-align:center;color:var(--accent);font-size:30px}.login-card label{display:block;margin:16px 0 6px}.login-card input,.form-grid input,.form-grid select{width:100%;background:#292929;border:1px solid #555;color:#fff;border-radius:9px;padding:12px}.primary{background:var(--accent);border:0;color:white;border-radius:9px;padding:12px;cursor:pointer}.login-card .primary{width:100%;margin:22px 0 14px}.validation{color:#ff9d9d}.admin-page{max-width:1000px;margin:30px auto;padding:0 20px}.admin-head{display:flex;justify-content:space-between}.admin-card{background:#181818;border:1px solid #3a3a3a;border-radius:14px;padding:22px;margin:20px 0}.form-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.table{margin-top:18px}.table>div{display:flex;justify-content:space-between;padding:10px;border-top:1px solid #333}.hidden{display:none}@media(max-width:760px){.chat-shell{grid-template-columns:1fr}.sidebar{display:none}.composer{left:0}.account span{display:none}.form-grid{grid-template-columns:1fr}.messages{padding-left:16px;padding-right:16px}}
