:root{--ink: #111111;--paper: #f5f3ef;--paper-2: #e9e5de;--line: #d9d4cb;--muted: #6b655d;--muted-2: #55504a;--wine: #7a1f2b;--wine-soft: #f3e6e8;--ok: #2f6b3a;--warn: #9a5b00;--gutter: clamp(16px, 4vw, 48px);--serif: "Instrument Serif", Georgia, serif;--brand: "League Spartan", "Helvetica Neue", Arial, sans-serif;--sans: Inter, system-ui, -apple-system, "Segoe UI", sans-serif;--ease: cubic-bezier(.2, .7, .2, 1)}*,*:before,*:after{box-sizing:border-box}html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased}img{max-width:100%;display:block}a{color:inherit}a:hover{color:var(--wine)}button{font:inherit;color:inherit}h1,h2,h3,p{margin:0}:focus-visible{outline:2px solid var(--wine);outline-offset:2px}.visually-hidden{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.container{padding-left:var(--gutter);padding-right:var(--gutter)}.lbl{margin:0;font-size:11px;letter-spacing:.22em;text-transform:uppercase;font-weight:600;color:var(--wine)}.serif{font-family:var(--serif);font-weight:400}.serif em,em.serif{font-style:italic}.section-title{font-family:var(--serif);font-weight:400;font-size:clamp(30px,3vw,44px);line-height:1}.nl{text-decoration:none;position:relative;padding:6px 0}.nl:after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:currentColor;transform:scaleX(0);transform-origin:left;transition:transform .3s ease}.nl:hover:after,.nl.active:after{transform:scaleX(1)}.caps{font-size:11px;letter-spacing:.18em;text-transform:uppercase;font-weight:600}.btn{display:inline-flex;align-items:center;justify-content:center;gap:12px;min-height:48px;padding:0 28px;border:1px solid var(--ink);background:var(--ink);color:var(--paper);font-size:12px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;text-decoration:none;cursor:pointer;transition:background .25s ease,border-color .25s ease,color .25s ease}.btn:hover:not(:disabled){background:var(--wine);border-color:var(--wine);color:#fff}.btn:disabled{opacity:.45;cursor:not-allowed}.btn svg{transition:transform .25s ease}.btn:hover svg{transform:translate(4px)}.btn.block{width:100%}.btn.ghost{background:transparent;color:var(--ink)}.btn.ghost:hover:not(:disabled){background:var(--ink);color:var(--paper);border-color:var(--ink)}.btn.small{min-height:38px;padding:0 16px;font-size:11px;letter-spacing:.12em}.btn.danger{background:transparent;color:var(--wine);border-color:var(--wine)}.btn.danger:hover:not(:disabled){background:var(--wine);color:#fff}.icon-btn{width:44px;height:44px;display:inline-grid;place-items:center;border:0;background:transparent;cursor:pointer;position:relative;border-radius:50%}.icon-btn:hover{background:#0000000d}.field{display:flex;flex-direction:column;gap:6px}.field>span,.field>label{font-size:12px;font-weight:600;letter-spacing:.04em}.input,select.input,textarea.input{width:100%;min-height:46px;padding:10px 14px;border:1px solid #cfc9bf;background:#fff;color:var(--ink);font:inherit;border-radius:0;transition:border-color .2s ease}textarea.input{min-height:96px;resize:vertical}.input:focus{outline:none;border-color:var(--ink)}.input.invalid,.input.ng-invalid.ng-touched{border-color:var(--wine)}.hint{font-size:12px;color:var(--muted)}.error-text{font-size:12px;color:var(--wine)}.alert{padding:12px 16px;border-left:3px solid var(--wine);background:var(--wine-soft);color:var(--wine);font-size:14px}.alert.ok{border-color:var(--ok);background:#e8f2ea;color:var(--ok)}.checkbox{display:inline-flex;align-items:center;gap:10px;cursor:pointer;font-size:14px}.checkbox input{width:18px;height:18px;accent-color:var(--ink)}.price{font-weight:600;white-space:nowrap}.skeleton{background:linear-gradient(90deg,#e4e0d8 25%,#ece8e1 37%,#e4e0d8 63%);background-size:400% 100%;animation:shimmer 1.4s ease infinite}@keyframes shimmer{0%{background-position:100% 50%}to{background-position:0 50%}}.empty{padding:56px 16px;text-align:center;color:var(--muted);display:flex;flex-direction:column;align-items:center;gap:14px}.empty .serif{font-size:28px;color:var(--ink)}.swatch{width:14px;height:14px;border-radius:50%;display:inline-block;box-shadow:inset 0 0 0 1px #0000002e;flex:none}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}.admin-page{display:flex;flex-direction:column;gap:24px}.admin-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px}.admin-head h1{font-family:var(--serif);font-weight:400;font-size:clamp(32px,3.4vw,46px);line-height:1}.card{background:#fff;border:1px solid var(--line);padding:20px}.card-title{font-family:var(--serif);font-size:24px;margin-bottom:14px}.toolbar-row{display:flex;flex-wrap:wrap;gap:10px;align-items:center}.toolbar-row .input{min-height:42px;width:auto}.table-wrap{overflow-x:auto;background:#fff;border:1px solid var(--line)}.table{width:100%;border-collapse:collapse;font-size:14px;min-width:640px}.table th{text-align:left;font-size:11px;letter-spacing:.14em;text-transform:uppercase;font-weight:600;color:var(--muted);padding:12px 14px;border-bottom:1px solid var(--line);background:#faf9f6;white-space:nowrap}.table td{padding:12px 14px;border-bottom:1px solid #ece8e1;vertical-align:middle}.table tr:last-child td{border-bottom:0}.table tr.clickable{cursor:pointer}.table tr.clickable:hover td{background:#faf8f4}.thumb-sm{width:44px;height:58px;object-fit:cover;background:#dcd8d0}.status{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;font-size:11px;font-weight:600;letter-spacing:.06em;border-radius:999px;white-space:nowrap}.status:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}.status.Pending{background:#fff3dc;color:var(--warn)}.status.Confirmed{background:#e6eefb;color:#2c4f8a}.status.Shipped{background:#efe6fb;color:#5b3a8a}.status.Delivered{background:#e5f2e8;color:var(--ok)}.status.Cancelled{background:#f1eeea;color:var(--muted)}.pill{display:inline-block;padding:3px 9px;font-size:11px;font-weight:600;background:#f1eeea;color:var(--muted-2);border-radius:999px}.pill.off{background:var(--wine-soft);color:var(--wine)}.tabs{display:flex;gap:4px;flex-wrap:wrap}.tab{min-height:38px;padding:0 14px;border:1px solid var(--line);background:#fff;cursor:pointer;font-size:13px}.tab.on{background:var(--ink);color:var(--paper);border-color:var(--ink)}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.form-grid .full{grid-column:1 / -1}.drop{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;min-height:120px;border:1.5px dashed #c2bbb0;background:#faf9f6;cursor:pointer;text-align:center;padding:16px;color:var(--muted);font-size:13px;transition:border-color .2s ease,background .2s ease}.drop:hover,.drop.over{border-color:var(--ink);background:#fff;color:var(--ink)}.drop input{display:none}.toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%);z-index:60;background:var(--ink);color:var(--paper);padding:12px 20px;font-size:14px;box-shadow:0 10px 30px #0003;animation:toastIn .3s var(--ease)}.toast.err{background:var(--wine)}@keyframes toastIn{0%{opacity:0;transform:translate(-50%,10px)}}@media(max-width:760px){.form-grid{grid-template-columns:1fr}}
