/* 京都の静けさと経営の明快さを、ゴシック体・余白・罫線で表す。 */
/* 色の実値はこのトークンに集約し、各部品から用途に応じて参照する。 */
:root{
  color-scheme:light;
  --brand-green:#4EAA6E;
  --brand-navy:#1A3060;
  --brand-teal:#1BA8C8;
  --surface:#f4fbf7;
  --surface-low:#eef5f1;
  --ink:#161D1B;
  --paper:#fff;
  --ghost-border:rgba(78,170,110,.15);
  --error:#BA1A1A;
  --brand-hover:#006d39;
  --hero-ground:#e8f2e8;
  --heading:var(--brand-navy);
  --action:var(--brand-hover);
  --action-hover:var(--brand-navy);
  --action-active:var(--ink);
  --focus:var(--brand-navy);
  --field-border:color-mix(in srgb,var(--brand-navy) 60%,var(--paper));
  --disabled-bg:var(--surface-low);
  --disabled-text:var(--brand-navy);
  --font-body:'BIZ UDPGothic','Yu Gothic',Meiryo,sans-serif;
  --font-display:var(--font-body);
  --text-small:.875rem;
  --text-body:1rem;
  --text-lead:1.125rem;
  --text-h1:clamp(2.5rem,4.4vw,4.5rem);
  --text-h2:clamp(1.875rem,2.8vw,3rem);
  --text-h3:clamp(1.125rem,1.4vw,1.375rem);
  --leading-body:1.9;
  --leading-heading:1.4;
  --space-1:4px;
  --space-2:8px;
  --space-3:12px;
  --space-4:16px;
  --space-5:24px;
  --space-6:32px;
  --space-7:48px;
  --space-8:64px;
  --space-9:96px;
  --section-space:clamp(80px,8vw,120px);
  --page-gutter:clamp(20px,4vw,56px);
  --content-width:1200px;
  --reading-width:704px;
  --radius:2px;
  --border:1px solid var(--ghost-border);
  --focus-width:3px;
  --control-height:56px;
  --motion-duration:180ms;
  --motion-easing:ease-out;
}

/* A案のBIZ UDPGothicを共通の本文・見出しに使う。 */
*{box-sizing:border-box}
html{scroll-padding-top:32px}
body{margin:0;background:var(--paper);color:var(--ink);font:400 var(--text-body)/var(--leading-body) var(--font-body);-webkit-font-smoothing:antialiased}
h1,h2,h3,h4,p,figure{margin:0}
h1,h2,h3,h4{color:var(--heading);line-height:var(--leading-heading);overflow-wrap:anywhere;text-wrap:pretty}
h1,h2{font-family:var(--font-display);font-weight:700;letter-spacing:.02em;text-wrap:balance}
h1{font-size:var(--text-h1)}
h2{font-size:var(--text-h2)}
h3,h4{font-weight:700;letter-spacing:.015em}
h3{font-size:var(--text-h3)}
p,li,dd,a{overflow-wrap:anywhere}
p,li,dd{line-height:var(--leading-body)}
a{color:inherit;text-underline-offset:5px}
a:hover{color:var(--link-hover,var(--action))}
img{display:block;max-width:100%;height:auto}
button,input,textarea,select{font:inherit}
button,a,input,textarea,summary,select{touch-action:manipulation}
button{cursor:pointer}
button:disabled{cursor:default}
a:focus-visible,button:focus-visible,summary:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible,[tabindex]:focus-visible{outline:var(--focus-width) solid var(--focus);outline-offset:4px}
input,textarea{scroll-margin-block:32px}
[hidden]{display:none!important}
fieldset{border:0;padding:0;margin:0;min-width:0}

.wrap{width:calc(100% - var(--page-gutter)*2);max-width:var(--content-width);margin-inline:auto}
.narrow{max-width:var(--reading-width);margin-inline:auto}
.section{padding-block:var(--section-space)}
.split{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:clamp(40px,7vw,112px);align-items:start}
.split>*{min-width:0}
.stack>*+*,.prose>*+*{margin-top:var(--space-5)}
.section h2{max-width:19em}
.section>.wrap>h2+p,.section>.narrow>h2+p{margin-top:var(--space-5)}
.section>.wrap>h2+.rows,.section>.wrap>h2+.timeline{margin-top:var(--space-7)}
.lead{font-size:var(--text-lead);line-height:2}
.eyebrow{display:flex;align-items:center;gap:var(--space-3);font-family:var(--font-body);font-size:var(--text-small);font-weight:700;letter-spacing:.09em;color:var(--heading);margin-bottom:var(--space-5)}
.eyebrow::before{content:'';display:block;flex:none;width:28px;height:1px;background:var(--brand-green)}
.number{font-size:var(--text-small);font-weight:700;letter-spacing:.05em;color:var(--action)}
.tag{display:inline-block;vertical-align:middle;background:var(--surface-low);color:var(--heading);padding:5px 10px;border-radius:var(--radius);font-family:var(--font-body);font-size:var(--text-small);font-weight:400;letter-spacing:.02em;line-height:1.6}
.muted{font-size:var(--text-small)}

/* 操作は動かさず、形と色の変化で伝える。 */
.button{display:inline-flex;align-items:center;justify-content:space-between;gap:var(--space-7);min-height:56px;padding:14px 28px;border:1px solid transparent;border-radius:var(--radius);font-weight:700;font-size:.9375rem;line-height:1.6;text-decoration:none;background:var(--action);color:var(--paper);transition:background var(--motion-duration) var(--motion-easing)}
.button::after{content:'→';flex:none}
.button:hover,.button.is-hover{background:var(--action-hover);color:var(--paper)}
.button:active,.button.is-active{background:var(--action-active)}
.button:disabled{background:var(--disabled-bg);color:var(--disabled-text);border-color:var(--field-border)}
.button.secondary{background:var(--paper);color:var(--heading);border-color:var(--heading)}
.button.secondary:hover{background:var(--surface-low)}
.text-link{display:inline-flex;align-items:center;gap:var(--space-5);min-height:44px;max-width:100%;font-size:.9375rem;font-weight:700;line-height:1.7;text-decoration:none;border-bottom:1px solid currentColor;transition:color var(--motion-duration) var(--motion-easing)}
.text-link>span[aria-hidden]{flex:none}
.actions{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-5);margin-top:var(--space-6)}
.notice{padding:22px 28px;border-left:2px solid var(--brand-green);background:var(--surface);font-size:var(--text-small);line-height:1.9}
.notice a{font-weight:700}
.skip-link{position:fixed;left:16px;top:8px;transform:translateY(-160%);clip-path:inset(50%);z-index:20;background:var(--paper);padding:var(--space-3)}
.skip-link:focus{transform:none;clip-path:none}

/* 共通ヘッダーは既存の1280px境界でナビゲーションと揃える。 */
.site-header{display:flex;justify-content:space-between;align-items:center;min-height:92px;gap:var(--space-5);position:relative;z-index:5;border-bottom:var(--border)}
.brand{flex:none;width:168px}
.desktop-nav{display:flex;flex-wrap:wrap;min-width:0;gap:22px;align-items:center;font-size:var(--text-small);font-weight:700}
.desktop-nav a{display:inline-flex;align-items:center;min-height:44px;text-decoration:none;white-space:nowrap}
.desktop-nav a[aria-current],.site-menu nav a[aria-current]{text-decoration:underline;text-decoration-color:var(--brand-green);text-decoration-thickness:2px;text-underline-offset:7px}
.desktop-nav .nav-contact{min-height:48px;padding:10px 18px;border:0;border-radius:var(--radius);background:var(--brand-navy);color:var(--paper);transition:background var(--motion-duration) var(--motion-easing)}
.desktop-nav .nav-contact:hover{background:var(--brand-hover);color:var(--paper)}
.desktop-nav .nav-contact[aria-current]{text-decoration:none}
.site-menu{display:none}
.site-footer{background:var(--surface-low);padding-block:72px 32px;border-top:var(--border)}
.site-footer img{width:168px;margin-bottom:var(--space-5)}
.footer-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.2fr);gap:var(--space-7)}
.site-footer p{font-size:var(--text-small);line-height:1.9}
.site-footer nav{display:flex;flex-wrap:wrap;align-content:start;gap:8px 32px}
.site-footer nav a{display:inline-flex;align-items:center;min-height:44px;font-size:var(--text-small);text-decoration:none}
.site-footer nav a:hover{text-decoration:underline}
.site-footer small{display:block;margin-top:var(--space-8);padding-top:24px;border-top:var(--border);font-size:var(--text-small);letter-spacing:.04em}

/* ページの入口で、見出しと説明を左右の余白に分ける。 */
.breadcrumb{padding-block:20px;font-size:var(--text-small);line-height:1.8;color:var(--brand-navy)}
.breadcrumb ol{display:flex;gap:var(--space-3);flex-wrap:wrap;list-style:none;padding:0;margin:0}
.breadcrumb li+li::before{content:'/';margin-right:var(--space-3);color:var(--action)}
.breadcrumb a{text-decoration:none}
.page-heading{background:var(--paper);padding-block:clamp(56px,6.2vw,96px) clamp(72px,7.5vw,112px);border-bottom:var(--border)}
.page-heading .wrap{display:grid;grid-template-columns:minmax(0,1.12fr) minmax(0,.88fr);column-gap:clamp(48px,6.5vw,96px);align-items:end}
.page-heading .eyebrow{grid-column:1/-1;margin:0 0 32px}
.page-heading h1{max-width:13em;line-height:1.4;text-wrap:balance}
.page-heading p{max-width:40em}
.page-heading .lead{font-size:clamp(1rem,1.15vw,1.125rem);line-height:2.1;margin:0}
.page-toc{display:flex;flex-wrap:wrap;gap:8px 28px;padding-block:22px;border-bottom:var(--border);margin-bottom:0;font-size:var(--text-small)}
.page-toc a{display:inline-flex;align-items:center;min-height:44px;text-decoration:none}
.page-toc a:hover{text-decoration:underline}
.related{background:var(--surface);border-top:var(--border);padding:32px;margin-top:var(--space-7)}
.related h2{font-family:var(--font-body);font-weight:700;font-size:1.375rem}
.related .text-link{margin-right:24px}
.rows{border-top:var(--border)}
.row{padding-block:32px;border-bottom:var(--border)}
.row p{margin-top:var(--space-3);max-width:42em}
.row h3{margin-top:var(--space-2)}
.row .text-link{margin-top:var(--space-4)}
.method-list{list-style:none;padding:0;margin:var(--space-6) 0 0}
.method-list li{display:grid;grid-template-columns:40px minmax(0,1fr);gap:var(--space-4);padding-block:var(--space-5);border-top:var(--border)}
.method-list h3{margin-bottom:var(--space-2)}
.case-row{display:grid;grid-template-columns:90px minmax(0,1fr);gap:32px;padding-block:48px;border-bottom:var(--border)}
.case-row>.number{font-family:var(--font-display);font-size:clamp(2.5rem,3.5vw,4rem);font-weight:400;line-height:1.1;color:var(--brand-hover)}
.case-row h2,.case-row h3{font-family:var(--font-display);font-weight:700;font-size:clamp(1.5rem,2.1vw,2.25rem);line-height:1.6;margin-block:12px 20px}
.case-row p{max-width:46em}
.case-row .text-link{margin-top:var(--space-3)}
.case-row .eyebrow{margin-bottom:0}
.case-row .eyebrow::before{display:none}
/* 事例の成果を、本文を読む前に把握できるようにする。 */
.case-highlights{list-style:none;padding:0;margin:0;border-top:var(--border)}
.case-highlights li{padding-block:var(--space-5);border-bottom:var(--border);font-weight:700;color:var(--heading)}
.facts{margin:0;border-top:var(--border)}
.facts>div{display:grid;grid-template-columns:136px minmax(0,1fr);gap:var(--space-5);border-bottom:var(--border);padding-block:24px}
.facts dt{font-size:var(--text-small);font-weight:700;color:var(--heading)}
.facts dd{margin:0}
.facts dd p+p{margin-top:var(--space-3)}
.timeline{border-left:1px solid var(--ghost-border);padding-left:var(--space-6);list-style:none;margin-top:var(--space-7)}
.timeline>li{margin-bottom:var(--space-6)}
.timeline time{font-weight:700;color:var(--heading)}
.timeline .row:first-child{padding-top:0}
.timeline .row:last-child{border-bottom:0}

/* 長文は目次・節・本文のリズムで読み進められるようにする。 */
.prose{max-width:var(--reading-width)}
.prose h2{font-family:var(--font-body);font-weight:700;font-size:clamp(1.375rem,1.8vw,1.75rem);line-height:1.7;margin-top:var(--space-8)}
.prose h3{margin-top:var(--space-6)}
.prose ul{padding-left:1.5em}
.prose details{border-bottom:var(--border);padding-block:var(--space-5)}
summary{cursor:pointer;min-height:44px;font-weight:700;color:var(--heading)}
details>p{margin-top:var(--space-4)}
.prose table,.policy-table{width:100%;border-collapse:collapse}
.prose th,.prose td,.policy-table th,.policy-table td{text-align:left;vertical-align:top;padding:var(--space-4);border:var(--border);overflow-wrap:anywhere}
.prose th,.policy-table th{background:var(--surface)}
.table-scroll{max-width:100%;overflow:auto}
.table-scroll:focus-visible{outline:var(--focus-width) solid var(--focus)}
.policy-table:has(tr:first-child th:nth-child(5)){min-width:900px;table-layout:fixed}
.policy-table:has(tr:first-child th:nth-child(5)) th:first-child{width:14%}
.stack>.text-link+.text-link{margin-left:var(--space-4)}
.keep-phrase{display:inline-block;max-width:100%}

/* 相談フォームでは、短い案内と大きな入力欄に重心を置く。 */
[data-page='contact'] .page-heading h1{font-size:clamp(1.75rem,3.3vw,3.625rem)}
.contact-layout{grid-template-columns:minmax(0,.72fr) minmax(0,1.28fr);gap:clamp(48px,6.5vw,96px)}
.contact-layout>aside{position:sticky;top:32px}
.contact-layout h2{font-size:clamp(1.875rem,2.3vw,2.5rem)}
.field{margin-bottom:var(--space-5)}
.field label{display:block;font-weight:700;color:var(--heading);margin-bottom:var(--space-2)}
.required{font-size:var(--text-small);color:var(--error);margin-left:var(--space-3)}
input:not([type=checkbox]),textarea,select{width:100%;max-width:100%;min-height:var(--control-height);border:1px solid var(--field-border);border-radius:var(--radius);padding:14px 16px;color:var(--ink);background:var(--paper)}
textarea{resize:vertical}
input[type=checkbox]{width:24px;height:24px;accent-color:var(--action);flex:none}
.check-row,.field .check-row{display:flex;align-items:center;gap:var(--space-3);min-height:44px}
.field-error{color:var(--error);font-size:var(--text-small);margin-top:var(--space-2)}
[aria-invalid=true]{border:2px solid var(--error)!important}
.error-summary{border:2px solid var(--error);padding:var(--space-5);margin-bottom:var(--space-6)}
.error-summary h2{font-family:var(--font-body);font-weight:700;font-size:1.25rem;color:var(--error)}
.status-panel{border-top:3px solid var(--action);background:var(--surface);padding:var(--space-6);margin-bottom:var(--space-6)}
.error-number{font-family:var(--font-display);font-size:5rem;color:var(--action);line-height:1}
.contact-form-panel .yf-card{padding:clamp(24px,3.5vw,48px);background:var(--surface);border:var(--border)}
.contact-form-panel .yf-input,.contact-form-panel .yf-textarea{padding:14px 16px;border-radius:var(--radius)}
.contact-form-panel .yf-field{margin-bottom:28px}
.contact-form-panel .yf-label{font-size:.9375rem}
.contact-form-panel .yf-required{font-size:var(--text-small)}
.contact-form-panel .yf-privacy-box{background:var(--paper);padding:20px;font-size:var(--text-small)}
.contact-form-panel .yf-submit{min-height:56px;border-radius:var(--radius);padding-inline:32px;font-size:.9375rem}

/* 内容別の強弱：サービス、人物、事例、開催履歴。 */
#profitability,#organization,#succession{scroll-margin-top:32px}
#organization{background:var(--surface)}
#profitability .split>div:first-child,#organization .split>div:first-child,#succession .split>div:first-child{position:sticky;top:32px}
#profitability h2,#organization h2,#succession h2{font-size:clamp(2rem,3vw,3.25rem)}
#process{background:var(--brand-navy);color:var(--paper);--link-hover:var(--paper);--focus:var(--paper)}
#process h2,#process h3,#process .eyebrow{color:var(--paper)}
#process .rows,#process .row,#process .timeline{border-color:color-mix(in srgb,var(--paper) 25%,transparent)}
#process .number{color:var(--paper)}
#process .related{background:color-mix(in srgb,var(--paper) 8%,transparent);color:var(--paper);border-color:color-mix(in srgb,var(--paper) 25%,transparent)}
#process .related a{color:var(--paper)}
[data-page='services'] #process .rows{margin-top:var(--space-7)}
[data-page='services'] #process .row{display:grid;grid-template-columns:64px minmax(0,1fr);column-gap:24px}
[data-page='services'] #process .row .number{grid-row:1/3;padding-top:5px}
[data-page='services'] #process .row h3,[data-page='services'] #process .row p{grid-column:2}
[data-page='services'] #process .row h3{margin-top:0}
[data-page='services'] #faq h3{font-size:1.125rem}
[data-page='company'] main>.section:nth-of-type(3){background:var(--surface)}
[data-page='company'] .split figure img{width:100%;aspect-ratio:679/451;object-fit:cover}
[data-page='company'] .split figure figcaption,[data-page='ishii_norio'] .split figure figcaption{font-size:var(--text-small);color:var(--heading);margin-top:12px}
[data-page='ishii_norio'] main>.section:nth-of-type(2) .split{grid-template-columns:minmax(0,1.12fr) minmax(0,.88fr);gap:clamp(56px,7vw,112px)}
[data-page='ishii_norio'] .split figure{max-width:460px;justify-self:end}
[data-page='ishii_norio'] .split figure img{width:100%}
[data-page='ishii_norio'] main>.section:nth-of-type(3){background:var(--surface)}
[data-page='cases'] .notice+.split{margin-top:var(--space-8)}
[data-page^='case-'] .page-heading h1{font-size:clamp(2.25rem,3.3vw,3.625rem)}
[data-page^='case-'] .section>.narrow>h2{margin-bottom:var(--space-6)}
[data-page^='case-'] .section>.narrow>h3{margin-top:var(--space-7);margin-bottom:var(--space-4)}
[data-page='seminars'] [id^='year-']{padding-block:64px}
[data-page='seminars'] [id^='year-']>.wrap{display:grid;grid-template-columns:190px minmax(0,1fr);gap:clamp(40px,6vw,96px);align-items:start}
[data-page='seminars'] [id^='year-'] h2{position:sticky;top:32px;font-size:clamp(2rem,2.4vw,2.5rem)}
[data-page='seminars'] [id^='year-'] h2 .tag{display:block;width:fit-content;margin-top:14px}
[data-page='seminars'] [id^='year-'] .rows{margin-top:0}
[data-page='seminars'] [id^='year-'] .row{padding-block:30px}
[data-page='seminars'] [id^='year-'] time{display:block;font-size:var(--text-small);line-height:1.9;color:var(--heading)}
[data-page='seminars'] [id^='year-'] h3{max-width:40em;font-size:clamp(1.0625rem,1.4vw,1.25rem);line-height:1.7;margin-top:14px}
[data-page='seminars'] [id^='year-'] .row p{font-size:1rem;max-width:42em}
[data-page='seminars'] [id^='year-'] .text-link{font-size:var(--text-small)}
[data-page='policy'] .prose h2{padding-top:var(--space-6);border-top:var(--border);scroll-margin-top:32px}
[data-page='policy'] .prose h2:first-child{margin-top:0}

@media(max-width:1279px){
  .desktop-nav{display:none}
  .site-menu{display:block;position:relative}
  .site-menu summary{display:flex;gap:14px;align-items:center;list-style:none;font-size:.9375rem}
  .site-menu summary::-webkit-details-marker{display:none}
  .site-menu summary span{font-size:1.25rem;font-weight:400}
  .site-menu nav{position:absolute;right:0;top:56px;background:var(--paper);border:var(--border);width:320px;max-width:calc(100vw - var(--page-gutter)*2);padding:16px 24px;box-shadow:0 16px 40px color-mix(in srgb,var(--brand-navy) 9%,transparent)}
  .site-menu nav a{display:block;padding-block:14px;border-bottom:var(--border);text-decoration:none;font-size:.9375rem}
  .site-menu nav a:last-child{border-bottom:0}
  .site-menu nav .nav-contact{margin-top:12px;background:var(--brand-navy);color:var(--paper);padding-inline:16px;border-radius:var(--radius)}
}
@media(max-width:899px){
  .split,.contact-layout,[data-page='ishii_norio'] main>.section:nth-of-type(2) .split{grid-template-columns:1fr;gap:40px}
  .page-heading .wrap{grid-template-columns:1fr;align-items:start}
  .page-heading .eyebrow{margin-bottom:24px}
  .page-heading .lead{max-width:43em;margin-top:32px}
  .footer-grid{grid-template-columns:1fr;gap:40px}
  #profitability .split>div:first-child,#organization .split>div:first-child,#succession .split>div:first-child,.contact-layout>aside{position:static}
  [data-page='ishii_norio'] .split figure{justify-self:start;width:min(100%,460px)}
  [data-page='seminars'] [id^='year-']>.wrap{grid-template-columns:136px minmax(0,1fr);gap:32px}
}
@media(max-width:599px){
  :root{--section-space:72px;--text-h1:clamp(2rem,8.5vw,2.75rem);--text-h2:clamp(1.75rem,7vw,2.125rem)}
  .site-header{min-height:80px}
  .brand{width:148px}
  .site-menu summary{gap:10px}
  .page-heading{padding-block:44px 64px}
  .page-heading h1{line-height:1.5}
  .page-heading .lead{margin-top:24px;font-size:1rem;line-height:1.9}
  .eyebrow{font-size:var(--text-small);margin-bottom:20px}
  .page-toc{gap:4px 20px;padding-block:16px;font-size:var(--text-small)}
  .split,.contact-layout{gap:36px}
  .lead{font-size:1.0625rem}
  .button{padding-inline:20px;gap:28px;max-width:100%}
  .text-link{gap:16px;font-size:var(--text-small)}
  .notice{padding:18px 20px;font-size:var(--text-small)}
  .related{padding:24px}
  .case-row{grid-template-columns:1fr;gap:12px;padding-block:36px}
  .case-row>.number{font-size:2.5rem}
  .case-row h2,.case-row h3{font-size:1.5rem;margin-top:8px}
  .facts>div{grid-template-columns:1fr;gap:8px;padding-block:20px}
  .timeline{padding-left:20px}
  .prose th,.prose td,.policy-table th,.policy-table td{padding:var(--space-3);font-size:var(--text-small)}
  .stack>.text-link+.text-link{margin-left:0}
  .site-footer{padding-block:56px 28px}
  .site-footer nav{display:grid;grid-template-columns:1fr 1fr;gap:8px 16px}
  .site-footer nav a{font-size:var(--text-small)}
  .site-footer small{margin-top:40px}
  .contact-form-panel .yf-card{padding:22px 18px}
  .contact-form-panel .yf-privacy-box{padding:16px}
  .contact-form-panel .yf-submit{width:100%}
  [data-page='services'] #process .row{grid-template-columns:32px minmax(0,1fr);column-gap:14px}
  [data-page^='case-'] .page-heading h1{font-size:clamp(1.75rem,7.5vw,2.25rem)}
  [data-page='seminars'] [id^='year-']{padding-block:44px}
  [data-page='seminars'] [id^='year-']>.wrap{grid-template-columns:1fr;gap:24px}
  [data-page='seminars'] [id^='year-'] h2{position:static;display:flex;align-items:center;gap:16px}
  [data-page='seminars'] [id^='year-'] h2 .tag{margin-top:0}
}
@media(prefers-reduced-motion:reduce){
  :root{--motion-duration:0ms}
  .button,.text-link,.desktop-nav .nav-contact{transition:none}
}

/* 相談の流れを開いたときも、本文と同じ罫線で区切る。 */
.consultation-flow{border-top:var(--border);border-bottom:var(--border);padding-block:var(--space-4)}
