:root {
  --ink:#241624;
  --ink-soft:#4b3d49;
  --plum:#4a2348;
  --plum-deep:#30172f;
  --wine:#7d3852;
  --cream:#f5ecdf;
  --paper:#fffdf9;
  --paper-warm:#faf4eb;
  --gold:#c99e5d;
  --line:#d9ccbc;
  --muted:#6e646b;
  --danger:#9b303b;
  --success:#24664f;
  --teal:#16766f;
  --teal-soft:#dff4ef;
  --coral:#d85d52;
  --coral-soft:#fde8e2;
  --violet:#7251a3;
  --violet-soft:#eee8fa;
  --amber:#b7791f;
  --amber-soft:#fff1ce;
  --shadow-sm:0 8px 24px rgba(57,29,42,.08);
  --shadow-md:0 20px 55px rgba(57,29,42,.12);
  --radius-sm:.75rem;
  --radius-md:1rem;
  --radius-lg:1.35rem;
}

* { box-sizing:border-box; }
html { min-width:320px; color:var(--ink); background:var(--cream); font-family:Pretendard,sans-serif; scroll-behavior:smooth; }
body { margin:0; min-height:100vh; min-height:100dvh; background:radial-gradient(circle at 8% 10%,rgba(216,93,82,.16),transparent 22rem),radial-gradient(circle at 92% 4%,rgba(22,118,111,.16),transparent 24rem),linear-gradient(180deg,#f1e6d8 0,#fbf8f2 32rem); -webkit-font-smoothing:antialiased; }
button,input,select { font:inherit; }
button { cursor:pointer; -webkit-tap-highlight-color:transparent; touch-action:manipulation; }
button:disabled { cursor:wait; opacity:.62; }
:focus-visible { outline:3px solid var(--gold); outline-offset:3px; }
.skip-link { position:fixed; z-index:100; top:.75rem; left:1rem; transform:translateY(-160%); padding:.7rem 1rem; border-radius:.65rem; color:white; background:var(--plum-deep); font-weight:700; text-decoration:none; }
.skip-link:focus { transform:none; }

.admin-header { min-height:68px; padding:max(.75rem,env(safe-area-inset-top)) 1rem .75rem; display:flex; align-items:center; justify-content:space-between; gap:1rem; color:white; background:radial-gradient(circle at 82% -20%,rgba(253,192,103,.38),transparent 17rem),radial-gradient(circle at 12% 120%,rgba(22,118,111,.42),transparent 22rem),linear-gradient(125deg,#30172f,#682e55 58%,#243d4a); border-bottom:1px solid rgba(255,255,255,.18); }
.brand { min-height:44px; display:flex; align-items:center; gap:.55rem; color:white; text-decoration:none; font:700 1rem "Gowun Batang",serif; }
.brand span { width:2.15rem; height:2.15rem; display:grid; place-items:center; border:1px solid var(--gold); border-radius:50%; color:#f1d5a7; background:rgba(255,255,255,.04); }
.admin-header>div { display:none; text-align:right; }
.admin-header p { margin:0 0 .2rem; color:#d9bea0; font:500 .67rem "DM Mono",monospace; letter-spacing:.16em; }
.admin-header strong { font-size:.92rem; }

.admin-shell { width:min(100% - 1rem,70rem); margin:0 auto; padding:1.5rem 0 max(4rem,env(safe-area-inset-bottom)); }
.intro-panel { display:grid; gap:1.25rem; margin:0 .25rem 1.5rem; }
.eyebrow { margin:0 0 .65rem; color:var(--wine); font:500 .67rem "DM Mono",monospace; letter-spacing:.16em; }
h1 { margin:0; font:700 clamp(2.15rem,11vw,4.15rem)/1.12 "Gowun Batang",serif; letter-spacing:-.055em; text-wrap:balance; }
h1 em { color:var(--wine); font-style:normal; }
.auth-card { padding:1rem; border:1px solid rgba(255,255,255,.78); border-radius:var(--radius-md); background:rgba(255,253,249,.78); box-shadow:0 16px 40px rgba(57,29,42,.12); backdrop-filter:blur(18px); }
.auth-card>label:first-child { display:block; margin-bottom:.5rem; font-size:.85rem; font-weight:700; }
.auth-card>label span,.panel-heading b,.field b { color:var(--danger); }
.key-row { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:.4rem; }
input,select { width:100%; min-height:48px; padding:.7rem .8rem; border:1px solid #cbbdad; border-radius:.7rem; color:var(--ink); background:white; font-size:16px; }
input:hover,select:hover { border-color:#988575; }
input:invalid:not(:placeholder-shown) { border-color:var(--danger); }
input[readonly] { color:#675e60; background:#f2ede7; }
.quiet-button { min-width:44px; min-height:44px; padding:.45rem .6rem; border:0; color:var(--wine); background:transparent; font-weight:700; white-space:nowrap; }
.check-line { min-height:44px; display:flex; align-items:center; gap:.55rem; margin-top:.35rem; color:var(--muted); font-size:.8rem; }
.check-line input,.theme-group input { width:1.15rem; height:1.15rem; min-height:auto; accent-color:var(--wine); }
.auth-card>p { margin:.2rem 0 0; color:var(--muted); font-size:.72rem; line-height:1.5; }
.key-change { margin-top:.75rem; padding-top:.75rem; border-top:1px solid var(--line); }
.key-change summary { min-height:44px; display:flex; align-items:center; color:var(--wine); cursor:pointer; font-size:.8rem; font-weight:700; }
.key-change form { display:grid; gap:.7rem; margin-top:.65rem; }
.key-change .field { gap:.3rem; }
.key-change .field>span { font-size:.76rem; }
.key-change button { justify-self:start; }

.tabs { position:sticky; z-index:30; top:0; display:flex; gap:.35rem; margin:0 -.5rem 1rem; padding:.35rem .5rem; overflow-x:auto; border:1px solid rgba(217,204,188,.8); border-radius:.9rem; background:rgba(255,253,249,.94); box-shadow:0 8px 20px rgba(57,29,42,.07); backdrop-filter:blur(14px); scrollbar-width:none; scroll-snap-type:x proximity; }
.tabs::-webkit-scrollbar { display:none; }
.tabs button { flex:0 0 auto; min-height:44px; padding:.65rem .8rem; border:0; border-radius:.65rem; color:var(--muted); background:transparent; font-size:.8rem; font-weight:700; white-space:nowrap; scroll-snap-align:start; }
.tabs button[aria-selected="true"] { color:white; background:linear-gradient(120deg,var(--plum),var(--wine) 55%,var(--coral)); box-shadow:0 7px 18px rgba(125,56,82,.24); }

.panel { padding:1.1rem; border:1px solid rgba(217,204,188,.9); border-radius:var(--radius-lg); background:rgba(255,253,249,.94); box-shadow:var(--shadow-md); backdrop-filter:blur(16px); }
.panel[hidden],.edit-mode[hidden] { display:none; }
.panel-heading { display:flex; align-items:flex-start; justify-content:space-between; gap:.75rem; padding-bottom:1rem; border-bottom:1px solid var(--line); }
.panel-heading>div { display:flex; align-items:center; gap:.65rem; min-width:0; }
.panel-heading>p { display:none; margin:0; color:var(--muted); font-size:.8rem; }
.step { flex:0 0 auto; width:2rem; height:2rem; display:grid; place-items:center; border-radius:50%; color:white; background:linear-gradient(145deg,var(--wine),var(--plum)); font:500 .68rem "DM Mono",monospace; }
h2 { margin:0; font:700 clamp(1.3rem,6vw,1.6rem) "Gowun Batang",serif; letter-spacing:-.035em; }
.edit-mode { margin-top:1rem; padding:.85rem; display:grid; gap:.6rem; border:1px solid #d6b781; border-radius:.8rem; background:#fff8e9; }
.edit-mode strong,.edit-mode span { display:block; }
.edit-mode span { margin-top:.2rem; color:var(--muted); font-size:.75rem; line-height:1.5; }
.edit-mode .quiet-button { justify-self:start; padding-inline:0; }

fieldset { margin:0; padding:1.35rem 0 0; border:0; }
fieldset+fieldset { margin-top:1.35rem; border-top:1px solid var(--line); }
legend { padding:0; font:700 1rem "Gowun Batang",serif; }
.fieldset-copy { margin:.45rem 0 1rem; color:var(--muted); font-size:.79rem; line-height:1.5; }
.form-grid,.taste-grid { display:grid; grid-template-columns:1fr; gap:.9rem; margin-top:1rem; }
.field { min-width:0; display:flex; flex-direction:column; gap:.4rem; }
.field>span { font-size:.82rem; font-weight:700; }
.field small { color:var(--muted); font-weight:400; }
.image-editor { display:grid; gap:.8rem; padding:.85rem; border:1px solid var(--line); border-radius:.9rem; background:#faf6ef; }
.image-preview { min-height:11rem; display:grid; place-items:center; overflow:hidden; border:1px dashed #cbb9a5; border-radius:.75rem; color:var(--muted); background:linear-gradient(145deg,#f4ecdf,#fffdf9); font-size:.75rem; }
.image-preview img { width:100%; height:14rem; display:block; object-fit:contain; background:white; }
.image-preview img[hidden] { display:none; }
.image-controls { min-width:0; display:grid; align-content:center; gap:.55rem; }
.image-controls input[type="file"] { padding:.55rem; background:white; }
.image-controls input[type="file"]::file-selector-button { min-height:34px; margin-right:.65rem; padding:.4rem .65rem; border:1px solid var(--line); border-radius:.55rem; color:var(--wine); background:#fff9f2; font-weight:700; cursor:pointer; }
.image-controls p { margin:0; color:var(--muted); font-size:.7rem; line-height:1.55; }
.image-remove { justify-self:start; min-height:40px; color:var(--danger); }
.theme-group { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:.5rem; margin-top:1rem; padding:.75rem; border-radius:.85rem; background:#f6f0e8; }
.theme-group>span { grid-column:1/-1; font-size:.82rem; font-weight:700; }
.theme-group label { min-height:44px; display:flex; align-items:center; gap:.45rem; padding:.45rem; border:1px solid rgba(217,204,188,.75); border-radius:.65rem; background:rgba(255,255,255,.6); font-size:.78rem; }
.form-actions { display:grid; gap:.6rem; margin-top:1.5rem; }
.primary-button,.secondary-button { min-height:48px; padding:.72rem 1rem; border-radius:.7rem; font-weight:700; }
.primary-button { border:1px solid var(--plum); color:white; background:linear-gradient(135deg,var(--plum),var(--plum-deep)); box-shadow:0 8px 18px rgba(74,35,72,.16); }
.primary-button span { margin-left:.7rem; color:#e8c68f; }
.secondary-button { border:1px solid var(--line); color:var(--ink); background:white; }
.secondary-button.small { min-height:44px; padding:.55rem .75rem; font-size:.78rem; }

.drop-zone { position:relative; margin-top:1.2rem; padding:2.2rem .9rem; border:1.5px dashed #b7a38e; border-radius:var(--radius-md); text-align:center; background:linear-gradient(145deg,#fcf8f1,#f6eee3); transition:.2s ease; }
.drop-zone.dragging { border-color:var(--wine); background:#f1e3d3; transform:translateY(-2px); }
.drop-zone input { position:absolute; width:1px; height:1px; overflow:hidden; opacity:0; }
.upload-mark { width:3rem; height:3rem; display:grid; place-items:center; margin:0 auto .8rem; border-radius:50%; color:white; background:var(--plum); font-size:1.35rem; }
.drop-zone h3 { margin:0; font:700 1.1rem "Gowun Batang",serif; }
.drop-zone p { margin:.45rem 0 1rem; color:var(--muted); font-size:.77rem; line-height:1.5; }
.preview { margin-top:1.2rem; padding:.8rem; border:1px solid var(--line); border-radius:var(--radius-md); }
.preview-heading { display:flex; align-items:center; justify-content:space-between; gap:.75rem; margin-bottom:.8rem; }
.preview-heading strong,.preview-heading span { display:block; }
.preview-heading span { margin-top:.2rem; color:var(--muted); font-size:.75rem; }
.table-wrap { max-width:100%; overflow:auto; border:1px solid var(--line); border-radius:.75rem; }
table { width:100%; border-collapse:collapse; font-size:.78rem; white-space:nowrap; }
th,td { padding:.72rem .75rem; border-bottom:1px solid #e8dfd4; text-align:left; }
th { color:var(--wine); background:#f5eee5; }
tbody tr:last-child td { border-bottom:0; }
.preview-note,.format-note { color:var(--muted); font-size:.75rem; line-height:1.6; }
.preview .primary-button { width:100%; margin-top:.6rem; }
.format-note { margin-top:1rem; padding:.9rem 1rem; border-left:3px solid var(--gold); border-radius:0 .65rem .65rem 0; background:#f8f2e9; }
.format-note strong { color:var(--ink); }
.format-note p { margin:.3rem 0 0; overflow-wrap:anywhere; }

.catalog-search { display:grid; grid-template-columns:1fr; gap:.7rem; align-items:end; margin:1.1rem 0; }
.search-button { width:100%; }
.catalog-summary { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:.4rem; margin-bottom:.8rem; }
.catalog-summary>div { min-width:0; padding:.75rem .55rem; border:1px solid var(--line); border-radius:.75rem; background:#faf6ef; }
.catalog-summary span,.catalog-summary strong { display:block; }
.catalog-summary span { color:var(--muted); font-size:.67rem; line-height:1.3; }
.catalog-summary strong { margin-top:.25rem; color:var(--plum); font:700 clamp(1rem,5vw,1.4rem) "DM Mono",monospace; }
.catalog-table-wrap { min-height:14rem; border:0; overflow:visible; }
.catalog-table thead { display:none; }
.catalog-table,.catalog-table tbody,.catalog-table tr,.catalog-table td { display:block; width:100%; white-space:normal; }
.catalog-table tr { margin-bottom:.7rem; padding:.8rem; border:1px solid var(--line); border-radius:.85rem; background:white; box-shadow:var(--shadow-sm); }
.catalog-table td { display:grid; grid-template-columns:5.2rem minmax(0,1fr); gap:.5rem; padding:.42rem 0; border:0; vertical-align:middle; }
.catalog-table td::before { content:attr(data-label); color:var(--muted); font-size:.68rem; font-weight:700; }
.catalog-table td>* { min-width:0; }
.catalog-table td strong,.catalog-table td small { display:block; }
.catalog-table td small { max-width:100%; margin-top:.2rem; overflow:hidden; color:var(--muted); font-size:.67rem; text-overflow:ellipsis; }
.catalog-product { display:grid; grid-template-columns:2.8rem minmax(0,1fr); align-items:center; gap:.6rem; }
.catalog-product.no-image { grid-template-columns:1fr; }
.catalog-thumb { width:2.8rem; height:2.8rem; object-fit:contain; border:1px solid #e4d9cd; border-radius:.55rem; background:#faf6ef; }
.source-copy { display:block; max-width:100%; overflow:hidden; color:var(--muted); text-overflow:ellipsis; }
.data-badge,.candidate-badge { min-height:25px; display:inline-flex; align-items:center; width:max-content; padding:.25rem .55rem; border-radius:999px; font-size:.68rem; font-weight:700; }
.data-badge.incomplete { color:#844b17; background:#fff0d8; }
.data-badge.complete { color:var(--success); background:#e6f5ef; }
.candidate-badge { color:var(--muted); background:#eee9e3; }
.candidate-badge.selected { color:white; background:var(--wine); }
.candidate-toggle.remove { color:var(--danger); border-color:#d9adb1; }
.catalog-empty,.loading-cell { padding:2rem 1rem; color:var(--muted); text-align:center; }
.catalog-table .loading-cell { display:block; }
.catalog-table .loading-cell::before { content:none; }
.pagination { min-height:48px; display:flex; align-items:center; justify-content:center; gap:.6rem; margin-top:.7rem; }
.pagination span { min-width:3.8rem; color:var(--muted); text-align:center; font:500 .73rem "DM Mono",monospace; }

.candidate-auto { display:grid; grid-template-columns:1fr; gap:1rem; margin-top:1.1rem; padding:1rem; border:1px solid #d8c4a3; border-radius:var(--radius-md); background:linear-gradient(135deg,#fff9ec,#f6ede4); }
.candidate-auto .eyebrow { margin-bottom:.35rem; }
.candidate-auto h3 { margin:0; font:700 1.12rem "Gowun Batang",serif; }
.candidate-auto p:last-child { margin:.4rem 0 0; color:var(--muted); font-size:.77rem; line-height:1.6; }
.candidate-auto button { width:100%; }
.candidate-divider { display:flex; align-items:center; gap:.75rem; margin:1.35rem 0 .1rem; color:var(--muted); font-size:.72rem; font-weight:700; }
.candidate-divider::before,.candidate-divider::after { content:""; flex:1; height:1px; background:var(--line); }
.candidate-summary>div:first-child { border-color:#cfb57f; background:#fff8e8; }
.tab-count { display:inline-grid; min-width:1.3rem; height:1.3rem; margin-left:.25rem; padding:0 .3rem; place-items:center; border-radius:1rem; color:white; background:var(--wine); font:500 .62rem "DM Mono",monospace; }
.review-guide { position:relative; overflow:hidden; margin:1.2rem 0; padding:1.1rem; border:1px solid rgba(114,81,163,.2); border-radius:var(--radius-md); background:linear-gradient(125deg,rgba(238,232,250,.92),rgba(253,232,226,.9) 52%,rgba(223,244,239,.9)); }
.review-guide::after { content:""; position:absolute; right:-2.5rem; top:-3rem; width:8rem; height:8rem; border:1.5rem solid rgba(255,255,255,.32); border-radius:50%; pointer-events:none; }
.review-guide>div { display:grid; gap:.2rem; }
.review-guide-kicker { color:var(--violet); font:600 .62rem "DM Mono",monospace; letter-spacing:.14em; }
.review-guide strong { color:var(--plum-deep); font:700 1rem "Gowun Batang",serif; }
.review-guide p { position:relative; z-index:1; max-width:48rem; margin:.45rem 0 0; color:var(--ink-soft); font-size:.78rem; line-height:1.65; }
.review-guide ul { position:relative; z-index:1; display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:.45rem; margin:.9rem 0 0; padding:0; list-style:none; }
.review-guide li { display:flex; align-items:center; gap:.45rem; min-height:40px; padding:.48rem .55rem; border:1px solid rgba(255,255,255,.72); border-radius:.65rem; background:rgba(255,255,255,.58); color:var(--ink-soft); font-size:.69rem; font-weight:700; }
.review-guide li b { color:var(--wine); font:600 .6rem "DM Mono",monospace; }
.review-search { grid-template-columns:minmax(0,1fr) auto; }
.review-summary { grid-template-columns:repeat(2,1fr); }
.review-summary>div { position:relative; overflow:hidden; }
.review-summary>div::after { content:""; position:absolute; right:-.75rem; bottom:-1rem; width:2.7rem; height:2.7rem; border-radius:50%; opacity:.28; }
.review-summary>div:nth-child(1) { border-color:#d7c9e9; background:var(--violet-soft); }
.review-summary>div:nth-child(1)::after { background:var(--violet); }
.review-summary>div:nth-child(2) { border-color:#e7c77d; background:var(--amber-soft); }
.review-summary>div:nth-child(2)::after { background:var(--amber); }
.review-summary>div:nth-child(3) { border-color:#9acdc3; background:var(--teal-soft); }
.review-summary>div:nth-child(3)::after { background:var(--teal); }
.review-summary>div:nth-child(4) { border-color:#edb2aa; background:var(--coral-soft); }
.review-summary>div:nth-child(4)::after { background:var(--coral); }
.review-list { display:grid; gap:.85rem; min-height:12rem; margin-top:1rem; }
.review-card { overflow:hidden; border:1px solid var(--line); border-left:5px solid var(--amber); border-radius:1rem; background:white; box-shadow:0 10px 28px rgba(57,29,42,.08); transition:border-color .2s ease,box-shadow .2s ease; }
.review-card.approved { border-left-color:var(--teal); }
.review-card.rejected { border-left-color:var(--coral); }
.review-card[open] { border-color:rgba(125,56,82,.35); box-shadow:0 18px 42px rgba(57,29,42,.13); }
.review-card-summary { position:relative; display:grid; gap:.85rem; min-height:88px; padding:1rem 3rem 1rem 1rem; cursor:pointer; list-style:none; background:linear-gradient(110deg,#fff,#fdf9f4); }
.review-card-summary::-webkit-details-marker { display:none; }
.review-card-summary::after { content:"＋"; position:absolute; right:1rem; top:50%; width:1.8rem; height:1.8rem; display:grid; place-items:center; border-radius:50%; color:var(--wine); background:#f5e8e8; font-size:1rem; transform:translateY(-50%); transition:transform .2s ease,background .2s ease; }
.review-card[open]>.review-card-summary::after { content:"−"; transform:translateY(-50%) rotate(180deg); background:var(--coral-soft); }
.review-card-titleline { min-width:0; }
.review-card-titleline h3 { margin:.35rem 0 0; font:700 1.15rem "Gowun Batang",serif; letter-spacing:-.025em; }
.review-card-titleline p { margin:.25rem 0 0; color:var(--muted); font-size:.72rem; line-height:1.5; }
.review-card-kicker { display:flex; align-items:center; flex-wrap:wrap; gap:.35rem; }
.review-origin { color:var(--violet); font:600 .61rem "DM Mono",monospace; letter-spacing:.08em; }
.review-quick-facts { display:flex; flex-wrap:wrap; gap:.35rem; }
.review-quick-facts span,.theme-chip,.ingredient-chip { display:inline-flex; align-items:center; min-height:28px; padding:.28rem .55rem; border:1px solid #e8ddd0; border-radius:999px; color:var(--ink-soft); background:#faf6ef; font-size:.67rem; font-weight:700; }
.review-taste-compact { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:.4rem; }
.taste-pill { min-width:0; padding:.5rem .55rem; border-radius:.7rem; }
.taste-pill span,.taste-pill b { display:block; }
.taste-pill span { color:var(--muted); font-size:.62rem; }
.taste-pill b { margin-top:.1rem; font:700 .82rem "DM Mono",monospace; }
.taste-pill.sweet { color:#a93c48; background:#fde7ea; }
.taste-pill.acid { color:#79600f; background:#fff2bd; }
.taste-pill.fizz { color:#0e6e71; background:#def4f2; }
.taste-pill.body { color:#654197; background:#eee7fa; }
.review-card-body { padding:1rem; border-top:1px solid #eee2d5; background:linear-gradient(180deg,#fffdf9,#fbf6ef); animation:review-reveal .22s ease-out; }
.review-detail-grid { display:grid; gap:.8rem; }
.review-section { min-width:0; padding:1rem; border:1px solid #eadfd3; border-radius:.85rem; background:rgba(255,255,255,.82); }
.review-section h4 { display:flex; align-items:center; gap:.45rem; margin:0 0 .8rem; color:var(--plum); font:700 .9rem "Gowun Batang",serif; }
.review-section h4::before { content:""; width:.55rem; height:.55rem; border-radius:50%; background:linear-gradient(135deg,var(--coral),var(--violet)); box-shadow:0 0 0 4px rgba(216,93,82,.1); }
.review-facts { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:.7rem; margin:0; }
.review-facts div { min-width:0; padding-bottom:.55rem; border-bottom:1px dashed #e8ddd0; }
.review-facts dt { color:var(--muted); font-size:.63rem; font-weight:700; }
.review-facts dd { margin:.25rem 0 0; overflow-wrap:anywhere; color:var(--ink); font-size:.78rem; font-weight:700; line-height:1.4; }
.chip-row { display:flex; flex-wrap:wrap; gap:.35rem; margin-top:.75rem; }
.theme-chip { color:#60418e; border-color:#d8cbea; background:var(--violet-soft); }
.ingredient-chip { color:#7a4b21; border-color:#ead1ae; background:#fff3df; }
.taste-profile { display:grid; gap:.75rem; }
.taste-meter { display:grid; grid-template-columns:4.2rem minmax(0,1fr) 2rem; align-items:center; gap:.55rem; }
.taste-meter>span { color:var(--ink-soft); font-size:.72rem; font-weight:700; }
.taste-meter-track { height:.62rem; overflow:hidden; border-radius:999px; background:#eee7df; }
.taste-meter-track i { display:block; height:100%; border-radius:inherit; }
.taste-meter.sweet i { background:linear-gradient(90deg,#f4a0aa,var(--coral)); }
.taste-meter.acid i { background:linear-gradient(90deg,#f4db72,#b88a17); }
.taste-meter.fizz i { background:linear-gradient(90deg,#83d8d0,var(--teal)); }
.taste-meter.body i { background:linear-gradient(90deg,#bfa6e2,var(--violet)); }
.taste-meter b { text-align:right; font:700 .75rem "DM Mono",monospace; }
.experience-quote { position:relative; margin:0; padding:1rem 1rem 1rem 1.15rem; border-left:3px solid var(--coral); border-radius:0 .75rem .75rem 0; color:var(--ink); background:linear-gradient(120deg,#fff4f1,#fffaf2); font:700 .95rem/1.75 "Gowun Batang",serif; overflow-wrap:anywhere; }
.experience-context { display:grid; gap:.55rem; margin-top:.8rem; }
.context-item { display:grid; grid-template-columns:5rem minmax(0,1fr); gap:.5rem; color:var(--ink-soft); font-size:.75rem; line-height:1.5; }
.context-item b { color:var(--muted); font-size:.67rem; }
.review-audit { display:grid; gap:.55rem; }
.review-audit p { display:grid; grid-template-columns:5.2rem minmax(0,1fr); gap:.55rem; margin:0; font-size:.71rem; line-height:1.5; }
.review-audit b { color:var(--muted); }
.review-audit span { overflow-wrap:anywhere; color:var(--ink-soft); }
.review-decision { margin-top:.8rem; padding:1rem; border:1px solid rgba(22,118,111,.22); border-radius:.85rem; background:linear-gradient(115deg,rgba(223,244,239,.78),rgba(255,241,206,.68)); }
.review-decision-copy strong { display:block; color:var(--plum); font:700 .9rem "Gowun Batang",serif; }
.review-decision-copy p { margin:.3rem 0 0; color:var(--ink-soft); font-size:.71rem; line-height:1.55; }
.review-actions { display:grid; grid-template-columns:1fr 1fr; gap:.55rem; margin-top:.85rem; }
.review-actions button { min-height:46px; }
.review-actions .approve { color:white; border-color:var(--teal); background:linear-gradient(135deg,var(--teal),#205d68); box-shadow:0 7px 16px rgba(22,118,111,.18); }
.review-actions .reject { color:var(--danger); border-color:#dba1a7; background:#fff4f4; }
.review-empty { display:grid; place-items:center; min-height:12rem; padding:2rem; border:1px dashed #d9cabb; border-radius:1rem; color:var(--muted); background:rgba(255,255,255,.55); text-align:center; }
.review-skeleton { min-height:7.5rem; border-radius:1rem; background:linear-gradient(100deg,#f3ece4 20%,#fffaf4 40%,#f3ece4 60%); background-size:200% 100%; animation:skeleton 1.2s ease-in-out infinite; }
.review-badge.pending { color:#8c6427; background:#fff4d9; }
.review-badge.approved { color:var(--success); background:#e8f6f1; }
.review-badge.rejected { color:var(--danger); background:#fcebed; }
@keyframes review-reveal { from { opacity:0; transform:translateY(-5px); } to { opacity:1; transform:none; } }
@keyframes skeleton { from { background-position:100% 0; } to { background-position:-100% 0; } }

.status { position:sticky; z-index:40; bottom:max(.75rem,env(safe-area-inset-bottom)); margin:1rem .25rem 0; padding:.9rem 1rem; border:1px solid; border-radius:.8rem; background:white; box-shadow:0 12px 30px rgba(39,24,35,.16); font-size:.82rem; line-height:1.45; }
.status.success { color:var(--success); border-color:#92c5b4; background:#f0faf6; }
.status.error { color:var(--danger); border-color:#dba1a7; background:#fff4f4; }
.status ul { margin:.5rem 0 0; padding-left:1.1rem; }
.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; }

@media (hover:hover) {
  .primary-button:hover { background:#351735; transform:translateY(-1px); }
  .secondary-button:hover { color:var(--wine); border-color:var(--wine); }
  .tabs button:hover:not([aria-selected="true"]) { color:var(--wine); background:#f6eee7; }
}

@media (min-width:721px) {
  .admin-header { min-height:82px; padding:1rem clamp(1.5rem,4vw,4rem); }
  .admin-header>div { display:block; }
  .admin-shell { width:min(70rem,calc(100% - 2rem)); padding:clamp(2.5rem,5vw,4.5rem) 0 5rem; }
  .intro-panel { grid-template-columns:1.25fr .75fr; gap:clamp(2rem,5vw,5rem); align-items:end; margin:0 0 2.5rem; }
  .auth-card { padding:1.2rem; }
  .tabs { position:static; margin:0 0 1.25rem; padding:0; overflow:visible; border:0; border-bottom:1px solid var(--line); border-radius:0; background:transparent; box-shadow:none; backdrop-filter:none; }
  .tabs button { min-height:48px; padding:.9rem 1.1rem .8rem; border-bottom:3px solid transparent; border-radius:.65rem .65rem 0 0; }
  .tabs button[aria-selected="true"] { color:var(--wine); border-bottom-color:var(--wine); background:#fff9f2; box-shadow:none; }
  .panel { padding:clamp(1.75rem,4vw,2.5rem); }
  .panel-heading { align-items:center; padding-bottom:1.4rem; }
  .panel-heading>p { display:block; }
  .edit-mode { grid-template-columns:1fr auto; align-items:center; padding:.9rem 1rem; }
  .edit-mode .quiet-button { justify-self:end; padding-inline:.6rem; }
  .form-grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:1rem; }
  .image-editor { grid-template-columns:minmax(13rem,.7fr) minmax(0,1.3fr); align-items:center; padding:1rem; }
  .taste-grid { grid-template-columns:repeat(4,minmax(0,1fr)); gap:1rem; }
  .span-2 { grid-column:span 2; }
  .theme-group { display:flex; flex-wrap:wrap; align-items:center; gap:.65rem 1rem; padding:1rem; }
  .theme-group>span { grid-column:auto; margin-right:.25rem; }
  .theme-group label { border:0; background:transparent; }
  .form-actions { display:flex; gap:.75rem; margin-top:2rem; }
  .primary-button,.secondary-button { min-height:46px; }
  .drop-zone { padding:clamp(2.5rem,7vw,4.5rem) 1rem; }
  .preview { padding:1rem; }
  .preview .primary-button,.search-button,.candidate-auto button { width:auto; }
  .catalog-search { grid-template-columns:minmax(0,1fr) 12rem auto; gap:.75rem; margin:1.4rem 0; }
  .catalog-search.review-search { grid-template-columns:minmax(0,1fr) auto; }
  .catalog-summary { gap:.75rem; margin-bottom:1rem; }
  .review-summary { grid-template-columns:repeat(4,1fr); }
  .review-guide { padding:1.25rem 1.35rem; }
  .review-guide ul { grid-template-columns:repeat(4,minmax(0,1fr)); }
  .review-card-summary { grid-template-columns:minmax(0,1.35fr) minmax(16rem,.8fr); align-items:center; padding:1.1rem 3.5rem 1.1rem 1.2rem; }
  .review-taste-compact { align-self:center; }
  .review-card-body { padding:1.2rem; }
  .review-detail-grid { grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr); }
  .review-section.narrative { grid-column:1 / -1; }
  .review-facts { grid-template-columns:repeat(3,minmax(0,1fr)); }
  .review-decision { display:grid; grid-template-columns:minmax(0,1fr) auto; align-items:center; gap:1.25rem; }
  .review-actions { min-width:18rem; margin-top:0; }
  .catalog-summary>div { padding:1rem; }
  .catalog-summary span { font-size:.75rem; }
  .catalog-table-wrap { min-height:15.5rem; overflow:auto; border:1px solid var(--line); }
  .catalog-table { display:table; width:100%; white-space:nowrap; }
  .catalog-table thead { display:table-header-group; }
  .catalog-table tbody { display:table-row-group; }
  .catalog-table tr { display:table-row; padding:0; border:0; border-radius:0; box-shadow:none; }
  .catalog-table td { display:table-cell; width:auto; padding:.72rem .75rem; border-bottom:1px solid #e8dfd4; }
  .catalog-table td::before { content:none; }
  .catalog-table td small { max-width:13.75rem; }
  .source-copy { max-width:9rem; }
  .catalog-table .loading-cell { display:table-cell; }
  .candidate-auto { grid-template-columns:minmax(0,1fr) auto; align-items:center; gap:2rem; padding:1.3rem 1.4rem; }
}

@media (min-width:1024px) {
  .panel { border-radius:1.5rem; }
  .catalog-table th,.catalog-table td { padding:.8rem .9rem; }
}

@media (prefers-reduced-motion:reduce) { html { scroll-behavior:auto; } *,*::before,*::after { animation-duration:.01ms!important; animation-iteration-count:1!important; transition-duration:.01ms!important; } }
