/* =========================================================
   DAIICHI BUSSAN / OFFICE v135
   ========================================================= */

.office-page .sub-hero-bgword{
  top:43%;
  font-size:clamp(110px,15vw,250px);
  color:rgba(15,15,15,.40);
}

.office-intro{
  padding-top:clamp(95px,9vw,150px);
  padding-bottom:clamp(95px,9vw,145px);
}
.office-intro-grid{
  display:grid;
  grid-template-columns:minmax(0,1.08fr) minmax(330px,.92fr);
  gap:clamp(55px,9vw,145px);
  align-items:end;
}
.office-intro-title>p{
  margin:0 0 22px;
  color:var(--omega-red);
  font-size:9px;
  font-weight:850;
  letter-spacing:.24em;
}
.office-intro-title h2{
  margin:0;
  font-size:clamp(42px,4.3vw,72px);
  line-height:1.24;
  letter-spacing:-.045em;
  font-weight:900;
}
.office-intro-copy{
  border-top:2px solid var(--omega-red);
  padding-top:24px;
}
.office-intro-copy p{
  margin:0 0 18px;
  color:#555;
  font-size:clamp(15px,1.05vw,18px);
  line-height:2.05;
}

.office-jump{
  margin-top:clamp(60px,7vw,100px);
  display:grid;
  grid-template-columns:repeat(3,1fr);
  border-top:1px solid #202020;
  border-left:1px solid #ddd;
}
.office-jump a{
  position:relative;
  min-height:130px;
  padding:28px 45px 25px 62px;
  border-right:1px solid #ddd;
  border-bottom:1px solid #ddd;
  transition:.25s ease;
}
.office-jump a:hover{background:#f5f5f3}
.office-jump a>span{
  position:absolute;
  left:20px;
  top:30px;
  color:var(--omega-red);
  font-size:9px;
  font-weight:850;
}
.office-jump b{
  display:block;
  font-size:clamp(18px,1.55vw,25px);
  letter-spacing:.04em;
}
.office-jump small{
  display:block;
  margin-top:7px;
  color:#777;
  font-size:10px;
}

.office-section-inner{
  padding-top:clamp(95px,9vw,145px);
  padding-bottom:clamp(100px,10vw,160px);
}
.office-corporate{background:#f5f5f3}
.office-amusement{background:#fff}
.office-food{background:#f5f5f3}

.office-section-heading{
  display:grid;
  grid-template-columns:68px 1fr;
  gap:20px;
  align-items:start;
  margin-bottom:clamp(55px,7vw,95px);
}
.office-section-heading>span{
  margin-top:5px;
  color:var(--omega-red);
  font-size:10px;
  font-weight:850;
  letter-spacing:.14em;
}
.office-section-heading p{
  margin:0 0 12px;
  color:var(--omega-red);
  font-size:9px;
  font-weight:850;
  letter-spacing:.24em;
}
.office-section-heading h2{
  margin:0;
  font-size:clamp(40px,4vw,68px);
  line-height:1.15;
  letter-spacing:-.04em;
  font-weight:900;
}

.office-corporate-grid{
  display:grid;
  grid-template-columns:repeat(2,1fr);
  border-top:1px solid #202020;
  border-left:1px solid #d6d6d4;
}
.office-corporate-card{
  min-height:230px;
  display:grid;
  grid-template-columns:minmax(180px,.78fr) minmax(0,1.22fr);
  background:#fff;
  border-right:1px solid #d6d6d4;
  border-bottom:1px solid #d6d6d4;
  overflow:hidden;
}
.office-photo{
  position:relative;
  min-height:210px;
  height:100%;
  margin:0;
  overflow:hidden;
  background:#e8e8e6;
  align-self:stretch;
}
.office-photo img{
  position:absolute;
  inset:0;
  display:block;
  width:100%;
  height:100%;
  max-width:none;
  object-fit:var(--img-fit,cover);
  object-position:var(--img-pos,calc(50% + var(--img-x,0px)) calc(50% + var(--img-y,0px)));
  transform:scale(var(--img-scale,1));
  transform-origin:center center;
  will-change:transform, object-position;
}
/* v183 店舗写真の位置調整は「scale + object-position(px)」で統一
   x: +で右 / -で左
   y: +で下 / -で上
   scale: 1より大きいと拡大
   画像自体を横移動させず、トリミング位置だけを動かすため
   余白が見えにくく、ロゴ位置の調整が安定します。 */
.office-photo-corporate{min-height:230px}
.office-corporate-body{
  min-width:0;
  padding:30px 30px 28px;
  display:flex;
  flex-direction:column;
}
.office-corporate-card small{
  display:block;
  margin-bottom:20px;
  color:var(--omega-red);
  font-size:9px;
  font-weight:850;
  letter-spacing:.18em;
}
.office-corporate-card h3{
  margin:0 0 18px;
  font-size:clamp(25px,2vw,34px);
}
.office-corporate-card address{
  margin:0;
  color:#555;
  font-size:13px;
  line-height:1.85;
  font-style:normal;
}

.office-region{
  margin-top:clamp(50px,6vw,85px);
}
.office-region:first-of-type{margin-top:0}
.office-region-head{
  display:flex;
  align-items:center;
  gap:18px;
  margin-bottom:20px;
}
.office-region-head::after{
  content:"";
  height:1px;
  flex:1;
  background:#d6d6d4;
}
.office-region-head span{
  color:#202020;
  font-size:11px;
  font-weight:900;
  letter-spacing:.22em;
}
.office-grid{
  display:grid;
  grid-template-columns:repeat(2,1fr);
  border-top:1px solid #202020;
  border-left:1px solid #ddd;
}
.office-card{
  min-height:220px;
  display:grid;
  grid-template-columns:minmax(175px,.72fr) minmax(0,1.28fr);
  border-right:1px solid #ddd;
  border-bottom:1px solid #ddd;
  background:#fff;
  overflow:hidden;
}
.office-amusement .office-card{background:#fafaf8}
.office-card-body{
  min-width:0;
  padding:26px 28px 24px;
  display:flex;
  flex-direction:column;
}
.office-card-top{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:16px;
}
.office-card h3{
  margin:0 0 15px;
  font-size:clamp(18px,1.35vw,23px);
  line-height:1.45;
  letter-spacing:-.02em;
}
.office-company{
  flex:0 0 auto;
  padding:5px 8px;
  border:1px solid #ddd;
  color:#888;
  font-size:8px;
  line-height:1.4;
}
.office-card address{
  margin:0;
  color:#666;
  font-size:12px;
  line-height:1.75;
  font-style:normal;
}
.office-links{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:12px 22px;
  margin-top:auto;
  padding-top:18px;
}
.office-tel,
.office-map,
.office-web{
  display:inline-flex;
  align-items:center;
  gap:8px;
  padding-bottom:4px;
  border-bottom:1px solid #9d9d9a;
  color:#333;
  font-size:10px;
  font-weight:800;
  letter-spacing:.08em;
  transition:.2s ease;
}
.office-map,
.office-web{
  color:var(--omega-red);
  border-bottom-color:rgba(157,13,18,.45);
}
.office-tel:hover,
.office-map:hover,
.office-web:hover{
  color:var(--omega-red);
  border-bottom-color:var(--omega-red);
}
.office-map span,
.office-web span{font-size:13px}
.office-note{
  margin:11px 0 0;
  color:#999;
  font-size:10px;
}
.office-disclaimer{
  margin:42px 0 0;
  color:#888;
  font-size:11px;
  line-height:1.8;
}

@media(max-width:900px){
  .office-intro-grid{grid-template-columns:1fr;gap:42px}
  .office-jump{grid-template-columns:1fr}
  .office-jump a{min-height:92px}
  .office-corporate-grid,.office-grid{grid-template-columns:1fr}
}
@media(max-width:640px){
  .office-page .sub-hero-bgword{font-size:25vw}
  .office-intro{padding-top:76px;padding-bottom:88px}
  .office-intro-title h2{font-size:36px}
  .office-jump{margin-top:55px}
  .office-jump a{padding:22px 36px 19px 52px}
  .office-section-inner{padding-top:78px;padding-bottom:90px}
  .office-section-heading{grid-template-columns:42px 1fr;gap:10px;margin-bottom:50px}
  .office-section-heading h2{font-size:35px}
  .office-corporate-card,.office-card{grid-template-columns:1fr}
  .office-photo,.office-photo-corporate{min-height:210px;height:210px}
  .office-photo img{
    object-position:var(--img-pos-sp,var(--img-pos,calc(50% + var(--img-x-sp,var(--img-x,0px))) calc(50% + var(--img-y-sp,var(--img-y,0px)))));
    transform:scale(var(--img-scale-sp,var(--img-scale,1)));
  }
  .office-corporate-body,.office-card-body{padding:26px 24px 24px}
  .office-card-top{display:block}
  .office-company{display:inline-block;margin:-7px 0 15px}
}




/* v136 本社・営業所 Googleマップ埋め込み */
.office-map-embed{
  padding:0;
  background:#e8e8e6;
}
.office-map-embed iframe{
  display:block;
  width:100%;
  height:100%;
  min-height:230px;
  border:0;
}
@media(max-width:640px){
  .office-map-embed iframe{
    min-height:210px;
  }
}




/* AMUSEMENT / prefecture × legal entity grouping */
.office-region-company{
  margin-top:clamp(62px,7vw,100px);
}
.office-region-company:first-of-type{
  margin-top:0;
}
.office-region-company-head{
  display:flex;
  align-items:center;
  gap:14px;
  margin:0 0 26px;
  padding:0 0 18px;
  border-bottom:1px solid #202020;
}
.office-region-company-head span{
  color:#202020;
  font-size:11px;
  font-weight:900;
  letter-spacing:.22em;
}
.office-region-company-head i{
  color:#aaa;
  font-size:24px;
  font-style:normal;
  font-weight:300;
}
.office-region-company-head strong{
  color:#171717;
  font-size:clamp(22px,2vw,32px);
  line-height:1.3;
  font-weight:700;
  letter-spacing:-.025em;
}
.office-region-company .office-company-cards{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:clamp(22px,2.4vw,36px);
}
@media(max-width:1100px){
  .office-region-company .office-company-cards{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
}
@media(max-width:640px){
  .office-region-company{
    margin-top:54px;
  }
  .office-region-company-head{
    gap:9px;
    margin-bottom:18px;
    padding-bottom:12px;
  }
  .office-region-company-head span{
    font-size:9px;
  }
  .office-region-company-head i{
    font-size:18px;
  }
  .office-region-company-head strong{
    font-size:20px;
  }
  .office-region-company .office-company-cards{
    grid-template-columns:1fr;
  }
}


.office-photo-brand{
  display:flex;
  align-items:center;
  justify-content:center;
  background:#f3f3f1;
}
.office-photo-brand img{
  width:72%;
  height:72%;
  object-fit:contain;
}


/* v192 OFFICE 飲食事業レイアウト調整 */
/* 飲食事業の背景はセクション終端まで統一してライトグレー */
.office-food,
.office-food .office-section-inner,
.office-food .office-region{
  background:#f5f5f3;
}

/* 飲食店舗カード上部の黒線を廃止 */
.office-food .office-grid{
  border-top:0;
}

/* 店舗カード本体は白を維持 */
.office-food .office-card{
  background:#fff;
}

/* OFFICE下部 HISTORY / BUSINESS は白背景 */
.office-page .about-next,
.office-page .about-next-card{
  background:#fff;
}


/* v199: business groups instead of geographic headings. Existing photos and store data unchanged. */
.office-region-daiichi .office-region-company-head,
.office-region-sowa .office-region-company-head{justify-content:flex-start;}
.office-region-company-head .office-group-affiliate{
  display:inline;font-size:.46em;font-weight:600;letter-spacing:0;white-space:nowrap;vertical-align:baseline;
}
/* v202: 飲食店舗一覧もアミューズメントの会社別店舗一覧と同じ列数に統一。 */
.office-food .office-all-stores{
  display:grid;grid-template-columns:repeat(3,minmax(0,1fr));
  gap:clamp(22px,2.4vw,36px);border:0;
}
.office-food .office-all-stores>.office-card{border:1px solid #ddd;background:#fff;}
@media(max-width:1100px){
  .office-food .office-all-stores{grid-template-columns:repeat(2,minmax(0,1fr));}
}
@media(max-width:640px){
  .office-food .office-all-stores{grid-template-columns:minmax(0,1fr);}
}
@media(max-width:640px){
  .office-region-company-head .office-group-affiliate{display:block;margin-top:4px;font-size:11px;}
}


/* v201: OFFICE 店舗写真を正方形 (1:1) で統一。元画像ファイルは変更しない。
   本社・北陸営業所の埋め込みマップは対象外。 */
.office-amusement .office-card,
.office-food .office-card {
  grid-template-columns: minmax(0, .88fr) minmax(0, 1.12fr);
  min-height: 0;
  align-items: center;
}
.office-amusement .office-card > .office-photo,
.office-food .office-card > .office-photo {
  width:100%;
  aspect-ratio: 1 / 1;
  height:auto;
  min-height:0;
  align-self:center;
  background:#e8e8e6;
}
.office-amusement .office-card > .office-card-body,
.office-food .office-card > .office-card-body {
  min-height:220px;
}
@media (max-width:640px) {
  .office-amusement .office-card,
  .office-food .office-card {
    grid-template-columns:minmax(0, 1fr);
  }
  .office-amusement .office-card > .office-photo,
  .office-food .office-card > .office-photo {
    width:100%;
    height:auto;
    min-height:0;
    aspect-ratio:1 / 1;
  }
  .office-amusement .office-card > .office-card-body,
  .office-food .office-card > .office-card-body {
    min-height:0;
  }
}


/* v203: OFFICE 飲食店舗カードは写真の正方形とカードの高さを揃え、
   店名・住所・TEL・横並びの公式サイト/地図の順に整理。写真素材は変更しない。 */
@media (min-width:641px) {
  .office-food .office-all-stores > .office-card {
    grid-template-columns:47% minmax(0,53%);
    aspect-ratio:100 / 47; /* 写真幅=カード高さ。写真1:1。 */
    min-height:0;
    align-items:stretch;
  }
  .office-food .office-all-stores .office-photo {
    align-self:stretch;
    width:100%;height:100%;min-height:0;aspect-ratio:1;
  }
  .office-food .office-all-stores .office-card-body {
    min-height:0;
    padding:clamp(9px,.75vw,13px) clamp(9px,.8vw,14px);
    justify-content:space-between;
    overflow-wrap:anywhere;
  }
  .office-food .office-all-stores .office-card-top {
    display:block;
  }
  .office-food .office-all-stores .office-card h3 {
    font-size:clamp(12px,1.03vw,15px);
    line-height:1.28;
    margin:0 0 5px;
    letter-spacing:-.04em;
  }
  .office-food .office-all-stores .office-company {
    display:inline-block;
    margin:0 0 4px;
    padding:1px 4px;
    font-size:8px;
  }
  .office-food .office-all-stores .office-card address {
    font-size:clamp(8px,.72vw,10px);
    line-height:1.35;
    margin:0 0 5px;
    overflow-wrap:anywhere;
  }
  .office-food .office-all-stores .office-links {
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    align-items:start;
    gap:5px 5px;
    padding:0;
    margin-top:auto;
  }
  .office-food .office-all-stores .office-links .office-tel {
    grid-column:1/-1;
    justify-self:start;
    font-size:clamp(9px,.82vw,11px);
    letter-spacing:0;
    white-space:nowrap;
  }
  .office-food .office-all-stores .office-links .office-web,
  .office-food .office-all-stores .office-links .office-map {
    justify-self:start;
    min-width:0;
    white-space:nowrap;
    font-size:clamp(7.5px,.68vw,9px);
    letter-spacing:0;
    gap:2px;
  }
  .office-food .office-all-stores .office-links .office-web span,
  .office-food .office-all-stores .office-links .office-map span {font-size:11px;}
  /* 外部サイト未登録の店舗はマップだけを左端へ。 */
  .office-food .office-all-stores .office-links:not(:has(.office-web)) .office-map {grid-column:1/-1;}
}
@media(max-width:640px) {
  .office-food .office-all-stores > .office-card {aspect-ratio:auto;align-items:stretch;}
  .office-food .office-all-stores > .office-card > .office-card-body {
    padding:20px 20px 22px;min-height:0;
  }
  .office-food .office-all-stores .office-links {
    display:grid;grid-template-columns:repeat(2,minmax(0,1fr));
    gap:12px 10px;margin-top:16px;padding-top:0;
  }
  .office-food .office-all-stores .office-links .office-tel {grid-column:1/-1;justify-self:start;}
  .office-food .office-all-stores .office-links .office-web,
  .office-food .office-all-stores .office-links .office-map {
    justify-self:start;white-space:nowrap;font-size:clamp(9px,2.5vw,11px);letter-spacing:0;gap:4px;
  }
}


/* v204: OFFICE PC店舗カードの文字サイズと電話・サイト・地図の並びを両事業で統一。
   写真の1:1表示・3列配置・店舗情報は維持する。 */
@media (min-width:641px) {
  /* 飲食の見出し・住所をアミューズメントと同じ文字サイズへ戻す。 */
  .office-food .office-all-stores .office-card h3 {
    font-size:clamp(18px,1.35vw,23px);
    line-height:1.45;
    letter-spacing:-.02em;
    margin-bottom:15px;
  }
  .office-food .office-all-stores .office-card address {
    font-size:12px;
    line-height:1.75;
  }
  /* アミューズメントも飲食と同じ余白と、電話1行＋外部リンク2列の構成に。 */
  .office-amusement .office-company-cards .office-card-body {
    min-height:0;
    padding:clamp(9px,.75vw,13px) clamp(9px,.8vw,14px);
    justify-content:space-between;
    overflow-wrap:anywhere;
  }
  .office-amusement .office-company-cards .office-links {
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    align-items:start;
    gap:5px;
    padding:0;
    margin-top:auto;
  }
  .office-amusement .office-company-cards .office-links .office-tel {
    grid-column:1/-1;
    justify-self:start;
    font-size:clamp(9px,.82vw,11px);
    letter-spacing:0;
    white-space:nowrap;
  }
  .office-amusement .office-company-cards .office-links .office-web,
  .office-amusement .office-company-cards .office-links .office-map {
    justify-self:start;
    min-width:0;
    white-space:nowrap;
    font-size:clamp(7.5px,.68vw,9px);
    letter-spacing:0;
    gap:2px;
  }
  .office-amusement .office-company-cards .office-links .office-web span,
  .office-amusement .office-company-cards .office-links .office-map span {
    font-size:11px;
  }
}
@media(max-width:640px) {
  .office-amusement .office-company-cards .office-links {
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:12px 10px;
    margin-top:16px;
    padding-top:0;
  }
  .office-amusement .office-company-cards .office-links .office-tel {
    grid-column:1/-1;
    justify-self:start;
  }
  .office-amusement .office-company-cards .office-links .office-web,
  .office-amusement .office-company-cards .office-links .office-map {
    justify-self:start;
    white-space:nowrap;
    font-size:clamp(9px,2.5vw,11px);
    letter-spacing:0;
    gap:4px;
  }
}


/* v205: 飲食カードをデザイン基準として、アミューズメントの店舗カードも
   写真枠・カード外枠・余白・文字・電話・リンク配置を同じ仕様にする。
   写真の元データ・既存の個別トリミング設定は変更しない。 */
@media (min-width:641px){
  .office-amusement .office-company-cards > .office-card{
    grid-template-columns:47% minmax(0,53%);
    aspect-ratio:100 / 47;
    min-height:0;
    align-items:stretch;
    border:1px solid #ddd;
    background:#fff;
  }
  .office-amusement .office-company-cards > .office-card > .office-photo{
    align-self:stretch;
    width:100%;
    height:100%;
    min-height:0;
    aspect-ratio:1;
  }
  .office-amusement .office-company-cards > .office-card > .office-card-body{
    min-height:0;
    padding:clamp(9px,.75vw,13px) clamp(9px,.8vw,14px);
    justify-content:space-between;
    overflow-wrap:anywhere;
  }
  .office-amusement .office-company-cards .office-card-top{display:block;}
  .office-amusement .office-company-cards .office-card h3{
    font-size:clamp(18px,1.35vw,23px);
    line-height:1.45;
    letter-spacing:-.02em;
    margin:0 0 15px;
  }
  .office-amusement .office-company-cards .office-card address{
    font-size:12px;
    line-height:1.75;
    margin:0 0 5px;
    overflow-wrap:anywhere;
  }
  .office-amusement .office-company-cards .office-company{
    display:inline-block;
    margin:0 0 4px;
    padding:1px 4px;
    font-size:8px;
  }
  .office-amusement .office-company-cards .office-links{
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    align-items:start;
    gap:5px;
    padding:0;
    margin-top:auto;
  }
  .office-amusement .office-company-cards .office-links .office-tel{
    grid-column:1/-1;
    justify-self:start;
    font-size:clamp(9px,.82vw,11px);
    letter-spacing:0;
    white-space:nowrap;
  }
  .office-amusement .office-company-cards .office-links .office-web,
  .office-amusement .office-company-cards .office-links .office-map{
    justify-self:start;
    min-width:0;
    white-space:nowrap;
    font-size:clamp(7.5px,.68vw,9px);
    letter-spacing:0;
    gap:2px;
  }
  .office-amusement .office-company-cards .office-links .office-web span,
  .office-amusement .office-company-cards .office-links .office-map span{
    font-size:11px;
  }
}
@media(max-width:640px){
  .office-amusement .office-company-cards > .office-card{
    aspect-ratio:auto;
    align-items:stretch;
    border:1px solid #ddd;
    background:#fff;
  }
  .office-amusement .office-company-cards > .office-card > .office-card-body{
    padding:20px 20px 22px;
    min-height:0;
  }
}


/* v229: Windows notebook compatibility.
   Keep store photos square, but let each card grow with its text content.
   This prevents addresses / TEL / links from being clipped when Windows font metrics
   render slightly taller than on macOS. */
@media (min-width:641px){
  .office-food .office-all-stores > .office-card,
  .office-amusement .office-company-cards > .office-card{
    aspect-ratio:auto !important;
    min-height:0 !important;
    height:auto !important;
    align-items:start !important;
    overflow:hidden;
  }
  .office-food .office-all-stores > .office-card > .office-photo,
  .office-amusement .office-company-cards > .office-card > .office-photo{
    width:100%;
    height:auto !important;
    min-height:0 !important;
    aspect-ratio:1 / 1 !important;
    align-self:start !important;
  }
  .office-food .office-all-stores > .office-card > .office-card-body,
  .office-amusement .office-company-cards > .office-card > .office-card-body{
    min-height:0 !important;
    height:auto !important;
    align-self:stretch;
    padding-bottom:clamp(14px,1vw,18px);
    overflow:visible;
  }
  .office-food .office-all-stores .office-links,
  .office-amusement .office-company-cards .office-links{
    margin-top:12px;
  }
}
