  :root{
    --sky-100:#eef3f6;
    --sky-200:#dbe6ec;
    --alu-900:#232b33;
    --alu-700:#3a4552;
    --alu-500:#647385;
    --blue-600:#2f6f9e;
    --blue-700:#245675;
    --amber-500:#e0a24a;
    --amber-600:#c8872e;
    --green-600:#4d7f5e;
    --red-600:#b1503f;
    --white:#ffffff;
    --line:#c7d3da;
    --radius:2px;
  }
  .vsf-root, .vsf-root *{box-sizing:border-box;}
  .vsf-root{
    background:var(--sky-100);
    color:var(--alu-900);
    font-family:'Inter',sans-serif;
    line-height:1.5;
    -webkit-font-smoothing:antialiased;
  }
  .vsf-root h1, .vsf-root h2, .vsf-root h3{
    font-family:'Space Grotesk',sans-serif;
    margin:0;
    letter-spacing:-0.01em;
  }
  .vsf-root .mono{font-family:'IBM Plex Mono',monospace;}

  /* ===== Hero ===== */
  .vsf-root .vsf-hero{
    background:linear-gradient(180deg,var(--alu-900) 0%,var(--alu-700) 100%);
    color:var(--white);
    padding:64px 24px 88px;
    position:relative;
    overflow:hidden;
  }
  .vsf-root .vsf-hero-inner{
    max-width:960px;
    margin:0 auto;
    position:relative;
    z-index:2;
  }
  .vsf-root .eyebrow{
    font-family:'IBM Plex Mono',monospace;
    font-size:12px;
    letter-spacing:0.12em;
    text-transform:uppercase;
    color:var(--amber-500);
    margin-bottom:14px;
    display:flex;
    align-items:center;
    gap:10px;
  }
  .vsf-root .eyebrow::before{
    content:"";
    width:22px;
    height:1px;
    background:var(--amber-500);
    display:inline-block;
  }
  .vsf-root .vsf-hero h1{
    font-size:clamp(32px,5vw,50px);
    line-height:1.08;
    max-width:640px;
    font-weight:600;
  }
  .vsf-root .vsf-hero p.sub{
    max-width:520px;
    margin-top:18px;
    color:var(--sky-200);
    font-size:16px;
  }

  /* blueprint frame diagram */
  .vsf-root .vsf-blueprint{
    position:absolute;
    right:-40px;
    top:50%;
    transform:translateY(-50%);
    width:380px;
    height:380px;
    opacity:0.9;
  }
  @media (max-width:880px){ .vsf-blueprint{display:none;} }

  /* ===== Layout ===== */
  .vsf-root .vsf-wrap{
    max-width:960px;
    margin:0 auto;
    padding:0 24px;
  }
  .vsf-root .panel{
    background:var(--white);
    border:1px solid var(--line);
    border-radius:var(--radius);
    margin-top:-48px;
    position:relative;
    z-index:3;
    box-shadow:0 20px 40px -20px rgba(35,43,51,0.25);
  }

  /* ===== Form ===== */
  form{padding:36px;}
  .vsf-root .form-title{
    font-size:13px;
    font-family:'IBM Plex Mono',monospace;
    text-transform:uppercase;
    letter-spacing:0.08em;
    color:var(--blue-700);
    border-bottom:1px solid var(--line);
    padding-bottom:14px;
    margin-bottom:24px;
    display:flex;
    justify-content:space-between;
  }
  .vsf-root .grid{
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:20px;
  }
  @media (max-width:640px){ .grid{grid-template-columns:1fr;} }
  .field{margin-bottom:20px;}
  .field.full{grid-column:1 / -1;}
  .vsf-root label{
    display:block;
    font-size:12px;
    font-weight:600;
    text-transform:uppercase;
    letter-spacing:0.04em;
    color:var(--alu-700);
    margin-bottom:7px;
  }
  .vsf-root label .opt{
    font-weight:400;
    text-transform:none;
    color:var(--alu-500);
    letter-spacing:0;
  }
  .vsf-root input[type=text], .vsf-root input[type=tel], .vsf-root input[type=email], .vsf-root input[type=number], .vsf-root select{
    width:100%;
    border:1px solid var(--line);
    border-radius:var(--radius);
    padding:11px 12px;
    font-size:15px;
    font-family:'Inter',sans-serif;
    background:var(--sky-100);
    color:var(--alu-900);
    transition:border-color .15s, background .15s;
  }
  .vsf-root input:focus, .vsf-root select:focus, .vsf-root .file-btn:focus-within{
    outline:none;
    border-color:var(--blue-600);
    background:var(--white);
    box-shadow:0 0 0 3px rgba(47,111,158,0.15);
  }
  .vsf-root .code-field input{
    font-family:'IBM Plex Mono',monospace;
    letter-spacing:0.08em;
    text-transform:uppercase;
    font-size:16px;
    background:var(--white);
    border:1.5px dashed var(--blue-600);
    padding:12px 12px;
  }
  .vsf-root .code-hint{
    font-size:12px;
    color:var(--alu-500);
    margin-top:6px;
  }
  .vsf-root .dim-row{
    display:grid;
    grid-template-columns:1fr auto 1fr;
    gap:10px;
    align-items:end;
  }
  .vsf-root .dim-x{
    text-align:center;
    font-family:'IBM Plex Mono',monospace;
    color:var(--alu-500);
    padding-bottom:12px;
    font-size:15px;
  }
  .unit-suffix{position:relative;}
  .unit-suffix input{padding-right:38px;}
  .vsf-root .unit-suffix::after{
    content:"cm";
    position:absolute;
    right:12px;
    bottom:12px;
    font-size:13px;
    color:var(--alu-500);
    font-family:'IBM Plex Mono',monospace;
    pointer-events:none;
  }
  .vsf-root .file-btn{
    border:1px dashed var(--line);
    border-radius:var(--radius);
    padding:16px;
    text-align:center;
    background:var(--sky-100);
    cursor:pointer;
    font-size:13px;
    color:var(--alu-500);
  }
  .vsf-root .file-btn.has-file{
    border-color:var(--green-600);
    color:var(--green-600);
    background:#eef5f0;
  }
  .file-btn input{display:none;}

  .vsf-root .submit-row{
    display:flex;
    align-items:center;
    gap:16px;
    margin-top:8px;
    flex-wrap:wrap;
  }
  .vsf-root button.submit{
    background:var(--amber-500);
    color:var(--alu-900);
    border:none;
    font-weight:600;
    font-size:15px;
    padding:14px 28px;
    border-radius:var(--radius);
    cursor:pointer;
    font-family:'Space Grotesk',sans-serif;
    transition:background .15s, transform .1s;
  }
  button.submit:hover{background:var(--amber-600);}
  button.submit:active{transform:translateY(1px);}
  .submit-note{font-size:12px;color:var(--alu-500);}

  /* ===== Result ===== */
  .vsf-root #result{
    display:none;
    margin:0 36px 36px;
    border-radius:var(--radius);
    padding:24px;
    border:1px solid var(--line);
  }
  #result.confirmed{background:#eef5f0;border-color:var(--green-600);}
  #result.likely{background:#fbf3e6;border-color:var(--amber-600);}
  #result.review{background:var(--sky-100);border-color:var(--blue-600);}
  #result.none{background:#fbeeec;border-color:var(--red-600);}
  .vsf-root .result-tag{
    font-family:'IBM Plex Mono',monospace;
    font-size:11px;
    text-transform:uppercase;
    letter-spacing:0.1em;
    padding:4px 9px;
    border-radius:999px;
    display:inline-block;
    margin-bottom:12px;
    color:var(--white);
  }
  #result.confirmed .result-tag{background:var(--green-600);}
  #result.likely .result-tag{background:var(--amber-600);}
  #result.review .result-tag{background:var(--blue-600);}
  #result.none .result-tag{background:var(--red-600);}
  .vsf-root .result-size{
    font-family:'Space Grotesk',sans-serif;
    font-size:22px;
    font-weight:600;
    margin-bottom:8px;
  }
  .vsf-root .result-size .code{
    font-family:'IBM Plex Mono',monospace;
    background:var(--alu-900);
    color:var(--white);
    padding:2px 8px;
    border-radius:2px;
    font-size:18px;
    margin-right:8px;
  }
  .result-msg{font-size:14.5px;color:var(--alu-700);}

  /* ===== Reference table ===== */
  .vsf-root .ref{
    padding:0 36px 40px;
  }
  .vsf-root .ref-toggle{
    font-size:13px;
    color:var(--blue-700);
    cursor:pointer;
    font-weight:600;
    display:inline-flex;
    align-items:center;
    gap:6px;
    user-select:none;
  }
  .ref-toggle::before{content:"+";font-family:'IBM Plex Mono',monospace;}
  .ref-toggle.open::before{content:"–";}
  .vsf-root table{
    width:100%;
    border-collapse:collapse;
    margin-top:16px;
    font-size:13px;
    display:none;
  }
  table.open{display:table;}
  .vsf-root th, .vsf-root td{
    text-align:left;
    padding:9px 10px;
    border-bottom:1px solid var(--line);
  }
  .vsf-root th{
    font-family:'IBM Plex Mono',monospace;
    text-transform:uppercase;
    font-size:11px;
    letter-spacing:0.05em;
    color:var(--alu-500);
  }
  td.code-cell{font-family:'IBM Plex Mono',monospace;color:var(--blue-700);font-weight:600;}

  .vsf-root footer{
    text-align:center;
    padding:40px 24px 60px;
    color:var(--alu-500);
    font-size:13px;
  }
