/* VSolar website — red & white design system. One stylesheet, no framework.
   Brand red #ec2029 is sampled straight from the VSolar logo. Patterns are pure CSS
   (repeating gradients + dot grids) so they cost nothing extra to load. */
:root{
  --red:#ec2029; --red-d:#c4151d; --red-l:#ff4b52; --red-soft:#fff1f1; --red-line:#f7cfd1;
  --ink:#16181d; --muted:#6a7280; --line:#e7e9ee; --bg:#ffffff; --bg-alt:#f7f8fa;
  --radius:16px; --shadow:0 2px 12px rgba(22,24,29,.07); --shadow-l:0 16px 38px rgba(22,24,29,.14);
  --wrap:1140px;
  --pat-dots:radial-gradient(rgba(255,255,255,.14) 1.4px, transparent 1.5px);
  --pat-dots-dark:radial-gradient(rgba(22,24,29,.06) 1.4px, transparent 1.5px);
  --pat-diag:repeating-linear-gradient(135deg, rgba(255,255,255,.055) 0 2px, transparent 2px 11px);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--ink);font-family:"IBM Plex Sans Thai","Inter",system-ui,-apple-system,"Segoe UI",sans-serif;font-size:17px;line-height:1.7;-webkit-font-smoothing:antialiased}
img{max-width:100%;height:auto;display:block}
a{color:var(--red-d);text-decoration:none}
a:hover{text-decoration:underline}
h1,h2,h3{line-height:1.22;margin:0 0 .5em;color:var(--ink);font-weight:700;letter-spacing:-.015em}
h1{font-size:clamp(1.95rem,4.3vw,3.05rem)}
h2{font-size:clamp(1.5rem,2.9vw,2.15rem);margin-bottom:.8em}
h3{font-size:1.12rem}
.h3{font-size:1.12rem;margin-bottom:.6em}
p{margin:0 0 1em}
.wrap{width:min(var(--wrap),calc(100% - 40px));margin-inline:auto}
.narrow{max-width:760px}
.muted{color:var(--muted)}
.small{font-size:.9rem}
.mt{margin-top:1.8rem}
.skip{position:absolute;left:-9999px}

/* red accent bar under section headings */
.pad h2::after{content:"";display:block;width:54px;height:4px;border-radius:4px;background:var(--red);margin:.5em 0 0}
.pagehead h1::after,.band h2::after{content:"";display:block;width:54px;height:4px;border-radius:4px;background:#fff;margin:.5em 0 0}
.band h2::after{margin-inline:auto}

/* ---------- header */
header.site{position:sticky;top:0;z-index:50;background:rgba(255,255,255,.95);backdrop-filter:blur(8px);border-bottom:1px solid var(--line)}
header.site::after{content:"";display:block;height:3px;background:linear-gradient(90deg,var(--red) 0%,var(--red-l) 42%,var(--red-d) 100%)}
.bar{display:flex;align-items:center;gap:20px;min-height:68px}
.logo img{width:150px;height:auto}
nav.main{margin-left:auto;display:flex;align-items:center;gap:18px}
nav.main .links{display:flex;gap:16px;flex-wrap:wrap}
nav.main a{color:var(--ink);font-size:.92rem;white-space:nowrap;font-weight:500;text-decoration:none;padding:6px 0;border-bottom:2px solid transparent}
nav.main a:hover{color:var(--red)}
nav.main a.on{color:var(--red);border-bottom-color:var(--red)}
.navcta{display:flex;align-items:center;gap:14px}
.langsw{display:flex;gap:3px;border:1px solid var(--line);border-radius:10px;padding:3px;background:#fff}
nav.main .langsw a{font-size:.8rem;font-weight:600;letter-spacing:.02em;padding:4px 9px;line-height:1.35;white-space:nowrap;border-radius:7px;border:0;color:var(--muted)}
nav.main .langsw a.on{background:var(--red);color:#fff;border-bottom-color:transparent}
nav.main .langsw a:hover{text-decoration:none;color:var(--red)}
.burger{display:none;margin-left:auto;width:42px;height:38px;background:none;border:1px solid var(--line);border-radius:10px;cursor:pointer;padding:9px 10px}
.burger span{display:block;height:2px;background:var(--red);margin:9px 0 0;border-radius:2px;transition:.2s}
.burger span:first-child{margin-top:0}

/* ---------- buttons */
.btn{display:inline-block;background:var(--red);color:#fff;font-weight:600;padding:13px 27px;border-radius:999px;border:0;cursor:pointer;font-size:1rem;font-family:inherit;box-shadow:0 6px 18px rgba(236,32,41,.28);transition:.16s}
.btn:hover{background:var(--red-d);text-decoration:none;transform:translateY(-1px);box-shadow:0 10px 24px rgba(236,32,41,.34)}
.btn.ghost{background:transparent;color:#fff;border:1.5px solid rgba(255,255,255,.7);box-shadow:none}
.btn.ghost:hover{background:rgba(255,255,255,.14)}
.btn.small{padding:9px 18px;font-size:.92rem}
.actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:1.4em}

/* ---------- hero */
.hero{position:relative;color:#fff;isolation:isolate;min-height:clamp(440px,64vh,640px);display:flex;align-items:center;overflow:hidden}
.hero picture,.hero img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:-3}
.hero::before{content:"";position:absolute;inset:0;z-index:-2;background:linear-gradient(104deg,rgba(18,19,23,.95) 6%,rgba(24,25,30,.82) 42%,rgba(140,18,24,.58) 78%,rgba(236,32,41,.45) 100%)}
.hero::after{content:"";position:absolute;inset:0;z-index:-1;background-image:var(--pat-diag)}
.hero .inner{padding:74px 0;position:relative}
.hero h1{color:#fff;max-width:17ch}
.hero .lede{font-size:1.1rem;max-width:56ch;color:#e6e8ec}
.eyebrow{display:inline-block;background:rgba(236,32,41,.28);color:#fff;border:1px solid rgba(255,255,255,.4);padding:5px 14px;border-radius:999px;font-size:.85rem;font-weight:600;margin-bottom:18px}
.lede{font-size:1.08rem}

/* ---------- sections */
.pad{padding:70px 0;position:relative}
.pad-s{padding:24px}
.alt{background:var(--bg-alt);background-image:var(--pat-dots-dark);background-size:18px 18px}
.pagehead{position:relative;overflow:hidden;background:linear-gradient(120deg,var(--red-d) 0%,var(--red) 58%,#ff6167 130%);color:#fff;padding:64px 0 58px}
.pagehead::after{content:"";position:absolute;inset:0;background-image:var(--pat-dots);background-size:16px 16px;pointer-events:none}
.pagehead .wrap{position:relative;z-index:1}
.pagehead h1{color:#fff}
.pagehead .lede{color:rgba(255,255,255,.94);margin-bottom:0}
.trust{background:var(--ink);background-image:var(--pat-diag);color:#fff;padding:24px 0}
.trust .grid4{gap:18px}
.trust .grid4>div{display:flex;flex-direction:column;padding-left:14px;border-left:3px solid var(--red)}
.trust strong{color:#fff;font-size:1.3rem;line-height:1.3}
.trust span{color:#b9bec8;font-size:.9rem}
.grid2{display:grid;grid-template-columns:repeat(2,1fr);gap:24px}
.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}
.grid4{display:grid;grid-template-columns:repeat(4,1fr);gap:24px}
.grid-auto{display:grid;grid-template-columns:repeat(auto-fit,minmax(246px,1fr));gap:22px}
.card{position:relative;background:#fff;border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}
.card h3{margin-top:0}
.card p:last-child{margin-bottom:0}
.pad-s.card::before,.seg::before{content:"";position:absolute;left:0;top:0;width:100%;height:3px;background:linear-gradient(90deg,var(--red),var(--red-l));transform:scaleX(0);transform-origin:left;transition:.25s;z-index:2}
.pad-s.card:hover::before,.seg:hover::before{transform:scaleX(1)}
a.card{color:inherit;text-decoration:none;display:block;transition:.18s}
a.card:hover{box-shadow:var(--shadow-l);transform:translateY(-3px);text-decoration:none;border-color:var(--red-line)}
.seg .body{padding:22px}
.seg img{aspect-ratio:16/9;object-fit:cover}
.more{color:var(--red);font-weight:600;font-size:.95rem}

/* steps */
.steps{list-style:none;padding:0;margin:0;display:grid;gap:16px}
.steps li{display:flex;gap:18px;align-items:flex-start;background:#fff;border:1px solid var(--line);border-left:4px solid var(--red);border-radius:var(--radius);padding:18px 22px;box-shadow:var(--shadow)}
.steps .n{flex:0 0 38px;height:38px;border-radius:50%;background:var(--red);color:#fff;display:grid;place-items:center;font-weight:700}
.steps h3{margin-bottom:.2em}
.steps p{margin:0;color:var(--muted)}

/* lists */
ul.ticks{list-style:none;padding:0;margin:0 0 1em}
ul.ticks li{position:relative;padding-left:28px;margin-bottom:.55em}
ul.ticks.small li{font-size:.94rem;margin-bottom:.4em;padding-left:24px}
ul.ticks.small li::before{left:3px;width:8px;height:8px}
.card p.muted+ul.ticks{margin-bottom:0}
ul.ticks li::before{content:"";position:absolute;left:5px;top:.6em;width:9px;height:9px;border-radius:3px;background:var(--red);transform:rotate(45deg)}
ul.plain{list-style:none;padding:0;margin:0}
ul.plain li,ol.plain li{margin-bottom:.4em}
ol.plain.num{padding-left:1.2em}
ol.plain.num li::marker{color:var(--red);font-weight:700}

/* gallery */
.gal{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin:18px 0}
.gal img{aspect-ratio:4/3;object-fit:cover;border-radius:12px;box-shadow:var(--shadow);transition:.25s}
.gal img:hover{transform:scale(1.02);box-shadow:var(--shadow-l)}

/* product shots inside a product line */
.prods{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin:20px 0 22px}
.prods figure{margin:0;border:1px solid var(--line);border-radius:12px;overflow:hidden;background:#fff}
.prods img{aspect-ratio:4/3;object-fit:cover;width:100%}
.prods figcaption{padding:12px 14px;font-size:.9rem;line-height:1.55;border-top:2px solid var(--red-soft)}
.prods figcaption b{display:block;color:var(--ink)}
.prods figcaption span{color:var(--muted)}

/* price tables */
.lines{display:grid;gap:26px}
.line.card{border-top:3px solid var(--red)}
.line .body{padding:26px}
.badge{display:inline-block;background:var(--red-soft);color:var(--red-d);border:1px solid var(--red-line);border-radius:999px;padding:3px 12px;font-size:.82rem;font-weight:600;margin-bottom:10px}
.badge.soon{background:#f4f5f7;color:var(--muted);border-color:var(--line)}
.tablewrap{overflow-x:auto;margin:18px 0}
table{border-collapse:collapse;width:100%;font-size:.95rem}
table.pkg th,table.pkg td{border-bottom:1px solid var(--line);padding:12px 14px;text-align:left;white-space:nowrap}
table.pkg thead th{background:var(--ink);color:#fff;font-weight:600;border-bottom:0}
table.pkg tbody th{font-weight:600}
table.pkg .price{font-weight:700;color:var(--red-d);text-align:right}
table.pkg tbody tr:hover{background:var(--red-soft)}
table.facts th,table.facts td{border-bottom:1px solid var(--line);padding:10px 12px;text-align:left;vertical-align:top}
table.facts th{width:34%;color:var(--muted);font-weight:500}

/* band */
.band{position:relative;overflow:hidden;background:linear-gradient(120deg,var(--ink) 0%,#3a0d11 62%,var(--red-d) 128%);color:#fff;padding:58px 0;text-align:center}
.band::after{content:"";position:absolute;inset:0;background-image:var(--pat-diag);pointer-events:none}
.band .wrap{position:relative;z-index:1}
.band h2{color:#fff;margin-bottom:.2em}
.band .actions{justify-content:center}

/* contact */
.contact{display:grid;grid-template-columns:1.6fr 1fr;gap:28px;align-items:start}
form label{display:block;margin-bottom:14px;font-size:.92rem;color:var(--muted);font-weight:500}
form input,form select,form textarea{display:block;width:100%;margin-top:6px;padding:12px 14px;border:1px solid var(--line);border-radius:10px;font:inherit;font-size:1rem;color:var(--ink);background:#fff}
form input:focus,form select:focus,form textarea:focus{outline:2px solid rgba(236,32,41,.3);border-color:var(--red)}
.f2{display:grid;grid-template-columns:1fr 1fr;gap:0 16px}
.hp{position:absolute!important;left:-9999px!important;width:1px!important;height:1px!important}
.formmsg{margin-top:12px;font-weight:600;min-height:1.4em}
.formmsg.ok{color:#15803d}
.formmsg.err{color:var(--red-d)}
.contacts li{margin-bottom:.55em;font-size:1rem;padding-left:16px;position:relative}
.contacts li::before{content:"";position:absolute;left:0;top:.62em;width:7px;height:7px;border-radius:2px;background:var(--red);transform:rotate(45deg)}

/* footer */
footer.site{background:var(--ink);background-image:var(--pat-dots);background-size:20px 20px;color:#c2c7d0;padding:54px 0 26px;border-top:4px solid var(--red)}
footer.site h3{color:#fff;font-size:1rem}
footer.site a{color:#e2e5ea}
footer.site a:hover{color:#fff}
footer .cols{display:grid;grid-template-columns:2fr 1fr 1.2fr;gap:30px}
.flogo{background:#fff;border-radius:10px;padding:8px 10px;margin-bottom:14px;width:170px}
footer .legal{border-top:1px solid rgba(255,255,255,.14);margin-top:34px;padding-top:18px;font-size:.85rem;color:#9aa1ad}

/* floating "view installations" button + photo popup */
.photobtn{position:fixed;top:86px;right:18px;z-index:45;display:inline-flex;align-items:center;gap:8px;background:#fff;color:var(--red-d);border:2px solid var(--red);border-radius:999px;padding:10px 18px;font:inherit;font-size:.95rem;font-weight:700;cursor:pointer;box-shadow:0 8px 24px rgba(0,0,0,.22);transition:.16s}
.photobtn:hover{background:var(--red);color:#fff;transform:translateY(-1px)}
.photobtn svg{flex:0 0 auto}
.modal{position:fixed;inset:0;z-index:100;background:rgba(10,10,12,.72);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;padding:18px}
.modal[hidden]{display:none}
.modal-box{background:#fff;border-radius:18px;width:min(1180px,100%);max-height:calc(100vh - 36px);display:flex;flex-direction:column;overflow:hidden;box-shadow:0 30px 80px rgba(0,0,0,.45);border-top:4px solid var(--red)}
.modal-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:20px 24px 12px;border-bottom:1px solid var(--line)}
.modal-head h2{font-size:1.25rem;margin:0 0 .2em}
.modal-head h2::after{display:none}
.modal-head p{margin:0}
.modal-close{flex:0 0 auto;background:var(--bg-alt);border:1px solid var(--line);border-radius:999px;padding:8px 14px;font:inherit;font-size:.9rem;font-weight:600;color:var(--ink);cursor:pointer}
.modal-close:hover{background:var(--red-soft);border-color:var(--red-line);color:var(--red-d)}
.modal-body{overflow:auto;padding:18px 24px;background:var(--bg-alt)}
.pgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.ptile{display:block;border-radius:12px;overflow:hidden;background:#ddd;box-shadow:var(--shadow);transition:.2s}
.ptile img{aspect-ratio:4/3;object-fit:cover;width:100%}
.ptile:hover{transform:scale(1.02);box-shadow:var(--shadow-l)}
.modal-foot{padding:12px 24px 16px;border-top:1px solid var(--line);font-size:.92rem;color:var(--muted)}
.modal-foot a{font-weight:600}
body.modal-open{overflow:hidden}

/* whatsapp fab */
.fab{position:fixed;right:18px;bottom:18px;width:54px;height:54px;border-radius:50%;display:grid;place-items:center;color:#fff;background:#25d366;box-shadow:0 6px 20px rgba(0,0,0,.25);z-index:60}
.fab:hover{filter:brightness(1.06);text-decoration:none}

@media (max-width:1180px){
  nav.main .links{gap:12px}
  nav.main a{font-size:.88rem}
  .btn.small{padding:8px 14px;font-size:.88rem}
}
@media (max-width:960px){
  .grid3,.grid4,.gal,.prods,.grid-auto{grid-template-columns:repeat(2,1fr)}
  .pgrid{grid-template-columns:repeat(2,1fr)}
  .contact,footer .cols{grid-template-columns:1fr}
  .burger{display:block}
  nav.main{display:none;position:absolute;left:0;right:0;top:100%;background:#fff;border-bottom:1px solid var(--line);flex-direction:column;align-items:stretch;gap:0;padding:10px 20px 18px;box-shadow:var(--shadow-l)}
  nav.main.open{display:flex}
  nav.main .links{flex-direction:column;gap:0}
  nav.main .links a{padding:12px 0;border-bottom:1px solid var(--line)}
  nav.main a.on{border-bottom-color:var(--line);color:var(--red)}
  .navcta{margin-top:14px;justify-content:space-between}
  .hero .inner{padding:56px 0}
}
@media (max-width:620px){
  body{font-size:16px}
  .photobtn{top:auto;bottom:84px;right:14px;padding:10px 14px;font-size:.88rem}
  .modal{padding:0}
  .modal-box{border-radius:0;max-height:100vh;height:100vh}
  .pgrid{grid-template-columns:repeat(2,1fr);gap:8px}
  .modal-head,.modal-body,.modal-foot{padding-left:14px;padding-right:14px}
  .modal-close span{display:none}
  .grid2,.grid3,.grid4,.grid-auto{grid-template-columns:1fr}
  .gal,.prods{grid-template-columns:repeat(2,1fr)}
  .f2{grid-template-columns:1fr}
  .pad{padding:48px 0}
  .trust .grid4{grid-template-columns:repeat(2,1fr);gap:14px}
  .actions .btn{flex:1 1 100%;text-align:center}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto}}
