:root{--nb-bg:#FFFFFF;--nb-card:#FAF8F5;--nb-card-2:#F4F1EC;--nb-line:#ECE8E2;--nb-line-2:#DCD6CD;--nb-fg:#0A0A0A;--nb-fg-2:#2E2C29;--nb-muted:#5F5B55;--nb-faint:#8A857E;--nb-tan:#C9AE8A;--nb-tan-ink:#82633A;--nb-me:#0A0A0A;--nb-me-ink:#FFFFFF;--nb-shade:rgba(34,24,14,.3)}
:root[data-theme="dark"]{--nb-bg:#0B0A09;--nb-card:#141311;--nb-card-2:#1C1A17;--nb-line:#24221F;--nb-line-2:#35322E;--nb-fg:#FFFFFF;--nb-fg-2:#E6E3DE;--nb-muted:#A8A39C;--nb-faint:#7D7871;--nb-tan:#C9AE8A;--nb-tan-ink:#C9AE8A;--nb-me:#FFFFFF;--nb-me-ink:#000000;--nb-shade:rgba(255,255,255,.12)}
.nb-btn{position:fixed;right:max(20px,env(safe-area-inset-right,0px));bottom:max(20px,env(safe-area-inset-bottom,0px));z-index:90;display:grid;place-items:center;width:56px;height:56px;padding:0;border:1px solid var(--nb-line-2);border-radius:50%;background:var(--nb-bg);box-shadow:0 10px 28px -12px rgba(0,0,0,.35);cursor:pointer;transition:transform .2s,border-color .15s}
.nb-btn img{width:34px;height:34px;filter:drop-shadow(0 1px 1.5px rgba(0,0,0,.18))}
.nb-btn:hover{border-color:var(--nb-tan)}
@media (prefers-reduced-motion:no-preference){.nb-btn:hover{transform:translateY(-2px)}}
.nb-btn:focus-visible{outline:2px solid var(--nb-fg);outline-offset:3px}
.nb-open .nb-btn{border-color:var(--nb-tan)}
.nb-panel{position:fixed;right:max(20px,env(safe-area-inset-right,0px));bottom:calc(max(20px,env(safe-area-inset-bottom,0px)) + 68px);z-index:91;display:flex;flex-direction:column;width:min(380px,calc(100vw - 32px));height:min(560px,calc(100vh - 120px));background:var(--nb-bg);border:1px solid var(--nb-line-2);border-radius:16px;box-shadow:0 26px 60px -24px rgba(0,0,0,.45);overflow:hidden;font-family:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;color:var(--nb-fg)}
.nb-panel[hidden]{display:none}
@media (prefers-reduced-motion:no-preference){.nb-panel{animation:nbin .2s ease-out;transform-origin:bottom right}}
@keyframes nbin{from{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:none}}
.nb-bar{display:flex;align-items:center;gap:10px;height:40px;padding:0 8px 0 14px;border-bottom:1px solid var(--nb-line);background:var(--nb-card);flex:none}
.nb-dots{display:flex;gap:6px}
.nb-dots i{width:10px;height:10px;border-radius:50%;border:1px solid var(--nb-line-2)}
.nb-bar b{flex:1;text-align:center;font:500 12.5px/1 ui-monospace,"Cascadia Mono",Menlo,Consolas,monospace;color:var(--nb-faint);padding-left:22px}
.nb-x{display:grid;place-items:center;width:30px;height:30px;padding:0;border:0;border-radius:8px;background:transparent;color:var(--nb-muted);cursor:pointer}
.nb-x:hover{background:var(--nb-card-2);color:var(--nb-fg)}
.nb-x svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round}
.nb-head{display:flex;align-items:center;gap:14px;padding:16px 16px 8px;flex:none}
.nb-head p{margin:0;font-size:15px;line-height:1.45;color:var(--nb-fg-2)}
.nb-cat{position:relative;width:60px;flex:none;padding-bottom:10px}
.nb-cat img{position:relative;z-index:1;display:block;width:100%;height:auto}
.nb-cat span{position:absolute;left:12%;right:12%;bottom:2px;height:10px;border-radius:50%;background:radial-gradient(closest-side,var(--nb-shade),transparent)}
@media (prefers-reduced-motion:no-preference){.nb-cat img{animation:nbfloat 5.2s ease-in-out infinite}.nb-cat span{animation:nbground 5.2s ease-in-out infinite}}
@keyframes nbfloat{0%,100%{transform:translateY(0) rotate(-.6deg)}50%{transform:translateY(-6px) rotate(.6deg)}}
@keyframes nbground{0%,100%{transform:scaleX(1);opacity:1}50%{transform:scaleX(.78);opacity:.55}}
.nb-log{flex:1;min-height:0;overflow-y:auto;padding:8px 16px 12px;display:flex;flex-direction:column;gap:10px;overscroll-behavior:contain}
.nb-msg{max-width:88%}
.nb-msg p{margin:0;padding:10px 13px;border-radius:14px;font-size:14.5px;line-height:1.5}
.nb-msg.nb-bot{align-self:flex-start}
.nb-msg.nb-bot p{background:var(--nb-card);border:1px solid var(--nb-line);border-top-left-radius:6px;color:var(--nb-fg-2)}
.nb-msg.nb-me{align-self:flex-end}
.nb-msg.nb-me p{background:var(--nb-me);color:var(--nb-me-ink);border-top-right-radius:6px}
.nb-links,.nb-tools,.nb-steps{display:flex;flex-direction:column;gap:6px;margin-top:8px}
.nb-links a,.nb-tools a,.nb-steps a{display:flex;align-items:center;gap:10px;padding:9px 12px;border:1px solid var(--nb-line);border-radius:12px;background:var(--nb-bg);color:var(--nb-fg);font-size:14px;text-decoration:none;transition:border-color .15s,background .15s}
.nb-links a:hover,.nb-tools a:hover,.nb-steps a:hover{border-color:var(--nb-line-2);background:var(--nb-card-2)}
.nb-tools a span::after,.nb-links a span::after{content:" \2192";color:var(--nb-faint)}
.nb-n{display:grid;place-items:center;width:22px;height:22px;flex:none;border-radius:50%;background:var(--nb-card-2);font:600 12px/1 ui-monospace,"Cascadia Mono",Menlo,Consolas,monospace;color:var(--nb-tan-ink)}
.nb-chips{display:flex;flex-wrap:wrap;gap:6px}
.nb-chips button{height:32px;padding:0 12px;border:1px solid var(--nb-line);border-radius:999px;background:var(--nb-bg);color:var(--nb-fg-2);font:400 13.5px/1 inherit;cursor:pointer}
.nb-chips button:hover{border-color:var(--nb-line-2);color:var(--nb-fg)}
.nb-typing p{display:flex;gap:4px;align-items:center;height:38px}
.nb-typing i{width:6px;height:6px;border-radius:50%;background:var(--nb-faint)}
@media (prefers-reduced-motion:no-preference){.nb-typing i{animation:nbdot 1s infinite}.nb-typing i:nth-child(2){animation-delay:.15s}.nb-typing i:nth-child(3){animation-delay:.3s}}
@keyframes nbdot{0%,100%{opacity:.3}50%{opacity:1}}
.nb-form{display:flex;align-items:center;gap:8px;padding:10px;border-top:1px solid var(--nb-line);flex:none}
.nb-form input{flex:1;min-width:0;height:42px;padding:0 14px;border:1px solid var(--nb-line);border-radius:12px;background:var(--nb-card);color:var(--nb-fg);font:400 15px/1 inherit;outline:0}
.nb-form input:focus{border-color:var(--nb-line-2)}
.nb-form button{display:grid;place-items:center;width:42px;height:42px;flex:none;padding:0;border:0;border-radius:12px;background:var(--nb-me);color:var(--nb-me-ink);cursor:pointer}
.nb-form button svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.nb-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
@media (max-width:520px){
  .nb-btn{width:50px;height:50px;right:max(14px,env(safe-area-inset-right,0px));bottom:max(14px,env(safe-area-inset-bottom,0px))}
  .nb-btn img{width:30px;height:30px}
  .nb-panel{left:8px;right:8px;width:auto;bottom:calc(max(14px,env(safe-area-inset-bottom,0px)) + 60px);height:min(72vh,560px)}
}
@media print{.nb-btn,.nb-panel{display:none}}
