:root{--font-ui: system-ui, -apple-system, "Segoe UI", Cantarell, "Noto Sans", sans-serif;--font-mono: ui-monospace, "SF Mono", "JetBrains Mono", "Cascadia Mono", Menlo, Consolas, monospace;--text-xs: .8125rem;--text-sm: .875rem;--text-base: 1rem;--text-md: 1.25rem;--text-lg: 1.5625rem;--text-xl: 1.9531rem;--color-paper: oklch(97% .008 65);--color-paper-2: oklch(94.5% .01 65);--color-paper-3: oklch(91.5% .012 65);--color-rule: oklch(87% .011 65);--color-rule-2: oklch(60% .014 65);--color-muted: oklch(45% .014 55);--color-ink-2: oklch(34% .014 50);--color-ink: oklch(21% .014 50);--color-accent: oklch(48% .185 45);--color-accent-2: oklch(41% .175 45);--color-accent-ink: oklch(98% .01 65);--color-accent-wash: oklch(94% .035 60);--color-error: oklch(45% .17 22);--color-focus: oklch(21% .014 50);--space-3xs: .125rem;--space-2xs: .25rem;--space-xs: .5rem;--space-sm: .75rem;--space-md: 1rem;--space-lg: 1.5rem;--space-xl: 2.5rem;--space-2xl: 4rem;--radius-sm: 4px;--radius-md: 8px;--control-h: 2.75rem;--measure: 65ch;--ease-out: cubic-bezier(.16, 1, .3, 1);--ease-in: cubic-bezier(.7, 0, .84, 0);--dur-micro: .12s;--dur-short: .2s;--z-base: 1;--z-sticky: 200}@media (prefers-color-scheme: dark){:root{--color-paper: oklch(16% .01 55);--color-paper-2: oklch(20% .011 55);--color-paper-3: oklch(25% .012 55);--color-rule: oklch(30% .01 55);--color-rule-2: oklch(52% .012 55);--color-muted: oklch(72% .01 60);--color-ink-2: oklch(84% .008 65);--color-ink: oklch(94% .007 70);--color-accent: oklch(70% .15 48);--color-accent-2: oklch(78% .13 50);--color-accent-ink: oklch(17% .02 50);--color-accent-wash: oklch(28% .045 50);--color-error: oklch(70% .145 25);--color-focus: oklch(94% .007 70)}body{font-weight:350}}*,*:before,*:after{box-sizing:border-box}html,body{overflow-x:clip}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--color-paper);color:var(--color-ink);font-family:var(--font-ui);font-size:var(--text-base);line-height:1.55;-webkit-font-smoothing:antialiased}h1,h2,h3{margin:0;font-style:normal;font-weight:700;line-height:1.15;letter-spacing:-.022em;overflow-wrap:anywhere}p{margin:0}ul{margin:0;padding:0;list-style:none}a{color:var(--color-accent);text-underline-offset:.18em}img{display:block;max-width:100%}:focus{outline:none}:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px;border-radius:var(--radius-sm)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.app{min-height:100dvh;padding-bottom:max(var(--space-xl),env(safe-area-inset-bottom))}.vendor-grid,.vendor-detail,.vendor-form,.empty,.backup-panel{margin-inline:auto;width:100%;max-width:72rem;padding-inline:max(var(--space-md),env(safe-area-inset-left))}.app>main>button{margin-inline:max(var(--space-md),env(safe-area-inset-left));margin-bottom:var(--space-xl)}button,input,select,textarea{font:inherit;color:inherit}button{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-xs);min-height:var(--control-h);padding-inline:var(--space-md);border:1px solid var(--color-rule-2);border-radius:var(--radius-md);background:var(--color-paper);color:var(--color-ink);font-size:var(--text-sm);font-weight:600;letter-spacing:-.006em;white-space:nowrap;cursor:pointer;transition:background-color var(--dur-short) var(--ease-out),border-color var(--dur-short) var(--ease-out),transform var(--dur-micro) var(--ease-out)}button:active{transform:translateY(1px)}button[disabled]{opacity:.55;cursor:not-allowed}@media (hover: hover) and (pointer: fine){button:hover:not([disabled]){background:var(--color-paper-3);border-color:var(--color-ink-2)}}.btn--primary{background:var(--color-accent);border-color:var(--color-accent);color:var(--color-accent-ink)}@media (hover: hover) and (pointer: fine){.btn--primary:hover:not([disabled]){background:var(--color-accent-2);border-color:var(--color-accent-2);color:var(--color-accent-ink)}}.btn--quiet{border-color:transparent;background:transparent;color:var(--color-muted);padding-inline:var(--space-sm)}@media (hover: hover) and (pointer: fine){.btn--quiet:hover:not([disabled]){background:var(--color-paper-3);border-color:var(--color-rule);color:var(--color-ink)}}input,select,textarea{width:100%;min-height:var(--control-h);padding:var(--space-xs) var(--space-sm);border:1px solid var(--color-rule-2);border-radius:var(--radius-md);background:var(--color-paper);outline:2px solid transparent;outline-offset:1px;font-size:var(--text-base);transition:background-color var(--dur-short) var(--ease-out)}textarea{min-height:6rem;resize:vertical;line-height:1.5}select{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding-inline-end:var(--space-xl);background-image:linear-gradient(45deg,transparent 50%,currentColor 50%),linear-gradient(135deg,currentColor 50%,transparent 50%);background-position:right 1.15rem center,right .85rem center;background-size:.3rem .3rem,.3rem .3rem;background-repeat:no-repeat}::placeholder{color:var(--color-muted);opacity:1}@media (hover: hover) and (pointer: fine){input:hover,select:hover,textarea:hover{background:var(--color-paper-2)}}input:focus-visible,select:focus-visible,textarea:focus-visible{outline-color:var(--color-focus);border-color:var(--color-ink-2)}input[type=file]{padding:var(--space-xs);border-style:dashed;font-size:var(--text-sm)}input[type=file]::file-selector-button{margin-inline-end:var(--space-sm);min-height:2rem;padding-inline:var(--space-sm);border:1px solid var(--color-rule-2);border-radius:var(--radius-sm);background:var(--color-paper-2);color:var(--color-ink);font:inherit;font-size:var(--text-sm);font-weight:600;cursor:pointer}@media (pointer: coarse){button,input,select,textarea{min-height:3rem}}.topbar{position:sticky;top:0;z-index:var(--z-sticky);display:grid;gap:var(--space-sm);padding:max(var(--space-sm),env(safe-area-inset-top)) max(var(--space-md),env(safe-area-inset-right)) var(--space-sm) max(var(--space-md),env(safe-area-inset-left));border-bottom:1px solid var(--color-rule);background:var(--color-paper)}.topbar__bar,.topbar__filters{display:flex;align-items:center;gap:var(--space-sm);margin-inline:auto;width:100%;max-width:72rem}.topbar__bar{justify-content:space-between}.wordmark{font-family:var(--font-mono);font-size:var(--text-sm);font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--color-ink-2);white-space:nowrap}.wordmark b{color:var(--color-accent);font-weight:600}.topbar__filters input[type=search]{flex:1 1 8rem;min-width:0}.topbar__filters select{flex:0 1 10.5rem;padding-inline-end:1.9rem;background-position:right .85rem center,right .55rem center}.vendor-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,17rem),1fr));align-items:start;gap:var(--space-md);padding-block:var(--space-lg) var(--space-xl)}.vendor-card{display:grid;align-content:start;justify-content:stretch;gap:0;min-width:0;min-height:0;padding:0;overflow:hidden;font-size:var(--text-base);font-weight:400;letter-spacing:normal;white-space:normal;border:1px solid var(--color-rule);border-radius:var(--radius-md);background:var(--color-paper);text-align:start;justify-items:start;transition:border-color var(--dur-short) var(--ease-out),transform var(--dur-micro) var(--ease-out)}@media (hover: hover) and (pointer: fine){.vendor-card:hover:not([disabled]){background:var(--color-paper);border-color:var(--color-ink-2);transform:translateY(-1px)}}.vendor-card:active{transform:translateY(0)}.vendor-thumb{width:100%;aspect-ratio:16 / 9;max-height:10rem;object-fit:cover;border-bottom:1px solid var(--color-rule)}.vendor-card__body{display:grid;gap:var(--space-2xs);justify-items:start;width:100%;min-width:0;padding:var(--space-md)}.vendor-card__name{width:100%;font-size:var(--text-md);font-weight:700;line-height:1.2;letter-spacing:-.02em;overflow-wrap:anywhere}.vendor-desc{width:100%;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;overflow:hidden;color:var(--color-muted);font-size:var(--text-sm);line-height:1.45}.badge{display:inline-block;padding:var(--space-3xs) var(--space-xs);border:1px solid var(--color-accent);border-radius:var(--radius-sm);color:var(--color-accent);font-size:var(--text-xs);font-weight:600;letter-spacing:.04em;text-transform:uppercase;white-space:nowrap}.empty{margin-inline:0 auto;max-width:38rem;padding-block:var(--space-2xl);color:var(--color-muted);font-size:var(--text-base);line-height:1.5}.empty:before{content:"";display:block;width:1.5rem;height:1.5rem;margin-bottom:var(--space-md);border:2px solid var(--color-accent);border-radius:var(--radius-sm)}.vendor-form{display:grid;gap:var(--space-lg);margin-inline:0 auto;max-width:42rem;padding-block:var(--space-lg) var(--space-2xl)}.vendor-form h2{font-size:var(--text-xl);letter-spacing:-.03em}.vendor-form>label,.vendor-form>.field{display:grid;gap:var(--space-2xs);font-size:var(--text-sm);font-weight:600;color:var(--color-ink-2)}.vendor-form fieldset{display:grid;gap:var(--space-sm);margin:0;padding:var(--space-md) 0 0;border:0;border-top:1px solid var(--color-rule)}.vendor-form legend{padding:0;color:var(--color-muted);font-family:var(--font-mono);font-size:var(--text-xs);font-weight:600;letter-spacing:.1em;text-transform:uppercase}.rep-row,.item-row{display:grid;gap:var(--space-xs);padding-bottom:var(--space-sm);border-bottom:1px solid var(--color-rule)}.rep-row>button,.item-row>button{justify-self:end;border-color:var(--color-rule)}@media (min-width: 34rem){.rep-row,.item-row{grid-template-columns:repeat(2,minmax(0,1fr))}.rep-row>button,.item-row>button{grid-column:-2 / -1}}@media (min-width: 52rem){.item-row{grid-template-columns:minmax(0,2fr) minmax(0,1fr) minmax(0,1fr) minmax(0,1fr)}}.item-row input[type=number]{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.form-actions{display:flex;flex-wrap:wrap;gap:var(--space-sm);padding-top:var(--space-sm)}.form-actions .btn--primary{flex:1 1 10rem}.error{padding:var(--space-sm) var(--space-md);border:1px solid var(--color-error);border-radius:var(--radius-md);color:var(--color-error);font-size:var(--text-sm);font-weight:600}.error:before{content:"⚠  ";font-weight:700}.category-picker{display:flex;flex-wrap:wrap;gap:var(--space-xs)}.category-picker input{flex:1 1 10rem;min-width:0}.photo-strip{display:flex;gap:var(--space-xs);overflow-x:auto;padding-bottom:var(--space-2xs);scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch}.photo-strip:empty{display:none}.photo-thumb{flex:0 0 auto;width:6.5rem;height:6.5rem;object-fit:cover;border:1px solid var(--color-rule);border-radius:var(--radius-sm);scroll-snap-align:start}.vendor-detail{display:grid;gap:var(--space-md);justify-items:start;margin-inline:0 auto;max-width:48rem;padding-block:var(--space-lg) var(--space-2xl)}.vendor-detail h2{font-size:var(--text-xl);letter-spacing:-.03em}.vendor-detail h3{color:var(--color-muted);font-family:var(--font-mono);font-size:var(--text-xs);font-weight:600;letter-spacing:.1em;text-transform:uppercase}.vendor-detail>p{max-width:var(--measure);color:var(--color-ink-2)}.vendor-detail section{display:grid;gap:var(--space-xs);width:100%;padding-top:var(--space-md);border-top:1px solid var(--color-rule)}.detail-meta,.vendor-detail section li{font-family:var(--font-mono);font-size:var(--text-sm);font-variant-numeric:tabular-nums;color:var(--color-ink-2)}.contact-links{display:grid;gap:var(--space-xs);width:100%}.contact-links li{display:flex;align-items:center;min-height:var(--control-h);padding:var(--space-xs) var(--space-sm);border:1px solid var(--color-rule);border-radius:var(--radius-md);background:var(--color-paper-2);color:var(--color-ink-2);font-family:var(--font-mono);font-size:var(--text-sm);overflow-wrap:anywhere}.contact-links li:has(a){border-color:var(--color-rule-2);background:var(--color-paper)}.contact-links a{display:block;width:100%;font-weight:600;text-decoration:none}@media (hover: hover) and (pointer: fine){.contact-links li:has(a):hover{border-color:var(--color-accent)}.contact-links a:hover{text-decoration:underline}}.notes{max-width:var(--measure);padding:var(--space-md);border-left:1px solid var(--color-rule-2);color:var(--color-ink-2);font-size:var(--text-sm);white-space:pre-wrap}.vendor-detail .form-actions{width:100%}.backup-panel{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-sm);padding-block:var(--space-md) var(--space-xl);border-top:1px solid var(--color-rule)}.status{flex:1 1 14rem;min-width:0;color:var(--color-muted);font-family:var(--font-mono);font-size:var(--text-xs);overflow-wrap:anywhere}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}button:active,.vendor-card:hover,.vendor-card:active{transform:none}}
