:root{
    --brand:#2c5aa0; --brand-600:#1e3d6f; --ok:#28a745; --warn:#f39c12;
    --ink:#1f2937; --muted:#6b7280; --line:#e5e7eb; --card:#ffffff; --bg:#f7f7fb;
    --chip:#f8f9ff; --chip-sel:#e8f1ff; --radius:14px; --shadow:0 8px 24px rgba(0,0,0,.06);
}
@media (prefers-color-scheme:dark){
    :root{
        --bg:#0f1115; --card:#151822; --ink:#f3f4f6; --muted:#9aa1ad; --line:#232736;
        --chip:#1a2030; --chip-sel:#1e2a43; --shadow:0 10px 28px rgba(0,0,0,.35);
    }
}
*{box-sizing:border-box}
html,body{height:100%}
body{
    margin:0; color:var(--ink);
    font:15px/1.5 system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,"Helvetica Neue",Arial,"Noto Sans","Apple Color Emoji","Segoe UI Emoji";
    background: radial-gradient(1200px 1200px at 120% -10%, #e7f1ff 20%, transparent 60%),
                radial-gradient(1000px 1000px at -10% 120%, #eef6ff 10%, transparent 60%),
                var(--bg);
    min-height:100vh;
    position:relative;
    overflow-x: hidden;
}
.container{max-width:1000px;margin:0 auto;padding:24px;position:relative;z-index:1}
.header{text-align:center;margin:4px 0 18px}
.title{font-size:clamp(28px,4vw,40px);margin:0;letter-spacing:.2px;color:var(--brand)}
.subtitle{margin:.25rem 0 0;color:var(--muted)}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}
.pad{padding:20px}
.stack{display:flex;flex-direction:column;gap:14px}
.query{display:flex;flex-direction:column;gap:12px}

textarea{
    width:100%;min-height:110px;padding:16px 14px;resize:vertical;
    border:2px solid var(--line);border-radius:12px;background:transparent;color:inherit
}
textarea:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px rgba(44,90,160,.15)}

.bubbles{
  position:fixed; inset:0; pointer-events:none; z-index:-1;
  overflow:hidden;
}
.bubble{
  position:absolute; border-radius:50%;
  background: radial-gradient(circle at 30% 30%, #ffffff 0 15%, #cfe5ff 30%, #8cc4ff 60%, #7fb5ff 70%, #2c5aa0 100%);
  filter: blur(0.2px) saturate(1.05);
  opacity:.18; animation: float 18s ease-in-out infinite;
}
.bubble:nth-child(1){ width:220px; height:220px; left:-60px; top:-40px; animation-duration:24s; }
.bubble:nth-child(2){ width:140px; height:140px; right:8%; top:8%; animation-duration:20s; }
.bubble:nth-child(3){ width:320px; height:320px; right:-80px; bottom:-60px; animation-duration:28s; }
.bubble:nth-child(4){ width:110px; height:110px; left:12%; bottom:10%; animation-duration:22s; }
@keyframes float{
  0%,100%{ transform: translateY(0) }
  50%{ transform: translateY(-14px) }
}

.btn{appearance:none;border:0;cursor:pointer;font-weight:700;border-radius:12px;padding:14px 18px;transition:.06s transform,.2s filter,.2s background;letter-spacing:.2px}
.btn-primary{background:linear-gradient(180deg,var(--brand) 0%,var(--brand-600) 100%);color:#fff;box-shadow:0 10px 18px rgba(44,90,160,.25), inset 0 1px 0 rgba(255,255,255,.25)}
.btn-primary:hover{filter: brightness(1.03)}
.btn-primary:active{transform: translateY(1px)}
.btn-muted{background:#eef2f7;color:#1f2937}
@media (prefers-color-scheme:dark){.btn-muted{background:#1b2030;color:#dce1ee}}

.banner{display:flex;gap:10px;align-items:flex-start;background:#fff7e5;border-left:6px solid var(--warn);color:#7a5606;padding:16px;border-radius:12px}
@media (prefers-color-scheme:dark){.banner{background:#2b220e;color:#f9e8c6}}
.badge{display:inline-flex;align-items:center;gap:6px;font-size:12px;padding:4px 8px;border-radius:999px;border:1px solid var(--line);background:var(--chip)}
.badge-green{border-color:#b7ebc1;background:#eafaf0;color:#0f7a2a}
@media (prefers-color-scheme:dark){.badge-green{border-color:#214a2b;background:#122416;color:#95e5a1}}
.badge-blue{border-color:#b3d9ff;background:#e8f4ff;color:#1e40af}
@media (prefers-color-scheme:dark){.badge-blue{border-color:#1e3a8a;background:#1e293b;color:#93c5fd}}

.section-title{font-size:16px;font-weight:700;color:var(--brand);margin:6px 0 2px}
.chip-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:8px}
.chip{border:1.5px solid var(--line);background:var(--chip);border-radius:12px;padding:12px 14px;text-align:left;display:flex;align-items:center;gap:10px;cursor:pointer;transition:.15s border-color,.15s background,.15s transform}
.chip:focus-visible{outline:3px solid rgba(44,90,160,.35)}
.chip:hover{border-color:var(--brand)}
.chip.selected{background:var(--chip-sel);border-color:var(--brand)}
.chip .k{flex:1}
.chip .r{font-size:11px}

.row{display:grid;grid-template-columns:1fr auto;gap:12px;align-items:end}
.control{display:flex;flex-direction:column;gap:6px}
.input{border:2px solid var(--line);background:transparent;color:inherit;border-radius:10px;padding:10px 12px;font-weight:600}
.seg{display:flex;border:1.5px solid var(--line);border-radius:12px;overflow:hidden}
.seg button{flex:1;padding:10px 14px;background:transparent;color:inherit;border:0;cursor:pointer;font-weight:600;border-right:1px solid var(--line)}
.seg button:last-child{border-right:0}
.seg button[aria-pressed="true"]{background:var(--chip-sel);color:var(--brand);border-color:var(--brand)}
.hint{font-size:12px;color:var(--muted)}

.actions{position:sticky;bottom:0;z-index:2;backdrop-filter:blur(8px);padding:10px 0;margin-top:10px}
.actions .bar{display:flex;justify-content:flex-end;gap:10px}
.btn-success{background:linear-gradient(135deg,#21a65b,#15803d);color:#fff;box-shadow:0 10px 16px rgba(21,128,61,.25)}
.btn-success:disabled{opacity:.55;cursor:not-allowed;box-shadow:none}

.processing{text-align:center;padding:36px;color:var(--muted);font-style:italic}

/* sections used by renderer */
.pricing-section{margin:16px 0;padding:16px;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}
.pricing-header{font-weight:700;color:var(--brand);margin-bottom:10px;font-size:16px}
.ingredient-item{margin:8px 0;padding:12px;background:var(--chip);border-left:4px solid var(--brand);border-radius:8px}
.total-price{font-size:20px;font-weight:800;color:var(--ok);margin-top:12px;text-align:center;padding:14px;border-radius:10px;background:linear-gradient(135deg,#d4edda,#c3e6cb)}
