/* ====================================================================
   Sun Link Design System v1.0
   B+C Hybrid: 和モダン × クロスボーダー
   ==================================================================== */
:root{
  --primary:#1A2D5A;
  --primary-2:#243a72;
  --primary-3:#13234a;
  --accent:#E85A2A;
  --accent-2:#d24d20;
  --sub:#F4B860;
  --bg:#FAF8F4;
  --bg-2:#F2EFE7;
  --ink:#1C1C1E;
  --mute:#6B7280;
  --line:#E5E0D5;
  --white:#ffffff;
  --serif:'Noto Serif JP','Zen Old Mincho',serif;
  --sans:'Noto Sans JP','Inter',sans-serif;
  --en:'Inter','Noto Sans JP',sans-serif;
  --shadow-1:0 30px 60px -20px rgba(26,45,90,.15);
  --shadow-2:0 30px 80px -30px rgba(26,45,90,.25);
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{background:var(--bg);color:var(--ink);font-family:var(--sans);line-height:1.7;-webkit-font-smoothing:antialiased}
img,svg{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
.container{max-width:1200px;margin:0 auto;padding:0 32px}
.container-narrow{max-width:880px;margin:0 auto;padding:0 32px}

/* ============ HEADER ============ */
header.site{
  position:sticky;top:0;z-index:50;
  background:rgba(250,248,244,.85);
  backdrop-filter:saturate(180%) blur(12px);
  border-bottom:1px solid var(--line);
}
.nav{display:flex;align-items:center;justify-content:space-between;height:78px}
.brand{display:flex;align-items:center;gap:12px}
.brand svg{height:40px;width:auto}
.nav ul{display:flex;gap:32px;list-style:none}
.nav ul a{font-size:14px;font-weight:500;color:var(--ink);position:relative;transition:color .2s}
.nav ul a:hover, .nav ul a.active{color:var(--accent)}
.nav ul a::after{content:"";position:absolute;left:0;bottom:-6px;width:0;height:1.5px;background:var(--accent);transition:width .25s}
.nav ul a:hover::after, .nav ul a.active::after{width:100%}

/* ============ BUTTONS ============ */
.btn{display:inline-flex;align-items:center;gap:8px;padding:12px 22px;border-radius:2px;font-size:14px;font-weight:600;transition:transform .2s,background .2s,color .2s,border-color .2s;border:1px solid transparent;cursor:pointer}
.btn-primary{background:var(--primary);color:var(--white)}
.btn-primary:hover{background:var(--primary-2);transform:translateY(-1px)}
.btn-accent{background:var(--accent);color:var(--white)}
.btn-accent:hover{background:var(--accent-2);transform:translateY(-1px)}
.btn-ghost{border-color:var(--primary);color:var(--primary)}
.btn-ghost:hover{background:var(--primary);color:var(--white)}
.btn-white{background:var(--white);color:var(--primary)}
.btn-white:hover{background:var(--bg-2)}
.btn-lg{padding:18px 32px;font-size:15px}

/* ============ PAGE HEADER (intra-page hero) ============ */
.page-hero{padding:96px 0 80px;border-bottom:1px solid var(--line);position:relative}
.page-hero .crumb{font-family:var(--en);font-size:12px;letter-spacing:2px;color:var(--mute);margin-bottom:20px}
.page-hero .crumb a:hover{color:var(--accent)}
.page-hero h1{font-family:var(--serif);font-size:54px;font-weight:700;line-height:1.3;color:var(--primary);letter-spacing:-0.5px}
.page-hero .en-sub{font-family:var(--en);font-size:13px;letter-spacing:4px;color:var(--accent);text-transform:uppercase;margin-bottom:16px;font-weight:700}
.page-hero .desc{max-width:680px;color:var(--mute);font-size:16px;line-height:2;margin-top:28px}

/* ============ SECTION HEAD ============ */
.sec-head{margin-bottom:80px;display:grid;grid-template-columns:1fr 2fr;gap:48px;align-items:end}
.sec-head .en{font-family:var(--en);font-size:12px;font-weight:600;letter-spacing:4px;color:var(--accent);text-transform:uppercase;margin-bottom:18px}
.sec-head h2{font-family:var(--serif);font-size:42px;font-weight:700;color:var(--primary);line-height:1.35;letter-spacing:-0.5px}
.sec-head .desc{color:var(--mute);font-size:15px;line-height:1.9;max-width:520px}
.sec-head .desc .accent{color:var(--accent);font-weight:600}
.sec-head .desc a{color:var(--accent);text-decoration:underline}

/* ============ SECTIONS ============ */
section.section{padding:120px 0}
section.bg-soft{background:var(--bg-2)}
section.bg-primary{background:var(--primary);color:var(--white)}
section.bg-primary h2, section.bg-primary h3{color:var(--white)}
section.bg-primary .sec-head .en{color:var(--sub)}
section.bg-primary .sec-head .desc{color:rgba(255,255,255,.72)}

/* ============ CARDS (服务/案例/资讯) ============ */
.card{background:var(--white);border:1px solid var(--line);transition:transform .3s,box-shadow .3s,border-color .3s}
.card:hover{transform:translateY(-4px);box-shadow:var(--shadow-1)}

/* ============ FORMS ============ */
.field{margin-bottom:28px}
.field label{display:block;font-size:13px;font-weight:600;color:var(--primary);letter-spacing:1px;margin-bottom:10px}
.field label .req{color:var(--accent);margin-left:4px}
.field input, .field textarea, .field select{
  width:100%;padding:14px 16px;background:var(--white);border:1px solid var(--line);
  border-radius:2px;font-family:var(--sans);font-size:15px;color:var(--ink);
  transition:border-color .2s, box-shadow .2s
}
.field input:focus, .field textarea:focus, .field select:focus{
  outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgba(232,90,42,.12)
}
.field textarea{min-height:160px;resize:vertical}
.field .hint{font-size:12px;color:var(--mute);margin-top:6px}

/* ============ CTA BANNER ============ */
.cta-banner{background:linear-gradient(120deg,#E85A2A 0%,#F4B860 100%);padding:96px 0;color:var(--white);position:relative;overflow:hidden}
.cta-banner::after{content:"";position:absolute;right:-100px;top:-100px;width:400px;height:400px;border:1px solid rgba(255,255,255,.25);border-radius:50%}
.cta-banner::before{content:"";position:absolute;right:-50px;top:-50px;width:300px;height:300px;border:1px solid rgba(255,255,255,.18);border-radius:50%}
.cta-banner .container{position:relative;z-index:1;display:flex;justify-content:space-between;align-items:center;gap:48px;flex-wrap:wrap}
.cta-banner h2{font-family:var(--serif);font-size:38px;line-height:1.5;font-weight:700;max-width:680px}
.cta-banner .btn{background:var(--primary);color:var(--white);padding:18px 32px;font-size:15px}
.cta-banner .btn:hover{background:var(--primary-3)}

/* ============ FOOTER ============ */
footer.site{background:var(--primary-3);color:rgba(255,255,255,.7);padding:80px 0 40px;margin-top:0}
footer.site .top{display:grid;grid-template-columns:1.5fr 1fr 1fr 1fr;gap:48px;padding-bottom:56px;border-bottom:1px solid rgba(255,255,255,.1)}
footer.site h4{color:var(--white);font-family:var(--serif);font-size:14px;margin-bottom:20px;letter-spacing:2px}
footer.site ul{list-style:none}
footer.site ul li{margin-bottom:10px;font-size:13px}
footer.site ul a:hover{color:var(--sub)}
footer.site .brand-block p{font-size:13px;line-height:2;margin-top:18px}
footer.site .bottom{display:flex;justify-content:space-between;align-items:center;padding-top:32px;font-size:12px;color:rgba(255,255,255,.5);letter-spacing:1px;flex-wrap:wrap;gap:16px}

/* ============ COMMON TEXT BLOCKS ============ */
.prose h2{font-family:var(--serif);font-size:30px;color:var(--primary);margin:48px 0 20px;line-height:1.5}
.prose h3{font-family:var(--serif);font-size:22px;color:var(--primary);margin:36px 0 16px;line-height:1.6}
.prose p{margin-bottom:20px;font-size:15px;line-height:2}
.prose ul, .prose ol{margin:0 0 20px 24px}
.prose li{margin-bottom:8px;font-size:15px;line-height:1.9}
.prose a{color:var(--accent);text-decoration:underline}
.prose blockquote{border-left:3px solid var(--accent);padding:8px 24px;margin:32px 0;color:var(--mute);font-style:italic;background:var(--bg-2)}

/* ============ TABLE ============ */
table.spec{width:100%;border-collapse:collapse;font-size:15px}
table.spec th, table.spec td{padding:20px 0;border-bottom:1px solid var(--line);text-align:left;vertical-align:top;line-height:1.8}
table.spec th{width:200px;font-weight:600;color:var(--primary);font-family:var(--serif)}
table.spec td{color:var(--ink)}

/* ============ TAGS / BADGES ============ */
.tag{display:inline-block;font-family:var(--en);font-size:11px;font-weight:600;color:var(--accent);letter-spacing:2px;text-transform:uppercase}
.badge{display:inline-block;font-size:11px;padding:4px 10px;border:1px solid var(--primary);color:var(--primary);letter-spacing:2px;font-weight:600}

/* ============ ANIMATIONS ============ */
/* デフォルトは visible — JS が走ったときだけ pre-fade を付けて隠す（プログレッシブエンハンスメント） */
.fade{transition:opacity .8s ease,transform .8s ease}
.fade.pre-fade{opacity:0;transform:translateY(16px)}
.fade.in{opacity:1;transform:none}

/* ============ LOGO ANIMATION ============ */
@keyframes orbit-spin{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}
@keyframes orbit-spin-rev{from{transform:rotate(360deg)}to{transform:rotate(0deg)}}
@keyframes pulse-core{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.7;transform:scale(.92)}}
@keyframes node-twinkle{0%,100%{opacity:.4}50%{opacity:1}}
.logo-svg .orbit-1{transform-origin:50px 50px;animation:orbit-spin 18s linear infinite}
.logo-svg .orbit-2{transform-origin:50px 50px;animation:orbit-spin-rev 22s linear infinite}
.logo-svg .orbit-3{transform-origin:50px 50px;animation:orbit-spin 28s linear infinite}
.logo-svg .core{transform-origin:50px 50px;animation:pulse-core 3.8s ease-in-out infinite}
.logo-svg .node-a,.logo-svg .node-b,.logo-svg .node-c,.logo-svg .node-d{animation:node-twinkle 2.8s ease-in-out infinite}
.logo-svg .node-b{animation-delay:.4s}
.logo-svg .node-c{animation-delay:.8s}
.logo-svg .node-d{animation-delay:1.2s}

/* ============ RESPONSIVE BASE ============ */
html{overflow-x:hidden}
body{min-width:0;overflow-x:hidden}

@media (max-width: 1100px){
  .container,.container-narrow{padding-left:24px;padding-right:24px}
  header.site{position:static}
  .nav{height:auto;min-height:72px;align-items:flex-start;gap:16px;padding:18px 0;flex-direction:column}
  .brand svg{height:34px;max-width:220px}
  .nav ul{display:flex;flex-direction:column;align-items:flex-start;width:100%;gap:10px;flex-wrap:nowrap}
  .nav ul li{width:100%;min-width:0}
  .nav ul a{display:block;width:100%;font-size:15px;line-height:1.5;white-space:normal;word-break:keep-all;overflow-wrap:anywhere}
  .nav ul a::after{display:none}
  .nav > .btn{width:100%;justify-content:space-between}
  .page-hero{padding:64px 0 52px}
  .page-hero h1{font-size:36px;letter-spacing:0;word-break:keep-all;overflow-wrap:anywhere}
  .page-hero .en-sub{font-size:12px;letter-spacing:3px}
  .page-hero .desc{font-size:15px;margin-top:20px}
  .sec-head{grid-template-columns:1fr;gap:22px;margin-bottom:48px;align-items:start}
  .sec-head h2{font-size:32px;letter-spacing:0}
  section.section{padding:72px 0}
  .cta-banner{padding:64px 0}
  .cta-banner .container{display:block}
  .cta-banner h2{font-size:28px;margin-bottom:28px}
  footer.site{padding:56px 0 32px}
  footer.site .top{grid-template-columns:1fr;gap:28px}
  footer.site .brand-block p,
  footer.site ul li,
  footer.site ul a{white-space:normal;word-break:keep-all;overflow-wrap:anywhere}
  table.spec,table.spec tbody,table.spec tr,table.spec th,table.spec td{display:block;width:100%}
  table.spec th{padding:18px 0 4px;border-bottom:0}
  table.spec td{padding:0 0 18px}
  .responsive-grid-4{grid-template-columns:1fr!important}
  .responsive-grid-2{grid-template-columns:1fr!important}
  .flow-steps{grid-template-columns:1fr!important;gap:24px!important}
  .flow-steps > *{border-left:0!important;border-top:1px solid rgba(255,255,255,.24);padding:28px 0 0!important}
}

@media (max-width: 760px){
  .container,.container-narrow{padding-left:18px;padding-right:18px}
  .nav ul a{font-size:14px}
  .page-hero{padding:48px 0 42px}
  .page-hero h1{font-size:30px}
  .page-hero .crumb{font-size:11px;letter-spacing:1px;overflow-wrap:anywhere}
  .sec-head{margin-bottom:36px}
  .sec-head h2{font-size:28px}
  section.section{padding:56px 0}
  .btn{width:100%;justify-content:center}
  .btn-lg{padding:15px 22px}
  .cta-banner h2{font-size:24px}
  footer.site .bottom{display:block}
  footer.site .bottom > * + *{margin-top:10px}
}
