:root{--paper:#0e1413;--surface:#171d1b;--surface-2:#212826;--line:#2b322f;--line-soft:#232a28;--ink:#e7e8e4;--ink-2:#aeb2ad;--ink-3:#767c78;--accent:#12c7ac;--accent-2:#0e7c6b;--accent-ink:#06110e;--warn:#e0b65e;--bad:#e08a83;--good:#5fbe86;--safe-t:env(safe-area-inset-top);--safe-b:env(safe-area-inset-bottom);--tabh:60px;--sans:-apple-system,BlinkMacSystemFont,"Apple SD Gothic Neo","Noto Sans KR","Malgun Gothic",system-ui,sans-serif}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{height:100%}body{background:var(--paper);color:var(--ink);font-family:var(--sans);overscroll-behavior-y:none;-webkit-font-smoothing:antialiased;margin:0;font-size:15px;line-height:1.6}button,input,textarea,select{color:inherit;font-family:inherit;font-size:16px}button{cursor:pointer;background:0 0;border:none}.app{flex-direction:column;max-width:640px;min-height:100%;margin:0 auto;display:flex}.hdr{z-index:10;padding:calc(var(--safe-t) + 12px) 18px 12px;-webkit-backdrop-filter:saturate(1.4)blur(12px);backdrop-filter:saturate(1.4)blur(12px);border-bottom:1px solid var(--line-soft);background:#0e1413d9;justify-content:space-between;align-items:center;gap:10px;display:flex;position:sticky;top:0}.hdr h1{letter-spacing:-.02em;margin:0;font-size:18px;font-weight:800}.hdr .sub{color:var(--ink-3);font-size:11px}.keydot{border-radius:20px;padding:3px 9px;font-size:11px;font-weight:700}.keydot.on{color:var(--good);background:#5fbe8626}.keydot.off{color:var(--warn);background:#e0b65e26}.main{padding:16px 18px calc(var(--tabh) + var(--safe-b) + 20px);-webkit-overflow-scrolling:touch;flex:1;overflow-y:auto}.tabs{z-index:20;height:calc(var(--tabh) + var(--safe-b));padding-bottom:var(--safe-b);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-top:1px solid var(--line);background:#0e1413eb;max-width:640px;margin:0 auto;display:flex;position:fixed;bottom:0;left:0;right:0}.tabs button{color:var(--ink-3);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:3px;font-size:11px;font-weight:600;transition:color .15s;display:flex}.tabs button.on{color:var(--accent)}.tabs .ic{font-size:20px;line-height:1}.field{margin-bottom:14px}.field label{color:var(--ink-3);letter-spacing:.02em;margin-bottom:6px;font-size:12px;font-weight:600;display:block}input.txt,textarea.txt{background:var(--surface);border:1px solid var(--line);width:100%;color:var(--ink);border-radius:12px;outline:none;padding:13px 14px;transition:border-color .15s}input.txt:focus,textarea.txt:focus{border-color:var(--accent-2)}textarea.txt{resize:vertical;min-height:96px;line-height:1.5}.optrow{margin-bottom:13px}.optrow .ol{color:var(--ink-3);margin-bottom:6px;font-size:12px;font-weight:600}.seg{background:var(--surface);border:1px solid var(--line);border-radius:11px;display:flex;overflow:hidden}.seg button{min-height:40px;color:var(--ink-2);border-right:1px solid var(--line);flex:1;font-size:13px;font-weight:600}.seg button:last-child{border-right:none}.seg button.on{background:var(--accent-2);color:#fff}.chips{flex-wrap:wrap;gap:7px;display:flex}.chips button{background:var(--surface);border:1px solid var(--line);min-height:38px;color:var(--ink-2);border-radius:20px;padding:0 14px;font-size:13px;font-weight:600}.chips button.on{color:var(--accent);border-color:var(--accent);background:#12c7ac24}.disclosure{text-align:left;width:100%;color:var(--accent);padding:12px 2px;font-size:13.5px;font-weight:700}.gen{background:var(--accent);width:100%;min-height:54px;color:var(--accent-ink);letter-spacing:-.01em;border-radius:15px;margin-top:8px;font-size:16px;font-weight:800;box-shadow:0 6px 18px #12c7ac38}.gen:disabled{opacity:.5;box-shadow:none}.banner{color:var(--warn);background:#e0b65e1f;border:1px solid #e0b65e66;border-radius:12px;margin-bottom:14px;padding:11px 14px;font-size:13px}.err{color:var(--bad);margin-top:10px;font-size:13px}.card{background:var(--surface);border:1px solid var(--line);border-radius:16px;margin-top:16px;padding:16px}.card .ttl{letter-spacing:-.01em;margin:0 0 10px;font-size:16px;font-weight:800;line-height:1.35}.card .bd{white-space:pre-wrap;font-size:15px;line-height:1.66}.card .selfr{border-top:1px dashed var(--line);margin-top:14px;padding-top:13px}.card .selfr .k{color:var(--ink-3);margin-bottom:5px;font-size:11px;font-weight:700}.count{border-radius:10px;padding:2px 8px;font-family:ui-monospace,monospace;font-size:11px;font-weight:700}.count.ok{color:var(--good);background:#5fbe8626}.count.mid{color:var(--warn);background:#e0b65e26}.count.over{color:var(--bad);background:#e08a8326}.row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.btns{gap:8px;margin-top:14px;display:flex}.btn2{background:var(--surface-2);min-height:44px;color:var(--ink);border:1px solid var(--line);border-radius:11px;flex:1;font-size:13.5px;font-weight:700}.btn2.pri{background:var(--accent-2);color:#fff;border-color:var(--accent-2)}.stream{white-space:pre-wrap;color:var(--ink-2);font-size:14.5px;line-height:1.6}.blink:after{content:"▍";color:var(--accent);animation:1s steps(2,end) infinite bl}@keyframes bl{50%{opacity:0}}.rec{background:var(--surface);border:1px solid var(--line);border-radius:14px;margin-bottom:11px;padding:14px}.rec .rt{margin:0 0 6px;font-size:14.5px;font-weight:700;line-height:1.4}.rec .rb{color:var(--ink-2);white-space:pre-wrap;max-height:88px;font-size:13px;position:relative;overflow:hidden}.rec .meta{color:var(--ink-3);justify-content:space-between;align-items:center;margin-top:9px;font-size:11px;display:flex}.rec .del{color:var(--bad);font-size:12px;font-weight:700}.empty{text-align:center;color:var(--ink-3);padding:60px 20px;font-size:14px}.auth{padding:calc(var(--safe-t) + 8vh) 22px 40px;max-width:420px;margin:0 auto}.auth .logo{text-align:center;font-size:44px}.auth h2{text-align:center;letter-spacing:-.02em;margin:8px 0 4px;font-size:24px;font-weight:800}.auth p.lead{text-align:center;color:var(--ink-3);margin:0 0 26px;font-size:13px}.auth .switch{text-align:center;color:var(--ink-3);margin-top:16px;font-size:13px}.auth .switch b{color:var(--accent);font-weight:700}.hint{color:var(--ink-3);margin-top:6px;font-size:12px}select.txt{background:var(--surface);border:1px solid var(--line);border-radius:12px;width:100%;padding:13px 14px}
