/* 株式会社スリー 共通スタイル — 野帳（フィールドノート）と等高線を基調にした肌 */
:root{
  --white:#ffffff; --ink:#0f1a14; --sub:#5b6b62; --line:#e6ebe8; --soft:#f5f8f6;
  --green:#009775; --green-d:#007a5e; --green-l:#e7f4f0;
  --black:#001208; --black-2:#04210f;
  --amber:#f0a500; --red:#e05252;
  --f-disp:'Zen Kaku Gothic New',sans-serif;
  --f-body:'Noto Sans JP',sans-serif;
  --f-mono:'Space Mono',ui-monospace,monospace;
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  font-family:var(--f-body);color:var(--ink);background:var(--white);line-height:1.8;-webkit-font-smoothing:antialiased;overflow-x:hidden;
  background-image:
    repeating-linear-gradient(0deg,rgba(0,151,117,.035) 0,rgba(0,151,117,.035) 1px,transparent 1px,transparent 25px),
    repeating-linear-gradient(90deg,rgba(0,151,117,.035) 0,rgba(0,151,117,.035) 1px,transparent 1px,transparent 25px);
}
h1,h2,h3{font-family:var(--f-disp);font-weight:700;line-height:1.2;letter-spacing:-.008em}
.wrap{max-width:1180px;margin:0 auto;padding:0 28px}
.en{font-family:var(--f-mono);font-weight:700;font-size:11.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--green);display:inline-flex;align-items:center;gap:9px;margin-bottom:18px}
.en::before{content:"";width:20px;height:1px;background:var(--green)}
.en.lt{color:#5fd3b3}
.en.lt::before{background:#5fd3b3}
a{color:inherit;text-decoration:none}
a:focus-visible,button:focus-visible{outline:2px solid var(--green);outline-offset:3px;border-radius:6px}

/* nav */
.nav{position:fixed;top:0;left:0;right:0;z-index:50;display:flex;align-items:center;justify-content:space-between;padding:18px 28px;transition:.3s}
.nav.solid{background:rgba(255,255,255,.92);backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}
.nav.onlight .brand,.nav.onlight .menu{color:var(--ink)}
.brand{display:flex;align-items:center;gap:10px;font-family:var(--f-disp);font-weight:700;font-size:18px;color:#fff;transition:.3s}
.nav.solid .brand{color:var(--ink)}
.brand .mk{width:30px;height:30px;border-radius:7px;background:var(--green);color:#fff;display:flex;align-items:center;justify-content:center;font-family:var(--f-mono);font-weight:700;font-size:14px}
.menu{display:flex;align-items:center;gap:30px;font-size:14px;font-weight:500;color:rgba(255,255,255,.92)}
.nav.solid .menu{color:var(--ink)}
.menu .cta{background:var(--green);color:#fff;padding:9px 20px;border-radius:7px;font-weight:600}
.burger{display:none;background:none;border:0;color:#fff;font-size:24px;cursor:pointer}
.nav.solid .burger{color:var(--ink)}

/* hero (top, full) */
.hero{position:relative;min-height:100vh;display:flex;align-items:center;background:#02160c;overflow:hidden}
.hero #pcloud{position:absolute;inset:0;width:100%;height:100%;display:block}
.hero::after{content:"";position:absolute;inset:0;background:linear-gradient(105deg,rgba(2,18,10,.86) 0%,rgba(2,18,10,.55) 45%,rgba(2,18,10,.2) 100%)}
.hero-in{position:relative;z-index:2;width:100%;opacity:0;transform:translateY(14px);animation:rise .9s cubic-bezier(.2,.7,.2,1) .15s forwards}
@keyframes rise{to{opacity:1;transform:none}}
.hero h1{color:#fff;font-size:clamp(38px,6.4vw,80px);max-width:20ch}
.hero p.lead{color:rgba(255,255,255,.86);font-size:clamp(15px,1.5vw,19px);max-width:46ch;margin-top:26px;font-weight:400}
.hero .acts{margin-top:38px;display:flex;gap:14px;flex-wrap:wrap}
.vidtag{position:absolute;right:22px;bottom:20px;z-index:3;font-family:var(--f-mono);font-size:11px;letter-spacing:.04em;color:rgba(255,255,255,.42);border:1px solid rgba(95,211,179,.28);padding:5px 12px;border-radius:20px;background:rgba(2,18,10,.35);backdrop-filter:blur(3px)}
@media(max-width:860px){.vidtag{display:none}}

/* page hero (sub-pages, shorter dark band) */
.pagehero{position:relative;background:var(--black);color:#fff;padding:160px 0 84px;overflow:hidden}
.pagehero #pcloud{position:absolute;inset:0;width:100%;height:100%;opacity:.5}
.pagehero::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,18,8,.6),rgba(0,18,8,.9))}
.pagehero .wrap{position:relative;z-index:2}
.pagehero h1{color:#fff;font-size:clamp(32px,5vw,58px);max-width:18ch}
.pagehero p{color:rgba(255,255,255,.82);font-size:clamp(15px,1.4vw,18px);max-width:50ch;margin-top:20px;font-weight:400}
.crumb{font-family:var(--f-mono);font-size:12px;color:#5fd3b3;margin-bottom:18px;letter-spacing:.04em}

/* buttons */
.btn{display:inline-flex;align-items:center;gap:9px;font-weight:600;font-size:15px;padding:14px 28px;border-radius:9px;transition:.2s;cursor:pointer;border:0}
.btn-g{background:var(--green);color:#fff}
.btn-g:hover{background:var(--green-d)}
.btn-o{border:1.5px solid rgba(255,255,255,.45);color:#fff;background:transparent}
.btn-o:hover{background:rgba(255,255,255,.1)}
.btn-ol{border:1.5px solid var(--line);color:var(--ink);background:transparent;font-family:var(--f-mono);font-size:13.5px}
.btn-ol:hover{background:var(--soft)}

/* sections */
section{padding:110px 0}
.sec-head{max-width:62ch}
.sec-head h2{font-size:clamp(27px,3.4vw,44px)}
.sec-head p{color:var(--sub);font-size:17px;margin-top:18px}

/* pillars (legacy — kept for compatibility, unused in current pages) */
.pillars{display:grid;grid-template-columns:repeat(3,1fr);gap:26px;margin-top:56px}
.pillar{border-top:2px solid var(--green-l);padding:20px 0 0}
.pillar .ic{width:28px;height:28px;margin-bottom:16px}
.pillar .ic svg{width:28px;height:28px;stroke:var(--green);stroke-width:1.5;fill:none}
.pillar h3{font-size:19px;font-weight:700}
.pillar p{color:var(--sub);font-size:15px;margin-top:10px}
.center-cta{text-align:center;margin-top:54px}

/* method list (top page 3-step sequence) — plain typographic sequence, no connector diagram */
.methodlist{margin-top:56px;display:grid;grid-template-columns:repeat(3,1fr);gap:30px}
.mitem{border-top:2px solid var(--green-l);padding:20px 0 0;transition:border-color .2s}
.mitem:hover{border-top-color:var(--green)}
.mitem .n{font-family:var(--f-mono);font-weight:700;font-size:12.5px;color:var(--green);letter-spacing:.1em}
.mitem .role{font-family:var(--f-mono);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--sub);margin-top:2px}
.mitem h3{font-size:19px;font-weight:700;margin-top:10px}
.mitem p{color:var(--sub);font-size:15px;margin-top:10px}

/* contour divider */
.contour{display:block;width:100%;height:60px;color:var(--line)}
.contour path{fill:none;stroke:currentColor;stroke-width:1}
.dark .contour{color:rgba(95,211,179,.22)}

/* dark block */
.dark{background:var(--black);color:#fff}
.dark h2{color:#fff;font-size:clamp(27px,3.8vw,48px);max-width:18ch}
.problems{display:grid;grid-template-columns:repeat(3,1fr);gap:30px;margin-top:50px}
.prob{border-top:2px solid rgba(95,211,179,.4);padding-top:20px}
.prob .n{font-family:var(--f-mono);font-weight:700;color:var(--green);font-size:14px;letter-spacing:.08em}
.prob p{color:rgba(255,255,255,.78);font-size:15px;margin-top:12px}

/* stance (top page) — split by hairlines, no decorative numbers */
.stance{margin-top:50px;display:grid;grid-template-columns:repeat(3,1fr);gap:0}
.stance .st{padding:0 30px}
.stance .st:first-child{padding-left:0}
.stance .st:not(:first-child){border-left:1px solid rgba(95,211,179,.28)}
.stance .st .tick{font-family:var(--f-mono);font-size:11px;letter-spacing:.1em;color:#5fd3b3;margin-bottom:14px}
.stance .st p{color:rgba(255,255,255,.8);font-size:15.5px}

.declare{margin-top:54px;font-family:var(--f-disp);font-size:clamp(19px,2.3vw,29px);font-weight:700;color:#fff;max-width:26ch;line-height:1.55}
.declare b{color:var(--green);font-weight:700}

/* feature rows */
.feat{display:grid;grid-template-columns:1fr 1fr;gap:64px;align-items:center}
.feat+.feat{margin-top:96px}
.feat.rev .ftxt{order:2}
.feat .ftxt h2{font-size:clamp(23px,2.8vw,36px)}
.feat .ftxt p{color:var(--sub);font-size:16px;margin-top:16px}
.video-ph{aspect-ratio:4/3;border-radius:14px;background:#03160d;position:relative;overflow:hidden;border:1px solid var(--line)}
.video-ph .ph-grad{position:absolute;inset:0;background:radial-gradient(120% 120% at 30% 20%,#0c3a28 0%,#03160d 60%)}
.video-ph canvas{position:absolute;inset:0;width:100%;height:100%}
.video-ph .lbl{position:absolute;left:16px;bottom:14px;z-index:2;font-family:var(--f-mono);font-size:11px;color:rgba(255,255,255,.62);border:1px dashed rgba(255,255,255,.32);padding:5px 12px;border-radius:20px}
.chips{display:flex;flex-wrap:wrap;gap:9px;margin-top:22px}
.chip{font-family:var(--f-mono);font-size:11.5px;font-weight:700;color:var(--green-d);background:var(--green-l);padding:6px 12px;border-radius:6px;letter-spacing:.02em}

/* solution / service grid — quiet spec-sheet list, not colored icon tiles */
.cardgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:34px 28px;margin-top:50px}
.scard{border-top:2px solid var(--green-l);padding:22px 0 0;transition:border-color .2s}
.scard:hover{border-top-color:var(--green)}
.scard .ic{width:27px;height:27px;margin-bottom:16px}
.scard .ic svg{width:27px;height:27px;stroke:var(--green);stroke-width:1.5;fill:none}
.scard h3{font-size:17.5px;font-weight:700}
.scard p{color:var(--sub);font-size:14px;margin-top:9px}
.scard .tag{display:inline-block;margin-top:14px;font-family:var(--f-mono);font-size:10.5px;font-weight:700;color:var(--green-d);background:var(--green-l);padding:3px 9px;border-radius:5px}

/* step flow — plain typographic sequence (the sequence is real, the graphic isn't) */
.steps{display:grid;grid-template-columns:repeat(4,1fr);gap:22px;margin-top:50px}
.step{position:relative;padding-top:18px;border-top:2px solid var(--green-l)}
.step .n{font-family:var(--f-mono);font-weight:700;font-size:12.5px;color:var(--green);letter-spacing:.1em}
.step h3{font-size:16.5px;font-weight:700;margin-top:8px}
.step p{color:var(--sub);font-size:14px;margin-top:8px}

/* spec / compare table */
.spec{margin-top:40px;border:1px solid var(--line);border-radius:12px;overflow:hidden}
.spec table{width:100%;border-collapse:collapse}
.spec td,.spec th{padding:15px 20px;text-align:left;font-size:15px;border-bottom:1px solid var(--line)}
.spec th{background:var(--soft);font-weight:700;font-size:12.5px;letter-spacing:.04em;color:var(--sub)}
.spec tr:last-child td{border-bottom:0}
.spec .hl{color:var(--green-d);font-weight:700;font-family:var(--f-mono)}

/* diagram box */
.diagram{background:var(--soft);border:1px solid var(--line);border-radius:14px;padding:30px;margin-top:8px}
.diagram svg{width:100%;height:auto;display:block}

/* safety / law cards — same quiet spec-sheet treatment as scard */
.safegrid{display:grid;grid-template-columns:repeat(3,1fr);gap:34px 24px;margin-top:50px}
.safe{border-top:2px solid var(--line);padding:20px 0 0}
.safe .ic{color:var(--green);margin-bottom:14px}
.safe .ic svg{width:26px;height:26px;stroke:var(--green);stroke-width:1.5;fill:none}
.safe h3{font-size:16px;font-weight:700}
.safe p{color:var(--sub);font-size:14px;margin-top:8px}

/* projects: filter + cards */
.filterbar{position:sticky;top:66px;z-index:30;background:rgba(255,255,255,.94);backdrop-filter:blur(10px);border-bottom:1px solid var(--line);padding:16px 0;margin-bottom:46px}
.filterbar .wrap{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.fbtn{font-family:var(--f-mono);font-size:12.5px;font-weight:700;color:var(--sub);background:var(--soft);border:1px solid var(--line);padding:8px 15px;border-radius:20px;cursor:pointer;transition:.15s}
.fbtn:hover{border-color:var(--green)}
.fbtn.on{background:var(--green);color:#fff;border-color:var(--green)}
.casegrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:22px}
.case{border:1px solid var(--line);border-radius:12px;overflow:hidden;background:var(--white);transition:.2s}
.case:hover{transform:translateY(-3px);border-color:var(--green)}
.case .thumb{aspect-ratio:16/10;background:radial-gradient(120% 120% at 30% 20%,#0c3a28,#03160d);position:relative;overflow:hidden}
.case .thumb canvas{position:absolute;inset:0;width:100%;height:100%}
.case .thumb .ph{position:absolute;left:12px;bottom:10px;font-family:var(--f-mono);font-size:10px;color:rgba(255,255,255,.6);border:1px dashed rgba(255,255,255,.3);padding:3px 9px;border-radius:14px}
.case .body{padding:18px 20px}
.case .cat{font-family:var(--f-mono);font-size:10.5px;font-weight:700;color:var(--green-d);letter-spacing:.03em}
.case h3{font-size:15.5px;font-weight:700;margin-top:7px}
.case p{color:var(--sub);font-size:13px;margin-top:8px}
.notice{background:var(--green-l);border:1px solid #bfe4d9;border-radius:10px;padding:16px 20px;margin-top:14px;font-size:14px;color:var(--green-d)}

/* contact */
.contact{text-align:center}
.contact h2{font-size:clamp(27px,3.4vw,44px)}
.contact .acts{margin-top:34px;display:flex;gap:14px;justify-content:center;flex-wrap:wrap}

/* footer */
.foot{background:var(--black);color:rgba(255,255,255,.7);padding:64px 0 40px}
.foot-top{display:flex;justify-content:space-between;gap:40px;flex-wrap:wrap;border-bottom:1px solid rgba(255,255,255,.12);padding-bottom:34px}
.foot .brand{color:#fff}
.foot .fnav{display:flex;gap:54px;flex-wrap:wrap}
.foot .fnav h4{font-family:var(--f-mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:#5fd3b3;font-weight:700;margin-bottom:14px}
.foot .fnav a{display:block;font-size:14px;color:rgba(255,255,255,.72);margin-bottom:9px}
.foot .fnav a:hover{color:#fff}
.foot-bot{padding-top:26px;font-family:var(--f-mono);font-size:12.5px;color:rgba(255,255,255,.5);display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap}

/* reveal */
.rv{opacity:0;transform:translateY(28px);transition:opacity .7s cubic-bezier(.2,.7,.2,1),transform .7s cubic-bezier(.2,.7,.2,1)}
.rv.in{opacity:1;transform:none}

@media(max-width:860px){
  .menu{display:none}.burger{display:block}
  .pillars,.problems,.safegrid,.methodlist{grid-template-columns:1fr;gap:30px}
  .steps{grid-template-columns:1fr 1fr;gap:24px}
  .feat{grid-template-columns:1fr;gap:30px}
  .feat.rev .ftxt{order:0}
  section{padding:74px 0}
  .foot-top{flex-direction:column}
  .stance{grid-template-columns:1fr;gap:30px}
  .stance .st{padding:0}
  .stance .st:not(:first-child){border-left:0;border-top:1px solid rgba(95,211,179,.28);padding-top:26px}
}

@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .hero-in{animation:none;opacity:1;transform:none}
  .rv{opacity:1;transform:none;transition:none}
}
