@font-face{font-family:Lato;src:url(/fonts/lato/Lato-Regular.ttf) format("truetype");font-weight:400;font-display:swap}@font-face{font-family:Lato;src:url(/fonts/lato/Lato-Bold.ttf) format("truetype");font-weight:700;font-display:swap}@font-face{font-family:Playfair Display;src:url(/fonts/playfair-display/PlayfairDisplay%5Bwght%5D.ttf) format("truetype");font-weight:400 900;font-display:swap}:root{--hafary-blue: #273D91;--accent: #273D91;--accent-strong: #263D91;--accent-subtle: #EEF0F8;--accent-foreground: #FFFFFF;--background: #F8F7F4;--surface: #FFFFFF;--surface-muted: #F1F0ED;--foreground: #252525;--text-secondary: #5B5B5B;--text-muted: #64615B;--border: #DEDDD7;--border-subtle: #EBE9E3;--border-strong: #B9B7B1;--control-border: #908E87;--success-fg: #1f6b3a;--success-bg: #E3F2E7;--warning-fg: #7a4d00;--warning-bg: #FBF1DD;--danger-fg: #8f1d18;--danger-bg: #FBE4E2;--radius-control: 6px;--radius-panel: 10px;--radius-surface: 12px;--control-md: 44px;--control-sm: 36px;--font-body: "Lato", system-ui, sans-serif;--font-editorial: "Playfair Display", Georgia, serif;color-scheme:light}*{box-sizing:border-box}html,body{margin:0;background:var(--background);color:var(--foreground);font-family:var(--font-body);font-size:14px;line-height:1.45}button,input,select,textarea{font:inherit}a{color:var(--accent)}.num{font-variant-numeric:tabular-nums}.muted{color:var(--text-muted);font-size:12px}.secondary{color:var(--text-secondary)}h1.page{font-family:var(--font-editorial);font-weight:500;font-size:28px;line-height:1.2;margin:0}h2{font-size:16px;margin:0}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.app{min-height:100vh;display:flex;flex-direction:column;border-top:4px solid var(--accent)}.masthead{background:var(--surface);border-bottom:1px solid var(--border)}.masthead-row{max-width:1504px;margin:0 auto;display:flex;align-items:center;gap:10px;padding:12px 16px 6px}.wordmark{width:125px;height:auto;display:block}.app-name{font-size:12px;color:var(--text-secondary);border-left:1px solid var(--border);padding-left:10px;flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.masthead-row .btn{white-space:nowrap;flex:none}@media (max-width: 360px){.wordmark{width:100px}.btn-initials{display:none}}.nav{max-width:1504px;margin:0 auto;display:flex;gap:20px;padding:0 16px;overflow-x:auto}.nav a{position:relative;padding:10px 0;color:var(--text-secondary);text-decoration:none;white-space:nowrap;display:flex;gap:6px;align-items:center}.nav a:after{content:"";position:absolute;left:0;right:0;bottom:0;height:2px;border-radius:2px 2px 0 0;background:var(--accent);transform:scaleX(0)}.nav a[aria-current=page]{color:var(--accent);font-weight:700}.nav a[aria-current=page]:after{transform:none}.count{background:var(--accent-strong);color:#fff;font-size:11px;font-weight:700;border-radius:9px;padding:1px 6px}.demo-banner{background:var(--accent-subtle);color:var(--accent);font-size:12px;padding:6px 16px;text-align:center}.main{flex:1;width:100%;max-width:760px;margin:0 auto;padding:20px 16px;display:flex;flex-direction:column;gap:14px}.main.wide{max-width:1504px}.btn{height:var(--control-md);padding:0 16px;border-radius:var(--radius-control);border:1px solid var(--border-strong);background:var(--surface);color:var(--foreground);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:6px}.btn.primary{background:var(--accent-strong);color:var(--accent-foreground);border-color:var(--accent-strong);font-weight:700}.btn.sm{height:var(--control-sm);padding:0 12px}.btn.link{border:0;background:transparent;color:var(--accent);padding:0 8px}.btn.danger{color:var(--danger-fg)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn:focus-visible,.input:focus-visible,.chip:focus-visible,.nav a:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.input{height:var(--control-md);padding:0 12px;border:1px solid var(--control-border);border-radius:var(--radius-control);background:var(--surface);width:100%}select.input{padding:0 8px}@media (max-width: 600px){.input,select.input{font-size:16px}}.field{display:flex;flex-direction:column;gap:6px}.field label{font-weight:700}.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.row>.grow{flex:1}.segmented{display:flex;background:var(--surface-muted);border-radius:var(--radius-control);padding:3px;gap:3px;flex-wrap:wrap}.segmented button{flex:1;height:var(--control-sm);border:0;border-radius:4px;background:transparent;color:var(--text-secondary);cursor:pointer;padding:0 12px}.segmented button[aria-pressed=true]{background:var(--surface);color:var(--foreground);font-weight:700}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-panel);padding:14px;display:flex;flex-direction:column;gap:8px}.card.emphasis{border-color:var(--accent-strong)}.card.subdued{background:var(--surface-muted);border-color:var(--border-subtle)}.badge{font-size:12px;font-weight:700;border-radius:var(--radius-control);padding:2px 8px;white-space:nowrap;align-self:flex-start}.badge.info{color:var(--accent);background:var(--accent-subtle)}.badge.ok{color:var(--success-fg);background:var(--success-bg)}.badge.warn{color:var(--warning-fg);background:var(--warning-bg)}.badge.danger{color:var(--danger-fg);background:var(--danger-bg)}.badge.neutral{color:var(--text-secondary);background:var(--surface-muted)}.list-row{display:flex;justify-content:space-between;gap:8px;padding:10px 0;border-top:1px solid var(--border-subtle);align-items:center}.list-row:first-child{border-top:0}.alert{border-radius:var(--radius-panel);padding:10px 14px;font-size:13px}.alert.info{background:var(--accent-subtle);color:var(--accent)}.alert.error{background:var(--danger-bg);color:var(--danger-fg)}.alert.ok{background:var(--success-bg);color:var(--success-fg)}.alert.warn{background:var(--warning-bg);color:var(--warning-fg)}.big-qty{font-size:clamp(28px,7vw,36px);font-weight:700;line-height:1.1}.table-wrap{overflow-x:auto;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-panel)}table{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums}th{text-align:left;font-size:12px;color:var(--text-secondary);padding:10px 12px;border-bottom:1px solid var(--border)}td{padding:10px 12px;border-bottom:1px solid var(--border-subtle);vertical-align:top}tr:last-child td{border-bottom:0}td select.input{min-width:140px}.gauge{position:relative;height:10px;border-radius:5px;background:var(--surface-muted)}.gauge>.fill{height:10px;border-radius:5px}.gauge>.mark{position:absolute;top:-3px;width:2px;height:16px;background:var(--foreground)}.timeline{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px;font-size:13px}.timeline li{display:flex;gap:10px;align-items:center}.dot{width:10px;height:10px;border-radius:5px;border:2px solid var(--border-strong);flex:none}.dot.done{background:var(--accent);border-color:var(--accent)}.dot.current{border-color:var(--accent)}.chat{display:flex;flex-direction:column;gap:14px}.bubble-user{align-self:flex-end;max-width:82%;background:var(--accent-strong);color:#fff;padding:10px 14px;border-radius:12px 12px 4px;white-space:pre-wrap}.assistant{display:flex;flex-direction:column;gap:10px;max-width:100%}.chips{display:flex;gap:8px;flex-wrap:wrap}.chip{height:var(--control-sm);padding:0 12px;border:1px solid var(--border);border-radius:18px;background:var(--surface);color:var(--accent);cursor:pointer}.composer{background:var(--surface);border-top:1px solid var(--border);padding:12px 16px 16px}.composer form{max-width:760px;margin:0 auto;display:flex;align-items:flex-end;gap:8px}.icon-btn{width:var(--control-md);height:var(--control-md);flex:none;border-radius:var(--radius-control);border:1px solid var(--border-strong);background:var(--surface);color:var(--accent);display:flex;align-items:center;justify-content:center;cursor:pointer}.icon-btn.primary{background:var(--accent-strong);color:#fff;border-color:var(--accent-strong)}.icon-btn:disabled{opacity:.45;cursor:default}.icon-btn.ghost{border-color:transparent;background:transparent;color:var(--text-muted)}.icon-btn.ghost:hover,.icon-btn.ghost.on{color:var(--accent);background:var(--accent-subtle)}.icon-btn.sm{width:32px;height:32px}.feedback{display:flex;flex-direction:column;gap:6px;margin-top:2px}.feedback .row{gap:2px}.feedback-reasons{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.chip.sm{height:30px;padding:0 10px;font-size:13px}.chip.on{background:var(--accent-subtle);border-color:var(--accent);font-weight:700}.composer-input{height:auto;min-height:var(--control-md);max-height:168px;padding:11px 12px;line-height:20px;resize:none;overflow-y:auto;display:block}.mic-btn{touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}.voice-bar{max-width:760px;margin:0 auto;display:flex;align-items:flex-end;gap:8px}.voice-main{flex:1;min-width:0;min-height:var(--control-md);border:1px solid var(--accent);border-radius:var(--radius-control);background:var(--accent-subtle);padding:6px 12px 8px;display:flex;flex-direction:column;gap:4px}.voice-status{display:flex;align-items:center;gap:8px;font-size:12px;font-weight:700;color:var(--accent)}.rec-dot{width:8px;height:8px;border-radius:50%;background:var(--danger-fg);flex:none}.voice-bar.connecting .rec-dot,.voice-bar.finishing .rec-dot{background:var(--text-muted)}.meter{display:inline-flex;align-items:center;gap:2px;height:14px}.meter i{width:3px;height:14px;border-radius:2px;background:var(--accent);transform-origin:center;transition:transform 80ms linear}.voice-bar.finishing .meter i{background:var(--border-strong)}.voice-time{margin-left:auto;color:var(--text-secondary);font-weight:400}.voice-time.warn{color:var(--warning-fg);font-weight:700}.voice-text{font-size:14px;line-height:20px;max-height:120px;overflow-y:auto;overflow-wrap:anywhere;color:var(--foreground)}.voice-text.empty,.voice-text .interim{color:var(--text-muted)}@media (max-width: 600px){.voice-text{font-size:16px}}.typing{color:var(--text-muted);font-size:13px;min-height:20px}.admin{display:flex;flex-wrap:wrap;gap:32px}.admin nav{flex:1 1 200px;max-width:240px;display:flex;flex-direction:column;gap:4px}.admin nav a{padding:10px 12px;border-radius:var(--radius-control);color:var(--foreground);text-decoration:none}.admin nav a[aria-current=page]{background:var(--accent-subtle);color:var(--accent);font-weight:700}.admin .content{flex:999 1 560px;min-width:0;display:flex;flex-direction:column;gap:16px}@media (max-width: 900px){.admin{gap:16px}.admin nav{flex:1 1 100%;max-width:none;flex-direction:row;overflow-x:auto}.admin nav a{white-space:nowrap}}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px}@media (hover: hover){.btn:hover:not(:disabled){border-color:var(--control-border);background:var(--surface-muted)}.btn.primary:hover:not(:disabled){background:#1f3279;border-color:#1f3279}.btn.link:hover:not(:disabled){background:var(--accent-subtle)}.chip:hover{background:var(--accent-subtle);border-color:var(--accent)}.icon-btn:hover:not(:disabled){border-color:var(--accent)}.icon-btn.primary:hover:not(:disabled){background:#1f3279}.nav a:hover{color:var(--accent)}}.input:hover:not(:disabled){border-color:var(--foreground)}.input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px #273d9133}tbody tr:hover td{background:var(--background)}.conv-menu button:focus-visible,.conv-item a:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.splash{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px}.splash-seal{width:40px;height:auto}.login-head{display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center;padding-bottom:6px}.login-seal{width:36px;height:auto;margin-bottom:10px}.app.full{height:100vh;height:100dvh;min-height:0}.chat-layout{flex:1;min-height:0;display:flex}.chat-sidebar{width:260px;flex:none;background:var(--surface-muted);border-right:1px solid var(--border);display:flex;flex-direction:column;gap:8px;padding:12px 8px;min-height:0}.chat-main{flex:1;min-width:0;display:flex;flex-direction:column;min-height:0}.chat-scroll{position:relative;flex:1;overflow-y:auto}.chat-scroll .chat{max-width:760px;margin:0 auto;padding:20px 16px}.chat-topbar{display:none;align-items:center;gap:8px;padding:8px 12px;border-bottom:1px solid var(--border);background:var(--surface)}.chat-topbar .icon-btn{border:0}.chat-title{flex:1;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:center}.chat-empty{display:flex;flex-direction:column;gap:12px;padding-top:8vh}.new-chat{justify-content:flex-start;background:var(--surface)}.conv-search{height:var(--control-sm)}.conv-list{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:12px;padding-top:4px}.conv-group-label{font-size:12px;font-weight:700;color:var(--text-muted);padding:0 8px 4px}.conv-item{position:relative;display:flex;align-items:center;border-radius:var(--radius-control)}.conv-item a{flex:1;min-width:0;padding:8px;color:var(--foreground);text-decoration:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.conv-item:hover,.conv-item.active{background:var(--border-subtle)}.conv-item.active a{font-weight:700}.conv-snippet{display:block;font-size:12px;font-weight:400;color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.conv-item mark{background:var(--warning-bg);color:inherit;border-radius:2px;padding:0 1px}.conv-item.editing{padding:2px}.conv-item.editing .input{height:var(--control-sm)}.conv-menu-btn{width:32px;height:32px;flex:none;border:0;background:transparent;color:var(--text-muted);border-radius:var(--radius-control);cursor:pointer;opacity:0}.conv-item:hover .conv-menu-btn,.conv-item.active .conv-menu-btn,.conv-menu-btn:focus-visible,.conv-menu-btn[aria-expanded=true]{opacity:1}.conv-menu{position:absolute;right:4px;top:36px;z-index:20;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-panel);padding:4px;display:flex;flex-direction:column;min-width:140px;box-shadow:0 4px 16px #00000014}.conv-menu button{text-align:left;border:0;background:transparent;padding:8px 10px;border-radius:var(--radius-control);cursor:pointer}.conv-menu button:hover{background:var(--surface-muted)}.conv-menu .danger{color:var(--danger-fg)}.drawer-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000004d;z-index:30}.chat-drawer{position:absolute;top:0;bottom:0;left:0;width:min(300px,85vw);background:var(--surface-muted);display:flex;flex-direction:column;gap:8px;padding:12px 8px}@media (max-width: 900px){.chat-sidebar{display:none}.chat-topbar{display:flex}.conv-menu-btn{opacity:1}}@media (hover: none){.conv-menu-btn{opacity:1}}.assistant-head{display:flex;align-items:center;gap:8px}.avatar{width:28px;height:28px;flex:none;border-radius:50%;background:var(--accent-strong);color:#fff;font-family:var(--font-editorial);font-size:15px;display:inline-flex;align-items:center;justify-content:center;position:relative}.avatar.working:after{content:"";position:absolute;top:-4px;right:-4px;bottom:-4px;left:-4px;border-radius:50%;border:2px solid var(--accent);opacity:0;animation:ring 1.4s ease-out infinite}.assistant-text{margin:0;white-space:pre-wrap}.caret{display:inline-block;width:8px;height:1.05em;margin-left:2px;vertical-align:-2px;background:var(--accent);border-radius:1px;animation:blink 1s steps(1) infinite}.typing-dots{display:inline-flex;gap:5px;padding:10px 14px;background:var(--surface);border:1px solid var(--border);border-radius:12px 12px 12px 4px;align-self:flex-start}.typing-dots i{width:7px;height:7px;border-radius:50%;background:var(--text-muted);animation:bounce 1.2s ease-in-out infinite}.typing-dots i:nth-child(2){animation-delay:.15s}.typing-dots i:nth-child(3){animation-delay:.3s}.steps{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px;font-size:13px;color:var(--text-secondary)}.steps li{display:flex;gap:8px;align-items:center;animation:fade-up .24s ease-out both}.step-icon{width:16px;height:16px;flex:none;display:inline-flex;align-items:center;justify-content:center;font-size:11px;color:var(--success-fg)}.steps li.current .step-icon{border-radius:50%;border:2px solid var(--accent);border-right-color:transparent;animation:spin .8s linear infinite}.shimmer{background:linear-gradient(90deg,var(--text-secondary) 0%,var(--accent) 45%,var(--text-secondary) 90%);background-size:200% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;animation:shimmer 1.6s linear infinite}.pop-in{animation:pop-in .24s cubic-bezier(.2,.8,.2,1) both}.block-enter{animation:fade-up .24s ease-out both}.icon-btn.stop{animation:pulse 1.6s ease-in-out infinite}.voice-bar.listening .rec-dot{animation:rec-pulse 1.2s ease-in-out infinite}.voice-bar.connecting .rec-dot,.voice-bar.finishing .rec-dot{animation:blink 1s step-end infinite}@keyframes blink{50%{opacity:0}}@keyframes bounce{0%,80%,to{transform:translateY(0);opacity:.45}40%{transform:translateY(-5px);opacity:1}}@keyframes fade-up{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@keyframes pop-in{0%{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:none}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes shimmer{0%{background-position:100% 0}to{background-position:-100% 0}}@keyframes ring{0%{transform:scale(.85);opacity:.7}to{transform:scale(1.35);opacity:0}}@keyframes rec-pulse{0%,to{box-shadow:0 0 #8f1d1873}50%{box-shadow:0 0 0 5px #8f1d1800}}@keyframes pulse{0%,to{box-shadow:0 0 #273d9159}50%{box-shadow:0 0 0 6px #273d9100}}@media (prefers-reduced-motion: reduce){.avatar.working:after,.caret,.typing-dots i,.steps li,.steps li.current .step-icon,.shimmer,.pop-in,.block-enter,.icon-btn.stop,.rec-dot{animation:none!important}.meter i{transition:none}.shimmer{color:var(--text-secondary);background:none}}.composer{position:relative;background:var(--background);border-top:0;padding:8px 16px 10px}.composer form{background:var(--surface);border:1px solid var(--control-border);border-radius:16px;padding:5px;gap:4px}.composer form:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px #273d9126}.composer .composer-input,.composer .composer-input:hover,.composer .composer-input:focus{border:0;box-shadow:none;background:transparent;padding:11px 8px}.composer form .icon-btn{border-color:transparent;border-radius:12px}.composer-input::placeholder{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.composer form .icon-btn:not(.primary){background:transparent}.composer-hint{max-width:760px;margin:6px auto 0;text-align:center;font-size:11px;color:var(--text-muted)}@media (hover: none),(max-width: 600px){.composer-hint{display:none}}.jump-latest{position:absolute;left:0;right:0;top:-46px;margin:0 auto;width:max-content;height:var(--control-sm);padding:0 14px;border-radius:18px;border:1px solid var(--border);background:var(--surface);color:var(--accent);font-weight:700;font-size:13px;display:inline-flex;align-items:center;gap:6px;cursor:pointer;z-index:5;box-shadow:0 2px 10px #00000014}.jump-latest:focus-visible,.starter:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.starters{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:8px;margin-top:8px}.starter{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:56px;padding:12px 14px;text-align:left;border:1px solid var(--border);border-radius:var(--radius-panel);background:var(--surface);color:var(--foreground);cursor:pointer}.starter svg{flex:none;color:var(--text-muted)}.starter-count{color:var(--text-muted);font-size:12px}@media (hover: hover){.starter:hover{border-color:var(--accent)}.starter:hover svg{color:var(--accent)}.composer form .icon-btn:not(.primary):hover:not(:disabled){background:var(--accent-subtle);border-color:transparent}.jump-latest:hover{border-color:var(--accent)}}:root{--motion-fast: .16s;--motion: .24s;--ease-out: cubic-bezier(.2,.8,.2,1)}@media (prefers-reduced-motion: no-preference){.btn,.chip,.icon-btn,.input,.conv-item,.conv-menu button,.segmented button,.admin nav a,.card,tbody td{transition:background-color var(--motion-fast),border-color var(--motion-fast),color var(--motion-fast),box-shadow var(--motion-fast),transform var(--motion-fast) var(--ease-out)}.btn:active:not(:disabled),.chip:active,.icon-btn:active:not(:disabled),.segmented button:active{transform:scale(.97)}.nav a{transition:color var(--motion-fast)}.nav a:after{transition:transform var(--motion) var(--ease-out);transform-origin:center}@media (hover: hover){.nav a:hover:after{transform:scaleX(.4);opacity:.4}}.nav a[aria-current=page]:after{opacity:1}.main{animation:fade-in 60ms ease-out both}.chat-empty>*{animation:fade-up var(--motion) var(--ease-out) both}.chat-empty>:nth-child(2){animation-delay:60ms}.chat-empty>:nth-child(n+3){animation-delay:.12s}.alert,.reveal{animation:fade-up var(--motion) var(--ease-out) both}.count{display:inline-block;animation:pop-in var(--motion) var(--ease-out) both}.drawer-backdrop{animation:fade-in var(--motion) ease-out both}.chat-drawer{animation:slide-in var(--motion) var(--ease-out) both}.conv-menu{transform-origin:top right;animation:menu-in var(--motion-fast) var(--ease-out) both}.conv-menu-btn{transition:opacity var(--motion-fast),background-color var(--motion-fast)}.conv-list .conv-item{animation:fade-in var(--motion) ease-out both}.splash-seal,.login-seal{animation:stamp .42s cubic-bezier(.3,1.4,.5,1) both}.voice-bar{animation:fade-up var(--motion-fast) var(--ease-out) both}.composer form{transition:border-color var(--motion-fast),box-shadow var(--motion-fast)}.starter,.jump-latest{transition:border-color var(--motion-fast),transform var(--motion-fast) var(--ease-out)}.starter svg{transition:color var(--motion-fast),transform var(--motion) var(--ease-out)}@media (hover: hover){.starter:hover svg{transform:translate(3px)}}.starter:active,.jump-latest:active{transform:scale(.98)}.starters>*{animation:fade-up var(--motion) var(--ease-out) both}.starters>:nth-child(1){animation-delay:.14s}.starters>:nth-child(2){animation-delay:.18s}.starters>:nth-child(3){animation-delay:.22s}.starters>:nth-child(n+4){animation-delay:.26s}.jump-latest{animation:fade-up var(--motion-fast) var(--ease-out) both}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes slide-in{0%{transform:translate(-100%)}to{transform:none}}@keyframes menu-in{0%{opacity:0;transform:scale(.95) translateY(-4px)}to{opacity:1;transform:none}}@keyframes stamp{0%{opacity:0;transform:scale(1.18)}60%{opacity:1}to{opacity:1;transform:none}}.conv-status{flex:none;width:8px;height:8px;margin:0 4px 0 2px;border-radius:50%}.conv-status.unread{background:var(--accent)}.conv-status.waiting{background:#a46e00;background:oklch(58% .18 75)}.conv-status.failed{background:var(--danger-fg)}.conv-status.replying{width:12px;height:12px;border:2px solid var(--border-strong);border-top-color:var(--accent);animation:spin .8s linear infinite}.menu-btn{position:relative}.menu-btn .conv-status{position:absolute;top:6px;right:6px;margin:0;box-shadow:0 0 0 2px var(--surface)}@media (prefers-reduced-motion: reduce){.conv-status.replying{animation:none;border-color:var(--accent);border-style:dotted}}.conn-banner{display:flex;align-items:center;justify-content:center;gap:8px;min-height:36px;padding:4px 16px;font-size:13px;text-align:center}.conn-banner.offline{background:var(--warning-bg);color:var(--warning-fg);border-bottom:1px solid #EAD7AE}.conn-banner.back{background:var(--success-bg);color:var(--success-fg);border-bottom:1px solid #C4E0CC}.conn-banner .btn.link{color:inherit;font-weight:700;text-decoration:underline;height:28px}.conn-text{font-weight:700}.conn-sub{font-weight:400}.conn-dot{width:8px;height:8px;border-radius:50%;background:currentColor;flex:none}@media (max-width: 480px){.conn-sub{display:block}.conn-banner{text-align:left;justify-content:flex-start}}.splash .conn-slot{position:fixed;top:0;left:0;right:0}.bubble-user.queued{opacity:.7}.queued-note{align-self:flex-end;display:flex;align-items:center;gap:6px;margin-top:-8px}.interrupted-note{display:flex;align-items:center;gap:8px;flex-wrap:wrap;color:var(--warning-fg);font-size:13px}@media (prefers-reduced-motion: no-preference){.conn-banner{animation:fade-in var(--motion) var(--ease-out) both}.conn-banner.offline .conn-dot{animation:pulse-dot 1.6s ease-in-out infinite}}@keyframes pulse-dot{50%{opacity:.35}}.site-menu{position:relative}.site-menu-list{position:absolute;right:0;top:calc(100% + 4px);z-index:5;padding:6px;gap:2px;min-width:200px;box-shadow:0 4px 16px #0000001f}.site-menu-list .btn.link{justify-content:flex-start;width:100%}.browse .category-tabs{overflow-x:auto;flex-wrap:nowrap}.filter-panel .filter-title{font-weight:700}.tile-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px}.tile-card{display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-panel);overflow:hidden;padding:0;text-align:left;font:inherit;color:inherit;cursor:pointer}.tile-card:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.tile-photo{width:100%;aspect-ratio:1 / 1;object-fit:cover;display:block;background:var(--surface-muted)}.tile-photo.missing{display:flex;align-items:center;justify-content:center;color:var(--text-muted);font-size:12px}.tile-text{display:flex;flex-direction:column;gap:4px;padding:10px}.tile-title{font-size:14px;line-height:1.3}.back{align-self:flex-start;padding:0;text-decoration:none}.tile-photos{display:grid;grid-auto-flow:column;grid-auto-columns:85%;gap:8px;overflow-x:auto;scroll-snap-type:x mandatory}.tile-photos>*{scroll-snap-align:start}.tile-photos.one{grid-auto-columns:100%;max-width:480px}.tile-photo-btn{padding:0;border:0;background:none;cursor:zoom-in;border-radius:var(--radius-panel);overflow:hidden}.tile-row{display:grid;grid-auto-flow:column;grid-auto-columns:46%;gap:10px;overflow-x:auto;padding-bottom:4px}.tile-row-item{display:flex;flex-direction:column;gap:4px}.small{font-size:12px}.facts{display:grid;grid-template-columns:minmax(120px,40%) 1fr;gap:6px 12px;margin:0}.facts dt{color:var(--text-secondary)}.facts dd{margin:0}.zoom{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;background:#000000d9;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:16px}.zoom img{max-width:100%;max-height:80vh;object-fit:contain}@media (min-width: 700px){.tile-photos:not(.one){grid-auto-columns:48%}.tile-row{grid-auto-columns:200px}}.saved-row{display:flex;gap:10px;align-items:flex-start;padding:8px 0;border-top:1px solid var(--border-subtle)}.saved-row:first-of-type{border-top:0}.saved-thumb{width:64px;flex:none;border-radius:var(--radius-control);overflow:hidden}.saved-tools{display:flex;gap:4px}.cart-link{position:relative;text-decoration:none}.cart-link .count{margin-left:6px}.stepper{justify-content:flex-end}.stepper .num{min-width:70px;text-align:center}@media (max-width: 440px){.masthead-row:has(.cart-link) .app-name{display:none}}a.btn{text-decoration:none}.install-guide{margin:12px 16px 0}.install-icon{width:40px;height:40px;border-radius:10px;flex:none;margin-right:10px}.install-steps{margin:0;padding-left:20px;display:grid;gap:4px}@media (min-width: 1000px){.browse-desktop{flex-direction:row;align-items:flex-start;gap:24px}.browse-filters{flex:0 0 280px;position:sticky;top:12px;display:flex;flex-direction:column;gap:14px;max-height:calc(100vh - 24px);overflow-y:auto}.browse-results{flex:1;min-width:0;display:flex;flex-direction:column;gap:14px}.browse-desktop .tile-grid{grid-template-columns:repeat(5,minmax(0,1fr));gap:16px}.order-desktop{max-width:1180px}.order-columns{display:grid;grid-template-columns:minmax(0,2fr) minmax(280px,1fr);gap:24px;align-items:start}.order-main,.order-side{display:flex;flex-direction:column;gap:14px}.order-side{position:sticky;top:12px}}.layout-stack{display:flex;flex-direction:column;gap:14px}.layout-columns{display:grid;grid-template-columns:minmax(0,1fr) 380px;gap:24px;align-items:start}.layout-main{display:flex;flex-direction:column;gap:10px;min-width:0;position:sticky;top:12px}.layout-side{display:flex;flex-direction:column;gap:14px;min-width:0}.layout-h2{font-size:15px;margin:0}.layout-title{font-family:var(--font-editorial);font-size:22px;height:48px}.layout-tabs{max-width:420px}.layout-canvas{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-panel);padding:8px;display:flex;flex-direction:column;gap:6px}.layout-scroll{overflow:auto;max-height:52vh;touch-action:pan-x pan-y pinch-zoom}.layout-columns .layout-scroll{max-height:calc(100vh - 230px)}.layout-scroll svg{display:block;min-width:100%;height:auto}.layout-room{cursor:pointer}.layout-room:focus-visible{outline:none}.layout-room:focus-visible path:last-of-type{stroke:var(--accent);stroke-width:4}.layout-zoom{display:flex;gap:4px}.layout-room-chip{flex:none;display:flex;flex-direction:column;align-items:flex-start;gap:2px;min-height:var(--control-md);padding:6px 12px;border:1px solid var(--border-strong);border-radius:var(--radius-control);background:var(--surface);color:var(--foreground);cursor:pointer;text-align:left}.layout-room-chip.on{border-color:var(--accent-strong);box-shadow:inset 0 0 0 1px var(--accent-strong)}.layout-room-chip.add{justify-content:center;color:var(--accent);border-style:dashed}.layout-surface,.layout-room-settings{display:flex;flex-direction:column;gap:10px}.layout-tile .layout-thumb{width:56px;flex:none}.layout-thumb .tile-photo{width:56px;height:56px;aspect-ratio:1}.layout-two{flex-wrap:nowrap;align-items:flex-end}.layout-two>.grow{min-width:0}.layout-four{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}@media (min-width: 520px){.layout-four{grid-template-columns:repeat(4,minmax(0,1fr))}}.layout-counts{gap:4px}.kv{display:flex;justify-content:space-between;gap:8px}.kv.total{border-top:1px solid var(--border-subtle);padding-top:6px;margin-top:2px}.layout-need{text-align:right;white-space:nowrap}.layout-actions{display:grid;grid-template-columns:1fr;gap:8px}@media (min-width: 520px) and (max-width: 999px){.layout-actions{grid-template-columns:repeat(3,1fr)}}.layout-picker{gap:10px}.layout-picks{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;max-height:420px;overflow-y:auto}@media (min-width: 600px) and (max-width: 999px){.layout-picks{grid-template-columns:repeat(3,minmax(0,1fr))}}.layout-pick{display:flex;flex-direction:column;gap:4px;text-align:left;padding:6px;border:1px solid var(--border);border-radius:var(--radius-control);background:var(--surface);cursor:pointer;color:var(--foreground);min-width:0}.layout-pick:hover,.layout-pick:focus-visible{border-color:var(--accent-strong)}.layout-pick .tile-photo{width:100%;aspect-ratio:1}@media (min-width: 700px){.layout-start{grid-template-columns:1fr 1fr}.layout-start>.muted{grid-column:1 / -1}}.layout-choice{text-align:left;cursor:pointer;font:inherit;color:inherit;min-height:120px}.layout-choice:hover,.layout-choice:focus-visible{border-color:var(--accent-strong)}.layout-choice b{font-size:16px;color:var(--accent)}.layout-reading{align-items:flex-start}.layout-plan-thumb{max-width:100%;max-height:50vh;border:1px solid var(--border);border-radius:var(--radius-control)}.layout-progress{width:100%;height:4px;background:var(--surface-muted);border-radius:2px;overflow:hidden}.layout-progress span{display:block;height:100%;width:30%;background:var(--accent);border-radius:2px}@media (prefers-reduced-motion: no-preference){.layout-progress span{animation:layout-slide 1.6s ease-in-out infinite}}@keyframes layout-slide{0%{transform:translate(-100%)}to{transform:translate(340%)}}.plan-overlay{position:relative;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-panel);overflow:hidden}.layout-found input[type=checkbox]{width:20px;height:20px;flex:none}.layout-num{flex:none;width:22px;height:22px;border-radius:11px;background:var(--accent);color:#fff;font-size:12px;font-weight:700;display:inline-flex;align-items:center;justify-content:center}.layout-name{height:var(--control-sm);flex:1;min-width:0}details.card>summary{cursor:pointer;font-weight:700;min-height:24px}@media (max-width: 999px){.layout-main{position:static}}.b{font-weight:700}.layout-head{display:flex;flex-direction:column;gap:6px}.layout-name{font-family:var(--font-editorial);font-size:22px;height:auto;padding:6px 10px}.layout-start{display:grid;gap:14px}.layout-start h2,.layout-panel h2,.layout-side h2,.layout-phone h2{margin:0;font-size:16px}.layout-canvas{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-panel);padding:8px;display:flex;flex-direction:column;gap:6px;min-width:0}.layout-canvas.empty{min-height:160px;align-items:center;justify-content:center}.layout-scroll{overflow:auto;max-height:62vh;-webkit-overflow-scrolling:touch;touch-action:pan-x pan-y pinch-zoom}.layout-scroll svg{display:block;max-width:none;height:auto}.layout-room{cursor:pointer;outline:none}.layout-room:focus-visible path:last-of-type{stroke:var(--accent);stroke-width:4px}.layout-legend{justify-content:space-between}.layout-zoom{display:flex;gap:6px}.layout-rooms{display:flex;gap:8px;overflow-x:auto;padding-bottom:2px}.layout-rooms .chip{flex:none;white-space:nowrap}.layout-two{display:grid;grid-template-columns:1fr 1fr;gap:10px}.layout-four{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}@media (max-width: 420px){.layout-four{grid-template-columns:1fr 1fr}}.layout-opening{border-top:1px solid var(--border-subtle);padding-top:8px;display:flex;flex-direction:column;gap:6px}.layout-pick{display:flex;gap:10px;align-items:center;text-align:left;background:var(--surface);border:1px solid var(--border-subtle);border-radius:var(--radius-control);padding:6px;cursor:pointer;min-height:52px;color:inherit}.layout-pick:hover{border-color:var(--accent)}.layout-pick-photo{width:44px;height:44px;flex:none;border-radius:4px;overflow:hidden;display:block}.layout-pick-photo .tile-photo{width:100%;height:100%;object-fit:cover;aspect-ratio:auto;font-size:8px}.layout-result .layout-need{border-top:1px solid var(--border-subtle);padding-top:6px}.layout-actions{display:flex;flex-direction:column;gap:8px}.layout-progress{height:4px;border-radius:2px;background:linear-gradient(90deg,var(--accent-subtle) 0%,var(--accent) 50%,var(--accent-subtle) 100%);background-size:200% 100%;animation:layout-progress 1.4s linear infinite}@keyframes layout-progress{to{background-position:-200% 0}}@media (prefers-reduced-motion: reduce){.layout-progress{animation:none;background:var(--accent)}}.layout-plan-img{max-width:100%;border:1px solid var(--border);border-radius:var(--radius-panel)}.plan-overlay{position:relative;background:#fff;border:1px solid var(--border);border-radius:var(--radius-panel);overflow:hidden}.plan-overlay img{display:block;width:100%;height:auto}.plan-overlay svg{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%}.layout-check{display:flex;flex-direction:column;gap:14px}.layout-panel{display:flex;flex-direction:column;gap:12px}.layout-found{flex-wrap:wrap;cursor:pointer}.layout-found.on{background:var(--accent-subtle)}.layout-found .input{min-width:120px}.layout-num{width:22px;height:22px;border-radius:11px;background:var(--accent);color:#fff;font-size:12px;font-weight:700;display:inline-flex;align-items:center;justify-content:center;flex:none}.layout-size{white-space:nowrap}@media (min-width: 1000px){.layout-columns{display:grid;grid-template-columns:minmax(0,1fr) 380px;gap:20px;align-items:start}.layout-main{display:flex;flex-direction:column;gap:10px;position:sticky;top:12px}.layout-main .layout-scroll{max-height:calc(100vh - 220px)}.layout-side{display:flex;flex-direction:column;gap:12px}.layout-check{display:grid;grid-template-columns:minmax(0,1fr) 420px;align-items:start;gap:20px}.layout-check .plan-overlay{position:sticky;top:12px}}.layout-sub{margin:0;font-size:14px}.layout-wall summary{cursor:pointer;font-weight:700;display:flex;flex-wrap:wrap;gap:6px;align-items:baseline;min-height:28px}.layout-wall[open] summary{margin-bottom:6px}
