:root{--c-cream:#fcf9f5;--c-ink:#302426;--c-wine:#652c40;--c-wine-deep:#4a2633;--c-taupe:#756461;--c-sand:#ddd2c5;--c-mist:#ebe1e8;--c-line:#e3d6ce;--c-paper:#fffdfa;--c-success:#3d6b4f;--c-success-soft:#e6efe7;--c-warning:#8a5a12;--c-warning-soft:#f6ecd9;--c-danger:#a3322a;--c-danger-soft:#f8e6e2;--c-info:#44597a;--c-info-soft:#e7ecf3;--c-neutral:#6d625f;--c-neutral-soft:#efe9e5;--color-bg:var(--c-cream);--color-surface:var(--c-paper);--color-text:var(--c-ink);--color-muted:var(--c-taupe);--color-line:var(--c-line);--color-brand:var(--c-wine);--color-brand-soft:var(--c-mist);--color-danger:var(--c-danger);--font-body:"Noto Sans TC", "PingFang TC", "Microsoft JhengHei", system-ui, sans-serif;--font-display:"Noto Serif TC", "Songti TC", serif;--font-latin:"Cormorant Garamond", "Noto Serif TC", Georgia, serif;--font-mono:"IBM Plex Mono", ui-monospace, monospace;--radius:0;--page-width:1180px;--tip:50% 50% 46% 46% / 64% 64% 36% 36%;--gloss:linear-gradient(100deg, transparent 22%, #ffffff6b 30%, transparent 40%)}*,:after,:before{box-sizing:border-box}body{background:var(--color-bg);color:var(--color-text);font-family:var(--font-body);-webkit-font-smoothing:antialiased;margin:0;font-size:15px;line-height:1.8}a{color:inherit;text-underline-offset:4px}:focus-visible{outline:2px solid var(--c-wine);outline-offset:3px}.container{max-width:var(--page-width);margin:0 auto;padding:0 16px}@media (width>=768px){.container{padding:0 40px}}.h1,.h2,.h3{text-wrap:balance;margin:0}.h1,.h2{font-family:var(--font-display);letter-spacing:.06em;font-weight:400;line-height:1.45}.h1{font-size:calc(clamp(28px,4.5vw,40px))}.h2{font-size:calc(clamp(22px,3vw,28px))}.h3{letter-spacing:.04em;font-size:16px;font-weight:500}.eyebrow{letter-spacing:.18em;text-transform:uppercase;color:var(--color-muted);margin:0;font-size:11px}.latin{letter-spacing:0}.latin,.numeral{font-family:var(--font-latin);font-style:italic;font-weight:500}.numeral{color:var(--c-wine);line-height:1}.muted,.price small{color:var(--color-muted)}.small{font-size:13px}.price{font-variant-numeric:tabular-nums;letter-spacing:.02em}.price small{margin-left:4px;font-size:12px}.mono{font-family:var(--font-mono);font-size:.92em}.btn{white-space:nowrap;min-height:46px;font:400 14px/1 var(--font-body);letter-spacing:.08em;cursor:pointer;border:1px solid #0000;border-radius:0;justify-content:center;align-items:center;gap:10px;padding:0 22px;text-decoration:none;transition:background-color .2s,border-color .2s,color .2s;display:inline-flex}.btn-primary{background:var(--c-wine);color:#fff9f2}.btn-primary:hover{background:var(--c-wine-deep)}.btn-secondary{color:var(--c-ink);border-color:var(--c-ink);background:0 0}.btn-secondary:hover{background:var(--c-ink);color:var(--c-cream)}.btn-ghost{color:var(--c-wine);background:0 0;padding:0 8px}.btn-ghost:hover{background:var(--c-mist)}.btn-danger{color:var(--c-danger);background:0 0;border-color:currentColor}.btn-danger:hover{background:var(--c-danger-soft)}.btn-sm{min-height:36px;padding:0 14px;font-size:13px}.btn-block{width:100%}.btn:disabled,.btn[aria-disabled=true]{opacity:.4;cursor:not-allowed}.btn[aria-busy=true]:before{content:"";border:1.5px solid;border-right-color:#0000;border-radius:50%;width:13px;height:13px;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(1turn)}}.link-arrow{letter-spacing:.06em;color:var(--c-ink);border-bottom:1px solid;justify-self:start;align-items:center;gap:10px;padding-bottom:6px;font-size:14px;text-decoration:none;display:inline-flex}.link-arrow:after{content:"↗";font-size:13px;transition:transform .2s}.link-arrow:hover:after{transform:translate(2px,-2px)}button.link-arrow{appearance:none;cursor:pointer;background:0 0;border:0;border-bottom:1px solid;border-radius:0;padding:0 0 6px;font-family:inherit}button.link-arrow:disabled{opacity:.45;cursor:not-allowed}input[type=file].input{padding-top:6px;padding-bottom:6px}input[type=file]::file-selector-button{border:1px solid var(--c-ink);min-height:34px;color:var(--c-ink);font:inherit;letter-spacing:.06em;cursor:pointer;background:0 0;border-radius:0;margin-right:14px;padding:0 14px;font-size:13px}input[type=file]::file-selector-button:hover{background:var(--c-ink);color:var(--c-paper)}.field{gap:6px;display:grid}.field-label{letter-spacing:.04em;color:var(--color-muted);font-size:13px}.field-help{color:var(--color-muted);font-size:12px}.field-error{color:var(--c-danger);font-size:13px}.input,.select,.textarea{border:1px solid var(--c-line);background:var(--c-paper);width:100%;min-height:46px;color:var(--c-ink);font:16px/1.4 var(--font-body);border-radius:0;padding:10px 14px}.textarea{resize:vertical;min-height:100px}.input:hover,.select:hover,.textarea:hover{border-color:#c9b8ae}.input:focus-visible,.select:focus-visible,.textarea:focus-visible{outline:1px solid var(--c-wine);outline-offset:0;border-color:var(--c-wine)}.input[aria-invalid=true]{border-color:var(--c-danger)}.check{cursor:pointer;align-items:center;gap:8px;font-size:14px;display:inline-flex}.check input{width:16px;height:16px;accent-color:var(--c-wine)}.tag{letter-spacing:.04em;white-space:nowrap;align-items:center;gap:6px;padding:2px 9px;font-size:12px;line-height:1.7;display:inline-flex}.tag:before{content:"";background:currentColor;border-radius:50%;width:5px;height:5px}.tag-neutral{background:var(--c-neutral-soft);color:var(--c-neutral)}.tag-info{background:var(--c-info-soft);color:var(--c-info)}.tag-warning{background:var(--c-warning-soft);color:var(--c-warning)}.tag-success{background:var(--c-success-soft);color:var(--c-success)}.tag-danger{background:var(--c-danger-soft);color:var(--c-danger)}.tag-brand{background:var(--c-mist);color:var(--c-wine)}.img-label{color:var(--c-ink);letter-spacing:.14em;text-transform:uppercase;background:#fffdfaeb;padding:3px 8px;font-size:10px;display:inline-block}.tips{flex:none;align-items:flex-end;gap:4px;display:inline-flex}.tips i{border-radius:var(--tip);background:var(--c-paper);width:12px;height:18px;display:block;box-shadow:inset 0 0 0 1px #cdbcb2}.tips i:first-child,.tips i:nth-child(10){width:11px;height:14px}.tips i:nth-child(4),.tips i:nth-child(7){height:16px}.tips i:nth-child(5),.tips i:nth-child(6){width:13px;height:15px}.tips i:nth-child(5){margin-right:8px}.tips i.on{background:var(--c-wine) var(--gloss);box-shadow:none}.card{background:var(--c-paper);border:1px solid var(--c-line)}.card-pad{padding:24px}.section-dark{background:var(--c-wine-deep);color:#f6ece6}.section-mist{background:var(--c-mist)}.product{color:inherit;gap:6px;text-decoration:none;display:grid}.product-img{aspect-ratio:4/5;background:var(--c-sand);position:relative;overflow:hidden}.product-img img{-o-object-fit:cover;object-fit:cover;width:100%;height:100%;transition:transform .6s;display:block}.product:hover .product-img .art,.product:hover .product-img img{transform:scale(1.03)}.product-img .img-label{position:absolute;top:12px;left:12px}.product-img .img-label.note{text-transform:none;letter-spacing:.06em;inset:auto 12px 12px auto}.product-meta{color:var(--color-muted);justify-content:space-between;gap:8px;margin-top:8px;font-size:12px;display:flex}.product-name{letter-spacing:.04em;font-size:15px}.product[aria-disabled=true]{opacity:.5}.table-wrap{background:var(--c-paper);border:1px solid var(--c-line);overflow-x:auto}.table{border-collapse:collapse;width:100%;min-width:640px;font-size:14px}.table th{text-align:left;letter-spacing:.08em;color:var(--color-muted);font-size:12px;font-weight:400}.table td,.table th{border-bottom:1px solid var(--c-line);white-space:nowrap;padding:12px 16px}.table tr:last-child td{border-bottom:0}.table tbody tr:hover{background:var(--c-cream)}.table .num{text-align:right;font-variant-numeric:tabular-nums}.pager{color:var(--color-muted);border-top:1px solid var(--c-line);justify-content:space-between;align-items:center;gap:12px;padding:12px 16px;font-size:13px;display:flex}.alert{grid-template-columns:auto 1fr;gap:2px 12px;padding:14px 18px;font-size:14px;display:grid}.alert:before{content:"";background:currentColor;border-radius:50%;grid-row:span 2;width:6px;height:6px;margin-top:9px}.alert strong{letter-spacing:.04em;font-weight:500}.alert p{color:var(--c-ink);margin:0}.alert-info{background:var(--c-info-soft);color:var(--c-info)}.alert-success{background:var(--c-success-soft);color:var(--c-success)}.alert-warning{background:var(--c-warning-soft);color:var(--c-warning)}.alert-error{background:var(--c-danger-soft);color:var(--c-danger)}.toast{background:var(--c-ink);color:var(--c-cream);letter-spacing:.06em;align-items:center;gap:10px;padding:12px 20px;font-size:13px;display:inline-flex}.empty{text-align:center;justify-items:center;gap:14px;padding:48px 20px;display:grid}.empty p{max-width:30ch;color:var(--color-muted);margin:0}.skeleton{background:linear-gradient(90deg,#efe7e1 25%,#f7f2ee 50%,#efe7e1 75%) 0 0/200% 100%;animation:1.4s infinite shimmer}@keyframes shimmer{to{background-position:-200% 0}}@media (prefers-reduced-motion:reduce){*,:after,:before{transition:none!important;animation:none!important}}.app-dialog[data-v-2c7cf3d0]{border:1px solid var(--color-line);background:var(--color-surface);width:calc(min(460px,100vw - 32px));color:var(--color-text);padding:0;box-shadow:0 24px 60px #30242638}.app-dialog[data-v-2c7cf3d0]::backdrop{background:#30242673}.box[data-v-2c7cf3d0]{gap:16px;padding:28px;display:grid}.box .h3[data-v-2c7cf3d0]{margin:0}.message[data-v-2c7cf3d0]{white-space:pre-line;color:var(--color-text);margin:0;line-height:1.7}.actions[data-v-2c7cf3d0]{flex-wrap:wrap;justify-content:flex-end;gap:10px;margin-top:4px;display:flex}.btn-danger-solid[data-v-2c7cf3d0]{background:var(--c-danger);color:var(--c-paper);border-color:var(--c-danger)}.btn-danger-solid[data-v-2c7cf3d0]:hover{filter:brightness(.92)}@media (prefers-reduced-motion:no-preference){.app-dialog[open][data-v-2c7cf3d0]{animation:.16s ease-out rise-2c7cf3d0}@keyframes rise-2c7cf3d0{0%{opacity:0;transform:translateY(8px)}}}.oops[data-v-4c58bf1f]{text-align:center;justify-items:center;gap:12px;max-width:560px;margin:0 auto;padding:24px 0 40px;display:grid}.oops p[data-v-4c58bf1f]{margin:0}.code[data-v-4c58bf1f]{margin-bottom:8px;font-size:calc(clamp(72px,14vw,120px))}.actions[data-v-4c58bf1f]{flex-wrap:wrap;justify-content:center;gap:16px 32px;margin-top:16px;display:flex}
