/* ============ NOUL corporate — light theme shared styles ============ */
:root{
  --bg:#f6f7f9; --bg2:#ffffff; --bg3:#eef2f6;
  --ink:#1a2230; --dim:#5c6675; --line:#e3e7ee;
  --teal:#14a08f; --teal-d:#0c8377; --teal-l:#e4f4f2;
  --navy:#16294a; --blue:#7d9fd8; --pink:#e88ca6;
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth;background:var(--bg)}
body{background:var(--bg);color:var(--ink);font-family:'Zen Kaku Gothic New',sans-serif;overflow-x:hidden;animation:pageIn .35s ease both}
@keyframes pageIn{from{opacity:0}to{opacity:1}}
::selection{background:rgba(20,160,143,.25)}
img{max-width:100%}
a{color:inherit}

#fx{position:fixed;inset:0;z-index:1;pointer-events:none}
main{position:relative;z-index:2}

/* ============ header ============ */
header{position:fixed;top:0;left:0;right:0;z-index:20;display:flex;align-items:center;padding:20px 44px;transition:background .5s,padding .5s,box-shadow .5s}
header.scrolled{background:rgba(255,255,255,.85);backdrop-filter:blur(14px);padding:13px 44px;box-shadow:0 1px 0 var(--line),0 10px 30px rgba(22,41,74,.06)}
.logo{display:flex;align-items:center;text-decoration:none}
.logo img{height:26px;display:block}
nav{margin-left:auto;display:flex;gap:30px;align-items:center}
nav a{color:var(--ink);text-decoration:none;font-size:13.5px;font-weight:500;letter-spacing:.12em;opacity:.9;transition:.3s;position:relative}
nav a:not(.cta):after{content:'';position:absolute;left:0;bottom:-6px;height:2px;width:0;background:var(--teal);transition:width .35s}
nav a:not(.cta):hover:after{width:100%}
nav a:hover{opacity:1;color:var(--teal-d)}
nav a.on{color:var(--teal-d)}
nav a.on:after{width:100%}
a.cta{background:var(--teal);color:#fff!important;padding:11px 26px;border-radius:26px;font-weight:700;transition:.35s;box-shadow:0 6px 20px rgba(20,160,143,.3)}
a.cta:hover{background:var(--teal-d);transform:translateY(-2px);box-shadow:0 10px 26px rgba(20,160,143,.4)}
#menuBtn{display:none}

/* ============ hero (index) ============ */
.hero{position:relative;height:100svh;min-height:620px;overflow:hidden;z-index:2}
.hero video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;animation:kenburns 24s ease-in-out infinite alternate}
@keyframes kenburns{from{transform:scale(1)}to{transform:scale(1.08)}}
.hero .tint{position:absolute;inset:0;background:
  linear-gradient(15deg,rgba(13,20,36,.62) 0%,rgba(13,20,36,.28) 42%,rgba(13,20,36,0) 68%),
  linear-gradient(180deg,rgba(13,20,36,.18) 0%,rgba(13,20,36,0) 26%)}
.hero .fadeout{position:absolute;left:0;right:0;bottom:-1px;height:16vh;background:linear-gradient(180deg,rgba(246,247,249,0),var(--bg))}
.hero-copy{position:absolute;left:6vw;bottom:20vh;z-index:8;color:#fff}
.hero-copy .en{font-family:'Manrope';font-weight:600;font-size:13px;letter-spacing:.5em;color:#cfe0f5;margin-bottom:22px;opacity:0;animation:rise 1.2s .4s forwards}
.hero-copy h1{font-family:'Shippori Mincho',serif;font-weight:600;font-size:clamp(30px,4.4vw,60px);line-height:1.6;letter-spacing:.1em;text-shadow:0 4px 40px rgba(0,0,0,.45)}
.hero-copy h1 .line{display:block;overflow:hidden}
.hero-copy h1 .line span{display:inline-block;transform:translateY(110%);animation:reveal 1.1s cubic-bezier(.19,1,.22,1) forwards}
.hero-copy h1 .line:nth-child(2) span{animation-delay:.25s}
.hero-copy .sub{margin-top:24px;font-size:14.5px;letter-spacing:.14em;color:#dbe4f2;opacity:0;animation:rise 1.2s 1.1s forwards}
@keyframes reveal{to{transform:translateY(0)}}
@keyframes rise{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}
.scroll-hint{position:absolute;right:44px;bottom:44px;z-index:8;width:56px;height:56px;border:1.5px solid rgba(255,255,255,.85);border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff;font-family:'Manrope';font-size:9px;letter-spacing:.16em;animation:bob 2.4s ease-in-out infinite;text-decoration:none}
@keyframes bob{0%,100%{transform:translateY(0)}50%{transform:translateY(9px)}}

/* ============ sub-page head ============ */
.phead{position:relative;padding:168px 6vw 74px;overflow:hidden;z-index:2}
.phead .big-en{position:absolute;font-family:'Manrope';font-weight:800;font-size:clamp(60px,12vw,180px);color:rgba(22,41,74,.045);top:80px;left:2vw;white-space:nowrap;user-select:none}
.phead .en{font-family:'Manrope';font-weight:800;font-size:12px;letter-spacing:.5em;color:var(--teal);margin-bottom:16px}
.phead h1{font-family:'Shippori Mincho',serif;font-weight:600;font-size:clamp(28px,4vw,50px);letter-spacing:.1em;line-height:1.5}
.phead p{margin-top:20px;color:var(--dim);font-size:15px;line-height:2.1;letter-spacing:.05em;max-width:680px}
.crumbs{margin-top:28px;font-size:11.5px;letter-spacing:.14em;color:var(--dim)}
.crumbs a{color:var(--teal-d);text-decoration:none}

/* ============ sections ============ */
section{position:relative;padding:110px 6vw;z-index:2}
section.alt{background:var(--bg2)}
section.deep{background:var(--navy);color:#fff}
.wrap{max-width:1140px;margin:0 auto}
.sec-label{font-family:'Manrope';font-weight:800;font-size:12px;letter-spacing:.5em;color:var(--teal);margin-bottom:16px}
.sec-title{font-family:'Shippori Mincho',serif;font-weight:600;font-size:clamp(24px,3.1vw,40px);letter-spacing:.1em;line-height:1.6;margin-bottom:22px}
.sec-note{color:var(--dim);font-size:14.5px;letter-spacing:.05em;line-height:2.1;margin-bottom:44px;max-width:760px}
.deep .sec-note{color:#b9c5da}

/* ============ slide in / out ============ */
.rev,.rev-l,.rev-r{opacity:0;transition:opacity .9s cubic-bezier(.19,1,.22,1),transform .9s cubic-bezier(.19,1,.22,1);will-change:transform}
.rev{transform:translateY(46px)}
.rev-l{transform:translateX(-64px)}
.rev-r{transform:translateX(64px)}
.rev.in,.rev-l.in,.rev-r.in{opacity:1;transform:none}

/* ============ cards / grids ============ */
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:34px}
.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:30px}
.card{background:var(--bg2);border:1px solid var(--line);border-radius:14px;padding:44px 40px;transition:transform .45s,box-shadow .45s,border-color .45s;position:relative;overflow:hidden}
.card:hover{transform:translateY(-6px);box-shadow:0 24px 50px rgba(22,41,74,.10);border-color:rgba(20,160,143,.45)}
.card .num{font-family:'Manrope';font-weight:300;font-size:15px;letter-spacing:.3em;color:var(--teal);margin-bottom:16px}
.card h3{font-family:'Shippori Mincho',serif;font-size:20px;letter-spacing:.08em;line-height:1.7;margin-bottom:14px}
.card p{color:var(--dim);font-size:14px;line-height:2.05;letter-spacing:.04em}
.card b{color:var(--teal-d);font-weight:700}
.tagline{display:inline-block;background:var(--teal-l);color:var(--teal-d);font-size:12px;font-weight:700;letter-spacing:.1em;border-radius:6px;padding:7px 14px;margin-bottom:18px}

/* link card (index overview) */
.navcard{display:flex;flex-direction:column;background:var(--bg2);border:1px solid var(--line);border-radius:14px;padding:40px 36px;text-decoration:none;color:var(--ink);position:relative;overflow:hidden;transition:transform .45s,box-shadow .45s,border-color .45s}
.navcard:before{content:'';position:absolute;left:0;top:0;bottom:0;width:4px;background:linear-gradient(180deg,var(--teal),var(--blue));transform:scaleY(0);transform-origin:top;transition:transform .5s cubic-bezier(.77,0,.18,1)}
.navcard:hover{transform:translateY(-6px);box-shadow:0 24px 50px rgba(22,41,74,.12);border-color:rgba(20,160,143,.5)}
.navcard:hover:before{transform:scaleY(1)}
.navcard .en{font-family:'Manrope';font-weight:800;font-size:11px;letter-spacing:.35em;color:var(--teal);margin-bottom:14px}
.navcard h3{font-family:'Shippori Mincho',serif;font-size:21px;letter-spacing:.1em;margin-bottom:12px}
.navcard p{color:var(--dim);font-size:13.5px;line-height:1.95;letter-spacing:.04em}
.navcard .go{margin-top:auto;padding-top:22px;font-family:'Manrope';font-weight:700;font-size:12px;letter-spacing:.22em;color:var(--teal-d);display:flex;align-items:center;gap:10px}
.navcard .go i{font-style:normal;transition:transform .35s cubic-bezier(.3,1.6,.5,1)}
.navcard:hover .go i{transform:translateX(8px)}

/* ============ buttons ============ */
.btn{display:inline-block;position:relative;overflow:hidden;font-weight:700;font-size:15.5px;letter-spacing:.18em;color:#fff;background:linear-gradient(90deg,var(--teal),#2bb9a9);padding:19px 58px;border-radius:40px;text-decoration:none;border:none;cursor:pointer;font-family:'Zen Kaku Gothic New';transition:.4s;box-shadow:0 10px 34px rgba(20,160,143,.35)}
.btn:hover{transform:translateY(-3px);box-shadow:0 16px 44px rgba(20,160,143,.5)}
.btn:after{content:'';position:absolute;top:0;left:-70%;width:45%;height:100%;background:linear-gradient(105deg,transparent,rgba(255,255,255,.55),transparent);transform:skewX(-20deg);animation:shine 3.6s ease-in-out infinite}
@keyframes shine{0%,55%{left:-70%}90%,100%{left:140%}}
.btn-line{display:inline-block;font-weight:700;font-size:14px;letter-spacing:.16em;color:var(--teal-d);border:2px solid var(--teal);padding:15px 44px;border-radius:36px;text-decoration:none;transition:.35s}
.btn-line:hover{background:var(--teal);color:#fff}

/* ============ CTA band ============ */
.ctaband{background:linear-gradient(115deg,var(--navy) 0%,#1d3a66 60%,#14508f 100%);color:#fff;text-align:center;padding:110px 6vw;position:relative;overflow:hidden;z-index:2}
.ctaband .sec-label{color:#7fd6cb}
.ctaband .sec-title{color:#fff}
.ctaband p{color:#b9c5da;font-size:14.5px;line-height:2.1;letter-spacing:.06em;margin-bottom:42px}

/* ============ table ============ */
table.co{width:100%;border-collapse:collapse}
table.co th,table.co td{text-align:left;padding:22px 10px;border-bottom:1px solid var(--line);font-size:14.5px;letter-spacing:.05em;vertical-align:top}
table.co th{color:var(--teal-d);font-weight:700;width:190px;white-space:nowrap}
table.co td{color:var(--ink);line-height:1.9}

/* ============ footer ============ */
footer{background:var(--navy);color:#fff;padding:64px 6vw 40px;position:relative;z-index:2}
.f-in{max-width:1140px;margin:0 auto;display:flex;flex-wrap:wrap;gap:40px;align-items:flex-start}
footer .logo img{height:24px;filter:invert(1)}
.f-nav{margin-left:auto;display:flex;gap:28px;flex-wrap:wrap}
.f-nav a{color:#c3cde0;text-decoration:none;font-size:12.5px;letter-spacing:.12em;transition:color .3s}
.f-nav a:hover{color:#fff}
.f-btm{max-width:1140px;margin:44px auto 0;padding-top:22px;border-top:1px solid rgba(255,255,255,.14);display:flex;flex-wrap:wrap;gap:12px;color:#8fa0bd;font-family:'Manrope';font-size:11px;letter-spacing:.15em}
.f-btm small{margin-left:auto}

/* ============ page transition / toTop ============ */
#ptrans{position:fixed;inset:0;z-index:96;pointer-events:none;background:linear-gradient(115deg,var(--navy) 0%,#1d3a66 55%,var(--teal-d) 130%);transform:translateX(-102%);transition:transform .55s cubic-bezier(.77,0,.18,1)}
#ptrans.cover{transform:translateX(0)}
#ptrans .pt-mark{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .3s .15s}
#ptrans.cover .pt-mark{opacity:1}
#ptrans .pt-mark img{height:34px;filter:invert(1)}
.toTop{position:fixed;right:22px;bottom:22px;z-index:40;width:48px;height:48px;border-radius:50%;border:1.5px solid var(--line);background:rgba(255,255,255,.9);backdrop-filter:blur(8px);color:var(--teal-d);font-size:18px;display:flex;align-items:center;justify-content:center;cursor:pointer;opacity:0;pointer-events:none;transform:translateY(14px);transition:.4s;box-shadow:0 8px 24px rgba(22,41,74,.12)}
.toTop.show{opacity:1;pointer-events:auto;transform:none}
.toTop:hover{background:var(--teal);color:#fff;border-color:var(--teal)}

/* ============ forms ============ */
.form{max-width:680px;margin:0 auto}
.fld{margin-bottom:26px}
.fld label{display:block;font-size:13.5px;font-weight:700;letter-spacing:.08em;margin-bottom:10px}
.fld label i{font-style:normal;color:#fff;background:var(--teal);font-size:10px;border-radius:4px;padding:3px 8px;margin-left:10px;letter-spacing:.1em;vertical-align:2px}
.fld input,.fld textarea{width:100%;border:1.5px solid var(--line);border-radius:10px;background:#fff;padding:15px 18px;font-size:15px;font-family:'Zen Kaku Gothic New';color:var(--ink);transition:border-color .3s,box-shadow .3s;outline:none}
.fld input:focus,.fld textarea:focus{border-color:var(--teal);box-shadow:0 0 0 4px rgba(20,160,143,.12)}
.fld textarea{min-height:170px;resize:vertical}

@media(min-width:881px) and (max-width:1180px){
  nav{gap:18px}
  nav a{font-size:12px;letter-spacing:.08em}
  a.cta{padding:10px 18px}
  header{padding:18px 28px}
  header.scrolled{padding:12px 28px}
}
@media(max-width:880px){
  header{padding:16px 20px}
  header.scrolled{padding:12px 20px}
  .logo img{height:21px}
  nav{display:none}
  #menuBtn{display:block;position:relative;z-index:31;margin-left:auto;background:none;border:none;color:var(--ink);font-family:'Manrope';font-weight:700;letter-spacing:.25em;font-size:12px;cursor:pointer;padding:8px 4px}
  /* メニュー展開時はヘッダーのblurを外す（iOSでfixedの基準がヘッダーになり背景が透ける問題の対策） */
  header.menu-open{background:#fff!important;backdrop-filter:none!important;box-shadow:none!important}
  header.menu-open .logo img{filter:none!important}
  header.menu-open #menuBtn{color:var(--ink)!important}
  header.menu-open .logo{position:relative;z-index:31}
  body.menu-open{overflow:hidden}
  nav.open{display:flex;position:fixed;inset:0;background:#fff;flex-direction:column;align-items:center;justify-content:center;gap:6px;z-index:30;padding:90px 24px 40px;animation:menuIn .3s ease}
  @keyframes menuIn{from{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:none}}
  nav.open a{font-size:16px;letter-spacing:.14em;color:var(--ink)!important;text-shadow:none!important;width:min(340px,86vw);text-align:center;padding:16px 0;border-radius:12px;opacity:1}
  nav.open a:not(.cta):after{display:none}
  nav.open a:not(.cta):active{background:var(--teal-l)}
  nav.open a.cta{margin-top:22px;color:#fff!important;padding:16px 0}
  .hero{min-height:560px}
  .hero-copy{left:22px;right:22px;bottom:18vh}
  .hero-copy h1{font-size:clamp(25px,7.4vw,40px)}
  .scroll-hint{right:20px;bottom:26px;width:46px;height:46px}
  .phead{padding:128px 22px 52px}
  section{padding:78px 22px}
  .sec-title{font-size:clamp(21px,6vw,30px)}
  .grid2,.grid3{grid-template-columns:1fr;gap:20px}
  .card{padding:32px 26px}
  .navcard{padding:32px 26px}
  table.co th{width:110px;font-size:13px}
  table.co th,table.co td{padding:16px 6px;font-size:13.5px}
  .btn{font-size:14px;padding:16px 42px}
  .toTop{right:14px;bottom:16px;width:44px;height:44px}
}
@media(prefers-reduced-motion:reduce){
  *,*:before,*:after{animation-duration:.01s!important;transition-duration:.01s!important}
}

/* ============ column ============ */
.colgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:28px}
.colcard{display:flex;flex-direction:column;background:var(--bg2);border:1px solid var(--line);border-radius:14px;overflow:hidden;text-decoration:none;color:var(--ink);transition:transform .45s,box-shadow .45s,border-color .45s}
.colcard:hover{transform:translateY(-6px);box-shadow:0 24px 50px rgba(22,41,74,.12);border-color:rgba(20,160,143,.5)}
.colcard .eyecatch{aspect-ratio:16/9;overflow:hidden;background:var(--bg3)}
.colcard .eyecatch img{width:100%;height:100%;object-fit:cover;transition:transform .8s cubic-bezier(.19,1,.22,1)}
.colcard:hover .eyecatch img{transform:scale(1.06)}
.colcard .body{padding:24px 26px 28px;display:flex;flex-direction:column;flex:1}
.colmeta{display:flex;align-items:center;gap:12px;margin-bottom:12px}
.colcat{background:var(--teal-l);color:var(--teal-d);font-size:11px;font-weight:700;letter-spacing:.1em;border-radius:5px;padding:5px 12px}
.coldate{font-family:'Manrope';font-size:11px;letter-spacing:.12em;color:var(--dim)}
.colcard h3{font-size:16.5px;letter-spacing:.04em;line-height:1.8;margin-bottom:10px;font-weight:700}
.colcard p{color:var(--dim);font-size:13px;line-height:1.95;letter-spacing:.03em}
.colcard .go{margin-top:auto;padding-top:18px;font-family:'Manrope';font-weight:700;font-size:11px;letter-spacing:.22em;color:var(--teal-d);display:flex;align-items:center;gap:8px}
.colcard .go i{font-style:normal;transition:transform .35s cubic-bezier(.3,1.6,.5,1)}
.colcard:hover .go i{transform:translateX(7px)}

/* ============ article ============ */
.article{max-width:780px;margin:0 auto}
.article .eyecatch{border-radius:16px;overflow:hidden;margin-bottom:40px;box-shadow:0 24px 60px rgba(22,41,74,.12)}
.article .eyecatch img{width:100%;display:block}
.prose h2{font-family:'Shippori Mincho',serif;font-weight:600;font-size:clamp(19px,2.3vw,26px);letter-spacing:.06em;line-height:1.7;margin:56px 0 22px;padding-left:18px;border-left:4px solid var(--teal)}
.prose h3{font-size:17px;font-weight:700;letter-spacing:.05em;margin:36px 0 14px;color:var(--navy)}
.prose p{color:#3d4655;font-size:15px;line-height:2.3;letter-spacing:.04em;margin-bottom:22px}
.prose ul{margin:0 0 22px 4px;display:grid;gap:10px}
.prose ul li{list-style:none;position:relative;padding-left:24px;color:#3d4655;font-size:14.5px;line-height:2}
.prose ul li:before{content:'';position:absolute;left:2px;top:12px;width:9px;height:9px;border-radius:3px;background:linear-gradient(135deg,var(--teal),var(--blue))}
.prose b{color:var(--teal-d)}
.pointbox{background:var(--teal-l);border-left:4px solid var(--teal);border-radius:0 12px 12px 0;padding:26px 30px;margin:34px 0}
.pointbox h4{font-family:'Manrope';font-weight:800;font-size:12px;letter-spacing:.35em;color:var(--teal-d);margin-bottom:12px}
.pointbox p{color:var(--navy);font-size:14.5px;line-height:2.1;letter-spacing:.04em;margin:0}
.art-nav{display:flex;justify-content:space-between;gap:16px;margin-top:70px;padding-top:34px;border-top:1px solid var(--line)}
.art-nav a{text-decoration:none;color:var(--teal-d);font-size:13.5px;font-weight:700;letter-spacing:.08em;display:flex;align-items:center;gap:10px;transition:opacity .3s}
.art-nav a:hover{opacity:.7}
.art-nav .center{color:var(--dim);font-weight:500}
@media(max-width:880px){
  .colgrid{grid-template-columns:1fr;gap:20px}
  .prose h2{margin:44px 0 18px}
}
