:root{--bg:#faf6ef;--ink:#1c1914;--muted:#5c564c;--cream:#fff9f0;--line:#1c19141f;--shadow:0 18px 48px #1c191414;--radius:20px;--radius-sm:12px;--font:"DM Sans", system-ui, sans-serif;--accent-a:#e8f5e4;--accent-b:#fde8d4;--accent-c:#e4eef8;--accent-d:#f3e8f8}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth}body{min-height:100vh;font-family:var(--font);color:var(--ink);background:var(--bg);background-image:radial-gradient(120% 80% at 10% -10%,#e8f5e4e6,#0000 50%),radial-gradient(100% 60% at 100% 0,#fde8d4b3,#0000 45%);margin:0;font-size:1rem;line-height:1.5}#app{min-height:100vh}.site-header{text-align:center;padding:clamp(2rem,5vw,3.5rem) clamp(1.25rem,4vw,2rem) 2rem}.header-inner{max-width:40rem;margin:0 auto}.logo{letter-spacing:-.03em;margin:0;font-size:clamp(2rem,5vw,2.75rem);font-weight:700;line-height:1.15}.tagline{color:var(--muted);margin:.5rem 0 1.5rem;font-size:1.05rem}.main{max-width:1200px;margin:0 auto;padding:0 clamp(1.25rem,4vw,2rem) 4rem}.main-narrow{max-width:720px}.catalog-grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:1.25rem;display:grid}.empty-msg{text-align:center;color:var(--muted);grid-column:1/-1;padding:3rem 1rem}.card{background:var(--cream);border-radius:var(--radius);border:1px solid var(--line);box-shadow:var(--shadow);flex-direction:column;transition:transform .2s,box-shadow .2s;display:flex;overflow:hidden}.card:hover{transform:translateY(-4px);box-shadow:0 22px 56px #1c19141f}.card.accent-a{--card-tint:var(--accent-a)}.card.accent-b{--card-tint:var(--accent-b)}.card.accent-c{--card-tint:var(--accent-c)}.card.accent-d{--card-tint:var(--accent-d)}.card-image-wrap{aspect-ratio:4/3;background:var(--card-tint,var(--accent-a));position:relative}.card-image-wrap img{object-fit:cover;width:100%;height:100%;display:block}.card-body{flex-direction:column;flex:1;gap:.35rem;padding:1.1rem 1.25rem 1.35rem;display:flex}.card-cat{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-size:.75rem;font-weight:600}.card-body h3{letter-spacing:-.02em;margin:0;font-size:1.2rem;font-weight:600}.card-desc{color:var(--muted);flex:1;margin:0;font-size:.9rem}.card-price{letter-spacing:-.02em;margin:.5rem 0 0;font-size:1.25rem;font-weight:700}.btn{cursor:pointer;border:none;border-radius:999px;padding:.65rem 1.25rem;font-family:inherit;font-size:.95rem;font-weight:600;transition:background .15s,color .15s,box-shadow .15s}.btn-primary{background:var(--ink);color:var(--cream);box-shadow:0 4px 14px #1c191433}.btn-primary:hover{background:#2d2820}.btn-ghost{color:var(--ink);border:1px solid var(--line);background:0 0;text-decoration:none}.btn-ghost:hover{background:#1c19140d}.btn-danger{color:#fff;background:#b42318}.btn-danger:hover{background:#912018}.btn-danger-outline{color:#b42318;background:0 0;border:1px solid #b4231859}.btn-danger-outline:hover{background:#b4231814}.btn-sm{padding:.4rem .75rem;font-size:.85rem}.btn-icon{width:2.5rem;height:2.5rem;color:var(--muted);cursor:pointer;background:0 0;border:none;border-radius:50%;padding:0;font-size:1.5rem;line-height:1}.btn-icon:hover{color:var(--ink);background:#1c19140f}.modal{z-index:100;justify-content:center;align-items:flex-end;padding:0;display:flex;position:fixed;inset:0}@media (width>=640px){.modal{align-items:center;padding:1.5rem}}.modal[hidden]{display:none}.modal-backdrop{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#1c191473;position:absolute;inset:0}.modal-panel{background:var(--cream);border-radius:var(--radius) var(--radius) 0 0;flex-direction:column;width:100%;max-width:520px;max-height:min(92vh,720px);display:flex;position:relative;overflow:hidden;box-shadow:0 -8px 40px #1c191426}.modal-panel-wide{max-width:920px}@media (width>=640px){.modal-panel{border-radius:var(--radius);max-height:min(90vh,760px)}}.modal-head{border-bottom:1px solid var(--line);flex-shrink:0;justify-content:space-between;align-items:center;padding:1rem 1rem .75rem 1.25rem;display:flex}.modal-head h2{margin:0;font-size:1.15rem;font-weight:700}.modal-body{padding:1rem 1.25rem 1.5rem;overflow-y:auto}.admin-list{flex-direction:column;gap:.5rem;margin:0 0 1.25rem;padding:0;list-style:none;display:flex}.admin-empty{color:var(--muted);margin:0 0 1rem;font-size:.9rem}.admin-row{background:var(--bg);border-radius:var(--radius-sm);border:1px solid var(--line);grid-template-columns:1fr auto;align-items:center;gap:.5rem .75rem;padding:.65rem .85rem;display:grid}.admin-row-name{grid-column:1/-1;font-size:.9rem;font-weight:600}@media (width>=420px){.admin-row{grid-template-columns:1fr auto auto}.admin-row-name{grid-column:auto}}.admin-row-price{color:var(--muted);font-size:.85rem}.admin-row-actions{flex-wrap:wrap;gap:.35rem;display:flex}.admin-toolbar{margin:0 0 1rem}.form-section-title{margin:0 0 .75rem;font-size:1rem;font-weight:600}.product-form{flex-direction:column;gap:.85rem;display:flex}.product-form label{color:var(--muted);flex-direction:column;gap:.35rem;font-size:.85rem;font-weight:600;display:flex}.product-form input,.product-form textarea{font:inherit;border-radius:var(--radius-sm);border:1px solid var(--line);color:var(--ink);background:#fff;padding:.55rem .75rem}.product-form input:focus,.product-form textarea:focus{outline-offset:1px;outline:2px solid #1c191433}.form-actions{flex-wrap:wrap;gap:.5rem;margin-top:.25rem;display:flex}.import-export{border-top:1px solid var(--line);flex-direction:column;gap:.5rem;margin-top:1.25rem;padding-top:1.25rem;display:flex}.file-label{cursor:pointer;text-align:center;justify-content:center;align-items:center;display:inline-flex}.panel{background:var(--cream);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:1.25rem}.panel-title{margin:0 0 .75rem;font-size:1.15rem;font-weight:700}.hint{color:var(--muted);margin:.75rem 0 0;font-size:.9rem}.product-detail{grid-template-columns:1fr;gap:1rem;display:grid}@media (width>=720px){.product-detail{grid-template-columns:1.2fr 1fr;align-items:start}}.product-detail-img{aspect-ratio:3/2;border-radius:var(--radius);border:1px solid var(--line);background:var(--bg);overflow:hidden}.product-detail-img img{object-fit:cover;width:100%;height:100%;display:block}.product-detail-info{flex-direction:column;gap:.5rem;display:flex}.product-detail-cat{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:0;font-size:.8rem;font-weight:700}.product-detail-price{letter-spacing:-.03em;margin:0;font-size:1.6rem;font-weight:800}.product-detail-desc{color:var(--muted);margin:0;font-size:1rem;line-height:1.6}
