:root{
      --wine:#a6455a;
      --wine-dark:#833647;
      --wine-soft:#f7eef1;
      --gold:#c2a468;
      --gold-soft:#faf6ed;
      --ink:#262327;
      --text:#3f3a3e;
      --muted:#7a7378;
      --muted-2:#9a9398;
      --bg:#f5f5f7;
      --surface:#ffffff;
      --surface-2:#fbfafb;
      --line:rgba(55,46,51,.10);
      --line-2:rgba(55,46,51,.06);
      --good:#44734d;
      --good-soft:#eef7f1;
      --bad:#b54153;
      --bad-soft:#fff2f4;
      --shadow:0 18px 42px rgba(41,31,36,.07),0 2px 10px rgba(41,31,36,.04);
      --radius-xl:28px;
      --radius-lg:20px;
      --radius-md:16px;
      --spring:cubic-bezier(.2,.8,.2,1);
    }

    *{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
    html,body{margin:0;min-height:100%;background:var(--bg);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,"SF Pro Text","SF Pro Display","Segoe UI Variable","Segoe UI",system-ui,sans-serif;-webkit-font-smoothing:antialiased}
    body{padding-bottom:env(safe-area-inset-bottom)}
    button,input,select{font:inherit}
    button{cursor:pointer;touch-action:manipulation}
    button:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid rgba(166,69,90,.18);outline-offset:2px}

    .topbar{position:sticky;top:0;z-index:60;padding:calc(10px + env(safe-area-inset-top)) clamp(14px,2vw,24px) 10px;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:12px;background:rgba(245,245,247,.88);border-bottom:1px solid var(--line-2);backdrop-filter:blur(18px) saturate(140%);-webkit-backdrop-filter:blur(18px) saturate(140%)}
    .back{width:42px;height:42px;border:0;border-radius:12px;display:grid;place-items:center;background:transparent;color:var(--wine)}
    .back svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
    .brand{display:flex;align-items:center;gap:12px;min-width:0}
    .brand img{width:34px;height:34px;object-fit:contain;flex:0 0 34px}
    .brand-copy{min-width:0}
    .brand strong{display:block;font-size:1.02rem;font-weight:720;letter-spacing:-.025em;color:var(--wine)}
    .brand span{display:block;margin-top:2px;color:#9e834e;font-size:.70rem;font-weight:650;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
    .top-link{min-width:42px;height:42px;padding:0 12px;border:1px solid var(--line);border-radius:999px;display:inline-flex;align-items:center;justify-content:center;gap:8px;background:rgba(255,255,255,.8);color:#5f585d;font-size:.72rem;font-weight:650;text-decoration:none}
    .top-link svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}

    .shell{width:min(1460px,100%);margin:0 auto;padding:18px clamp(12px,2vw,26px) calc(30px + env(safe-area-inset-bottom))}
    .app-frame{display:grid;grid-template-columns:minmax(0,1.28fr) minmax(330px,.72fr);gap:20px;align-items:start}
    .card{background:var(--surface);border:1px solid var(--line-2);border-radius:var(--radius-xl);box-shadow:var(--shadow);overflow:hidden}

    .viewer-card{position:sticky;top:90px;padding:0}
    .viewer-header{padding:18px 22px 14px;border-bottom:1px solid var(--line-2);background:linear-gradient(180deg,#ffffff 0%,#fcfbfc 100%)}
    .eyebrow{display:flex;align-items:center;gap:8px;margin-bottom:10px;color:#9e834e;font-size:.66rem;font-weight:760;letter-spacing:.12em;text-transform:uppercase}
    .eyebrow:before{content:"";width:18px;height:1px;background:var(--gold)}
    .viewer-title-row{display:flex;justify-content:space-between;align-items:flex-start;gap:16px}
    .title-wrap h1{margin:0;font-size:2rem;line-height:1.02;letter-spacing:-.055em;color:#2b272b}
    .title-wrap p{margin:7px 0 0;color:var(--muted);font-size:.88rem;line-height:1.45}
    .product-summary{display:flex;align-items:center;gap:8px;margin-top:10px;color:#5a5358;font-size:.86rem;font-weight:600;flex-wrap:wrap}
    .product-summary .dot{width:4px;height:4px;border-radius:50%;background:#c6bdc1}
    .ready-pill{flex:0 0 auto;min-height:34px;padding:0 14px;border:1px solid rgba(68,115,77,.16);border-radius:999px;display:inline-flex;align-items:center;gap:8px;background:var(--good-soft);color:var(--good);font-size:.72rem;font-weight:700;white-space:nowrap}
    .ready-pill:before{content:"";width:9px;height:9px;border-radius:50%;background:currentColor;opacity:.85}
    .ready-pill[data-state="working"]{border-color:rgba(166,69,90,.12);background:var(--wine-soft);color:var(--wine)}
    .ready-pill[data-state="error"]{border-color:rgba(181,65,83,.14);background:var(--bad-soft);color:var(--bad)}

    .stage-shell{padding:18px}
    .stage{position:relative;height:min(70vh,760px);min-height:480px;border:1px solid var(--line-2);border-radius:22px;overflow:hidden;background:linear-gradient(180deg,#f7f4f1 0%,#efe9e4 100%)}
    .stage:after{content:"";position:absolute;left:14%;right:14%;bottom:18px;height:36px;border-radius:50%;background:rgba(71,57,63,.10);filter:blur(20px);pointer-events:none;z-index:1}
    model-viewer{display:block;width:100%;height:100%;--poster-color:transparent;background:radial-gradient(circle at 50% 18%,rgba(255,255,255,.84) 0%,rgba(255,255,255,.25) 33%,transparent 65%)}
    .stage-overlay{position:absolute;inset:0;z-index:4;display:grid;place-items:center;padding:94px 28px 28px;text-align:center;background:rgba(247,246,247,.72);color:var(--muted);font-size:.82rem;line-height:1.5;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}
    .stage-overlay:before{content:"";position:absolute;top:calc(50% - 44px);left:calc(50% - 16px);width:32px;height:32px;border-radius:50%;border:3px solid rgba(166,69,90,.15);border-top-color:var(--wine);animation:spin .8s linear infinite}
    .stage-overlay[hidden]{display:none}
    @keyframes spin{to{transform:rotate(360deg)}}

    .viewer-tools{position:absolute;left:16px;top:16px;z-index:3;display:flex;flex-direction:column;gap:10px}
    .tool{width:42px;height:42px;border:1px solid rgba(255,255,255,.88);border-radius:50%;display:grid;place-items:center;background:rgba(255,255,255,.92);color:#6b6469;box-shadow:0 8px 20px rgba(45,35,40,.10)}
    .tool svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
    .gesture-hint{position:absolute;left:50%;bottom:18px;transform:translateX(-50%);z-index:3;max-width:calc(100% - 28px);padding:8px 12px;border-radius:999px;background:rgba(255,255,255,.9);border:1px solid rgba(255,255,255,.92);color:#786f74;font-size:.66rem;font-weight:600;white-space:nowrap;box-shadow:0 5px 18px rgba(47,38,42,.08)}

    .viewer-footer{padding:0 18px 18px}
    .viewer-caption{margin:0 4px 14px;color:var(--muted);font-size:.74rem;line-height:1.45;text-align:center}
    .ar-button{width:100%;min-height:58px;border:0;border-radius:16px;display:flex;align-items:center;justify-content:center;gap:10px;background:linear-gradient(135deg,#b5546a,var(--wine) 58%,#8b394d);color:#fff;font-size:.94rem;font-weight:730;box-shadow:0 12px 24px rgba(166,69,90,.22), inset 0 1px 0 rgba(255,255,255,.18)}
    .ar-button svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
    .ar-button:disabled{background:#d4d0d2;color:#8f888d;box-shadow:none;cursor:wait}

    .controls-card{padding:0;overflow:visible}
    .controls-header{padding:22px 22px 16px;border-bottom:1px solid var(--line-2)}
    .controls-header h2{margin:0;font-size:1.35rem;letter-spacing:-.03em}
    .controls-header p{margin:6px 0 0;color:var(--muted);font-size:.82rem;line-height:1.45}
    .controls-body{padding:8px 22px 22px}
    .section{padding:18px 0;border-bottom:1px solid var(--line)}
    .section:last-of-type{border-bottom:0;padding-bottom:0}
    .section-title{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;margin-bottom:12px}
    .section-title label,.section-title strong,.label{display:block;color:#595257;font-size:.74rem;font-weight:760;letter-spacing:.08em;text-transform:uppercase}
    .section-title small{color:var(--muted-2);font-size:.74rem;font-weight:600}
    .select,.input{width:100%;min-height:50px;padding:0 15px;border:1px solid var(--line);border-radius:14px;background:#fff;color:#413c40;font-size:.97rem;font-weight:620;box-shadow:inset 0 1px 0 rgba(255,255,255,.45)}
    .product-copy{margin:10px 2px 0;color:var(--muted);font-size:.74rem;line-height:1.45}
    .reference{display:flex;align-items:center;justify-content:space-between;gap:14px;margin:0 0 14px;padding:12px 14px;border-radius:16px;background:#faf6f7;border:1px solid rgba(166,69,90,.08)}
    .reference span:first-child{font-size:1rem;font-weight:700;color:#713d4d;letter-spacing:-.02em}
    .reference span:last-child{padding:5px 10px;border-radius:999px;background:#fff;color:#987b43;font-size:.72rem;font-weight:780;letter-spacing:.08em;text-transform:uppercase}
    .swatches{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
    .swatch{position:relative;padding:8px;border:1px solid rgba(60,60,67,.12);border-radius:18px;background:#fff;color:#50494e;text-align:left;transition:transform .16s var(--spring), box-shadow .16s, border-color .16s}
    .swatch img{display:block;width:100%;aspect-ratio:1.2/1;border-radius:12px;object-fit:cover;background:#f0edef}
    .swatch span{display:block;margin-top:9px;font-size:.78rem;font-weight:650}
    .swatch[aria-pressed="true"]{border-color:rgba(166,69,90,.40);box-shadow:0 0 0 3px rgba(166,69,90,.09)}
    .swatch[aria-pressed="true"]:after{content:"✓";position:absolute;right:10px;top:10px;width:22px;height:22px;border-radius:50%;display:grid;place-items:center;background:var(--wine);color:#fff;border:2px solid #fff;font-size:.66rem;font-weight:800}
    .swatch[aria-pressed="true"] span{color:var(--wine)}
    .measure-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
    .field label{display:block;margin:0 0 7px 2px;color:var(--muted);font-size:.72rem;font-weight:620}
    .unit-wrap{position:relative}
    .unit{position:absolute;right:14px;top:50%;transform:translateY(-50%);color:var(--muted-2);font-size:.70rem;font-weight:650;pointer-events:none}
    .unit-wrap .input{padding-right:38px;font-variant-numeric:tabular-nums}
    .segments{display:grid;grid-template-columns:repeat(var(--columns,2),minmax(0,1fr));gap:8px}
    .segments button{min-height:50px;padding:10px 8px;border:1px solid var(--line);border-radius:14px;background:#fff;color:#635c61;font-size:.82rem;font-weight:700}
    .segments button[aria-pressed="true"]{border-color:rgba(166,69,90,.40);background:var(--wine-soft);color:var(--wine);box-shadow:0 0 0 3px rgba(166,69,90,.08)}
    .segments.three{--columns:3}
    .segments.four{--columns:4}
    .control-block{margin-top:14px}
    .control-block>.label{margin:0 0 9px 2px}
    .recommendation{margin-top:12px;padding:14px;border-radius:16px;border:1px solid rgba(194,164,104,.28);background:var(--gold-soft)}
    .recommendation strong{display:block;color:#745d30;font-size:.78rem;font-weight:760}
    .recommendation span{display:block;margin-top:5px;color:#73674e;font-size:.72rem;line-height:1.45}
    .secondary-control{margin-top:10px}
    .secondary-control summary{padding:8px 2px;color:var(--wine);font-size:.76rem;font-weight:700;cursor:pointer}
    .secondary-control .select{margin-top:6px}
    .collection-line{display:flex;justify-content:space-between;align-items:center;margin:10px 2px 12px;color:var(--muted);font-size:.75rem}
    .collection-line b{color:var(--wine-dark);font-weight:720}
    .status{margin:18px 0 0;padding:14px 15px;border:1px solid var(--line);border-radius:16px;background:#f6f4f5;color:var(--muted);font-size:.76rem;line-height:1.45}
    .status[data-tone="ready"]{border-color:rgba(68,115,77,.10);background:var(--good-soft);color:var(--good)}
    .status[data-tone="error"]{border-color:rgba(181,65,83,.12);background:var(--bad-soft);color:var(--bad)}
    .qa{margin-top:16px;padding:12px;border:1px dashed #b6a5aa;border-radius:14px;background:#fbfafb}
    .qa h2{margin:0 0 8px;font-size:.8rem}
    .qa pre{max-height:260px;overflow:auto;margin:0;white-space:pre-wrap;font:10px/1.45 ui-monospace,SFMono-Regular,Menlo,monospace;color:#51464a}

    @media(any-hover:hover) and (any-pointer:fine){
      .swatch:hover{transform:translateY(-2px);box-shadow:0 10px 24px rgba(42,34,38,.06)}
      .back:hover,.top-link:hover{background:rgba(166,69,90,.05)}
      .ar-button:not(:disabled):hover{transform:translateY(-1px)}
    }

    @media(max-width:1100px){
      .app-frame{grid-template-columns:1fr}
      .viewer-card{position:static;order:1}
      .controls-card{order:2}
      .stage{height:55vh;min-height:400px}
    }

    @media(max-width:700px){
      .topbar{grid-template-columns:42px 1fr auto;padding-left:10px;padding-right:10px}
      .brand strong{font-size:.95rem}
      .brand span{font-size:.64rem}
      .top-link span{display:none}
      .top-link{width:42px;padding:0;border-radius:12px}
      .shell{padding:12px 10px calc(20px + env(safe-area-inset-bottom))}
      .viewer-header{padding:16px 16px 12px}
      .viewer-title-row{display:block}
      .ready-pill{margin-top:12px}
      .title-wrap h1{font-size:1.55rem}
      .title-wrap p{font-size:.78rem}
      .stage-shell{padding:10px}
      .stage{height:44vh;min-height:310px;border-radius:18px}
      .tool{width:38px;height:38px}
      .gesture-hint{bottom:12px;font-size:.60rem}
      .viewer-footer{padding:0 10px 12px}
      .viewer-caption{font-size:.69rem;margin-bottom:10px}
      .ar-button{min-height:54px;font-size:.88rem}
      .controls-header{padding:16px 16px 12px}
      .controls-header h2{font-size:1.14rem}
      .controls-body{padding:6px 16px 16px}
      .section{padding:16px 0}
      .swatches{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
      .swatch{padding:6px;border-radius:16px}
      .swatch span{font-size:.72rem;margin-top:7px}
      .measure-grid{grid-template-columns:1fr 1fr;gap:8px}
      .select,.input,.segments button{min-height:48px}
      .reference{padding:10px 12px;border-radius:14px}
      .reference span:first-child{font-size:.92rem}
      .reference span:last-child{font-size:.66rem}
      .status{font-size:.72rem}
    }

    @media(max-width:430px){
      .swatches{grid-template-columns:repeat(2,minmax(0,1fr))}
      .measure-grid{grid-template-columns:1fr}
      .segments.three{grid-template-columns:1fr 1fr 1fr}
      .segments.four{grid-template-columns:1fr 1fr}
    }

    @media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}
