/* ID-PHOTO 概算見積シミュレーター（朱テーマ・スコープ付き） */
.idest{
  --ink:#172636; --ink-soft:#42546a;
  --accent:#dd4f33; --accent-dk:#bb3c22; --accent-soft:#fce7e1;
  --paper:#fdfcf9; --line:#e7e0d4; --muted:#76828f;
  display:grid; grid-template-columns:1.22fr .98fr; gap:0;
  border:1px solid var(--line); background:#fff;
  font-family:"Noto Sans JP",sans-serif; color:#33414e; max-width:1000px; margin:0 auto;
}
.idest *{box-sizing:border-box}
.idest-form{padding:36px 34px 30px; background:var(--paper)}
.idest-field{margin-bottom:22px}
.idest-field > label{display:block; font-size:.82rem; font-weight:700; color:var(--ink); letter-spacing:.04em; margin-bottom:10px}
.idest-field .hint{font-weight:400; color:var(--muted); font-size:.74rem; margin-left:6px}
.idest-seg{display:flex; flex-wrap:wrap; gap:8px}
.idest-seg button{flex:1; min-width:118px; background:#fff; border:1px solid var(--line); padding:12px 10px; font-size:.86rem; cursor:pointer; color:var(--ink-soft); font-family:inherit}
.idest-seg button:hover{border-color:var(--accent)}
.idest-seg button.on{background:var(--ink); color:#fff; border-color:var(--ink)}
.idest-row2{display:grid; grid-template-columns:1fr 1fr; gap:14px}
.idest-num{display:flex; align-items:center; border:1px solid var(--line); background:#fff; overflow:hidden}
.idest-num button{width:44px; height:48px; border:none; background:var(--accent-soft); font-size:1.2rem; cursor:pointer; color:var(--accent-dk)}
.idest-num input{flex:1; border:none; text-align:center; font-size:1.05rem; font-weight:600; color:var(--ink); width:100%; background:transparent}
.idest-num input::-webkit-outer-spin-button,.idest-num input::-webkit-inner-spin-button{-webkit-appearance:none}
.idest-crew{background:var(--accent-soft); border-left:2px solid var(--accent); padding:11px 15px; font-size:.82rem; color:var(--ink)}
.idest-crew b{color:var(--accent-dk)}
.idest-checks{display:flex; flex-direction:column; gap:9px}
.idest-check{display:flex; align-items:center; gap:10px; font-size:.87rem; cursor:pointer; color:var(--ink-soft)}
.idest-check input{width:17px; height:17px; accent-color:var(--accent)}
.idest-spec{display:flex; align-items:flex-end}
.idest-spec .idest-check{margin-bottom:13px}
.idest-contact input,.idest-contact textarea{width:100%; border:1px solid var(--line); padding:10px 12px; font-family:inherit; font-size:.88rem; margin-top:10px; background:#fff}
.idest-contact .idest-row2 input{margin-top:10px}
.idest-hp{position:absolute!important; left:-9999px!important; width:1px!important; height:1px!important; opacity:0!important}

.idest-result{background:linear-gradient(168deg,#26384c,#15212e); color:#ece4d2; padding:38px 32px; display:flex; flex-direction:column}
.idest-rk{font-size:.72rem; letter-spacing:.18em; color:var(--accent); text-transform:uppercase}
.idest-price{font-size:3rem; font-weight:600; line-height:1.1; margin:8px 0 2px; color:#fff}
.idest-price small{font-size:1rem; color:#b6c2cf; font-weight:400}
.idest-range{font-size:.82rem; color:#a9b7c4; margin-bottom:18px}
.idest-breakdown{border-top:1px solid rgba(255,255,255,.16); padding-top:14px; font-size:.83rem}
.idest-breakdown .r{display:flex; justify-content:space-between; gap:12px; padding:5px 0; color:#cdd7e1}
.idest-breakdown .r span:last-child{color:#fff; font-weight:600; white-space:nowrap}
.idest-breakdown .note{display:block; color:#8b99a7; font-size:.73rem; border-top:1px dashed rgba(255,255,255,.18); margin-top:10px; padding-top:10px; line-height:1.7}
.idest-btn{margin-top:20px; background:var(--accent); color:#fff; border:none; padding:15px 18px; font-size:.9rem; font-weight:700; cursor:pointer; font-family:inherit; transition:.25s}
.idest-btn:hover{background:var(--accent-dk)}
.idest-btn:disabled{opacity:.6; cursor:default}
.idest-msg{font-size:.82rem; margin-top:12px; min-height:1em}
.idest-msg.ok{color:#7fe3c0}
.idest-msg.ng{color:#ffb3a3}
.idest-foot{font-size:.71rem; color:#7e8e9c; margin-top:10px}

@media(max-width:768px){
  .idest{grid-template-columns:1fr}
}

/* ==========================================================
   仕上げ：左右パネルの下端揃え／サイズ感の調整／余白の締め
   ========================================================== */
.idest{
  align-items:stretch; border-radius:8px; overflow:hidden;
  box-shadow:0 26px 70px -38px rgba(19,49,79,.45);
}
.idest-form{padding:42px 40px 36px}
.idest-result{
  padding:46px 38px;
  min-height:100%;
  display:flex; flex-direction:column;
}
.idest-field{margin-bottom:24px}
.idest-form > label,.idest-field > label{margin-bottom:12px}

/* 入力・ボタンのサイズ感 */
.idest-num{border-radius:4px}
.idest-num input{height:54px; font-size:1.08rem; letter-spacing:.02em}
.idest-num button{height:54px; width:48px; font-size:1.25rem}
.idest-seg button{padding:14px 12px; border-radius:4px; letter-spacing:.02em}
.idest-checks{gap:11px}
.idest-check input{margin-right:2px}
.idest-contact input,.idest-contact textarea{padding:13px 14px; border-radius:4px; line-height:1.6}
.idest-contact textarea{resize:vertical; min-height:64px}

/* 結果パネル：breakdownを伸ばし、ボタン＋foot を下端に */
.idest-result .idest-rk{margin-bottom:2px}
.idest-result .idest-price{font-size:2.9rem; letter-spacing:-.005em; margin-bottom:4px}
.idest-result .idest-range{margin-bottom:20px}
.idest-result .idest-breakdown{flex:1 1 auto}
.idest-result .idest-breakdown .r{padding:7px 0; line-height:1.55}
.idest-result .idest-btn{
  margin-top:auto; padding:18px 22px;
  font-weight:700; letter-spacing:.06em; border-radius:4px;
  box-shadow:0 14px 32px -16px rgba(187,60,34,.6);
}
.idest-result .idest-btn:hover{transform:translateY(-1px)}
.idest-result .idest-msg{margin-top:10px}
.idest-result .idest-foot{margin-top:12px}

/* ===========================================================
   FINAL FIX：間隔・呼吸・内訳の改行・右パネルの空白対策
   （!important で確実に勝つ）
   =========================================================== */
.idest{
  align-items:start !important; border-radius:8px !important;
  box-shadow:0 28px 80px -42px rgba(19,49,79,.45) !important;
}
.idest-form{padding:44px 44px 40px !important}
.idest-result{
  padding:44px 40px !important;
  align-self:start !important;
  position:sticky; top:24px;
  min-height:0 !important;
}

/* フィールド間の呼吸 */
.idest-form .idest-field{margin-bottom:28px !important}
.idest-form .idest-field:last-child{margin-bottom:0 !important}
.idest-form > label,.idest-form .idest-field > label{
  font-size:.84rem !important; margin-bottom:14px !important;
  display:flex !important; align-items:center; gap:8px;
}
.idest-form label .hint{font-size:.74rem; font-weight:400}

/* 撮影種別タブ */
.idest-seg{gap:10px}
.idest-seg button{padding:14px 12px !important}

/* ステッパー */
.idest-num{border-radius:4px !important}
.idest-num input{height:56px !important; font-size:1.1rem}
.idest-num button{height:56px !important; width:50px !important; font-size:1.3rem}

/* 必要人員ボックス：③のすぐ下に従属させる */
.idest-form .idest-field:has(.idest-crew){
  margin-top:-10px !important; margin-bottom:30px !important;
}
.idest-crew{padding:14px 18px !important; line-height:1.7 !important; border-radius:4px !important}

/* row2のギャップ */
.idest-row2{gap:18px !important}

/* 連絡先：入力同士の縦ギャップを明示 */
.idest-contact > .idest-row2 + .idest-row2{margin-top:14px !important}
.idest-contact > textarea{margin-top:14px !important; min-height:84px; border-radius:4px}
.idest-contact input,.idest-contact textarea{
  margin-top:0 !important; padding:13px 14px !important;
  border-radius:4px; line-height:1.6;
}

/* オプションのチェック群 */
.idest-checks{gap:13px !important}
.idest-check{line-height:1.5}

/* ============ 右パネル：内訳の改行禁止・両端揃え・右余白 ============ */
.idest-result .idest-rk{font-size:.76rem; letter-spacing:.2em}
.idest-result .idest-price{
  font-size:2.7rem !important; line-height:1.1 !important;
  letter-spacing:-.01em; margin:6px 0 2px !important;
}
.idest-result .idest-range{font-size:.82rem; margin-bottom:22px !important; color:#a9b7c4}
.idest-result .idest-breakdown{
  flex:0 0 auto !important;
  border-top:1px solid rgba(255,255,255,.18) !important;
  padding-top:18px !important; font-size:.84rem;
}
.idest-result .idest-breakdown .r{
  display:flex !important; align-items:flex-start;
  justify-content:space-between; gap:18px;
  padding:9px 0 !important; line-height:1.6;
  border-bottom:1px solid rgba(255,255,255,.08);
}
.idest-result .idest-breakdown .r:last-child{border-bottom:none}
.idest-result .idest-breakdown .r span:first-child{
  flex:1 1 auto; min-width:0;
  color:#cdd7e1; word-break:keep-all;
  font-weight:400;
}
.idest-result .idest-breakdown .r span:last-child{
  flex:0 0 auto; white-space:nowrap;
  font-variant-numeric:tabular-nums; color:#fff; font-weight:600;
}
.idest-result .idest-breakdown .note{
  margin-top:14px !important; padding-top:12px !important;
  font-size:.74rem; line-height:1.85; color:#9aa9b6;
}

/* CTA：内訳の直下に配置（無理に下端へ追いやらない） */
.idest-result .idest-btn{
  margin-top:22px !important; padding:18px 22px !important;
  font-weight:700; letter-spacing:.06em; border-radius:4px;
  box-shadow:0 14px 32px -16px rgba(187,60,34,.55);
}
.idest-result .idest-msg{font-size:.82rem; margin-top:10px; min-height:1em}
.idest-result .idest-foot{margin-top:10px; font-size:.72rem; color:#8ea0ae}

/* モバイル：stickyを解除して縦並びに */
@media(max-width:768px){
  .idest-result{position:static !important; padding:34px 24px !important}
  .idest-form{padding:30px 24px !important}
}

/* ============================================================
   FINAL FIX v2：#idp .idest 配下にID付き高詳細度＋!important で
   SWELL/他CSSに対し確実に勝つ。前回が当たらなかったのは詳細度負け。
   ============================================================ */
#idp .idest{
  align-items:start !important; border-radius:8px !important;
  box-shadow:0 28px 80px -42px rgba(19,49,79,.45) !important;
  overflow:visible !important;
}
#idp .idest .idest-form{padding:44px 44px 40px !important}
#idp .idest .idest-result{
  padding:44px 40px !important;
  align-self:start !important;
  position:sticky !important; top:24px !important;
  min-height:0 !important; height:auto !important;
}

/* フィールド間の呼吸 */
#idp .idest .idest-form .idest-field{margin-bottom:28px !important}
#idp .idest .idest-form .idest-field:last-child{margin-bottom:0 !important}
#idp .idest .idest-form > .idest-field > label{
  font-size:.84rem !important; margin-bottom:14px !important;
  display:flex !important; align-items:center !important; gap:8px !important;
}
#idp .idest .idest-form label .hint{font-size:.74rem !important; font-weight:400 !important}

/* タブ・ステッパー */
#idp .idest .idest-seg{gap:10px !important}
#idp .idest .idest-seg button{padding:14px 12px !important; border-radius:4px !important}
#idp .idest .idest-num{border-radius:4px !important}
#idp .idest .idest-num input{height:56px !important; font-size:1.1rem !important}
#idp .idest .idest-num button{height:56px !important; width:50px !important; font-size:1.3rem !important}

/* 必要人員ボックス：③に従属させる */
#idp .idest .idest-form .idest-field:has(.idest-crew){
  margin-top:-10px !important; margin-bottom:30px !important;
}
#idp .idest .idest-crew{
  padding:14px 18px !important; line-height:1.7 !important;
  border-radius:4px !important;
}

/* row2 */
#idp .idest .idest-row2{gap:18px !important}
#idp .idest .idest-contact > .idest-row2 + .idest-row2{margin-top:14px !important}
#idp .idest .idest-contact > textarea{margin-top:14px !important; min-height:84px !important; border-radius:4px !important}
#idp .idest .idest-contact input,#idp .idest .idest-contact textarea{
  margin-top:0 !important; padding:13px 14px !important;
  border-radius:4px !important; line-height:1.6 !important;
}

/* チェック群 */
#idp .idest .idest-checks{gap:13px !important}

/* ============ 右パネル（最重要：改行禁止＋両端揃え＋空白除去） ============ */
#idp .idest .idest-result .idest-price{
  font-size:2.7rem !important; line-height:1.1 !important;
  letter-spacing:-.01em !important; margin:6px 0 2px !important;
}
#idp .idest .idest-result .idest-range{
  font-size:.82rem !important; margin-bottom:22px !important; color:#a9b7c4 !important;
}
#idp .idest .idest-result .idest-breakdown{
  flex:0 0 auto !important;
  border-top:1px solid rgba(255,255,255,.18) !important;
  padding-top:18px !important; font-size:.84rem !important;
}
#idp .idest .idest-result .idest-breakdown .r{
  display:flex !important; flex-direction:row !important;
  align-items:flex-start !important; justify-content:space-between !important;
  gap:18px !important; padding:9px 0 !important; line-height:1.6 !important;
  border-bottom:1px solid rgba(255,255,255,.08) !important;
  flex-wrap:nowrap !important;
}
#idp .idest .idest-result .idest-breakdown .r:last-child{border-bottom:none !important}
#idp .idest .idest-result .idest-breakdown .r span:first-child{
  flex:1 1 auto !important; min-width:0 !important;
  color:#cdd7e1 !important; word-break:keep-all !important;
  font-weight:400 !important; white-space:normal !important;
}
#idp .idest .idest-result .idest-breakdown .r span:last-child{
  flex:0 0 auto !important; white-space:nowrap !important;
  font-variant-numeric:tabular-nums !important;
  color:#fff !important; font-weight:600 !important;
}
#idp .idest .idest-result .idest-breakdown .note{
  margin-top:14px !important; padding-top:12px !important;
  font-size:.74rem !important; line-height:1.85 !important; color:#9aa9b6 !important;
  display:block !important;
}

/* CTAとフッター */
#idp .idest .idest-result .idest-btn{
  margin-top:22px !important; padding:18px 22px !important;
  font-weight:700 !important; letter-spacing:.06em !important;
  border-radius:4px !important;
  box-shadow:0 14px 32px -16px rgba(187,60,34,.55) !important;
}
#idp .idest .idest-result .idest-msg{font-size:.82rem !important; margin-top:10px !important; min-height:1em !important}
#idp .idest .idest-result .idest-foot{margin-top:10px !important; font-size:.72rem !important; color:#8ea0ae !important}

/* モバイル */
@media(max-width:768px){
  #idp .idest{display:grid !important; grid-template-columns:1fr !important}
  #idp .idest .idest-result{position:static !important; padding:34px 24px !important}
  #idp .idest .idest-form{padding:30px 24px !important}
}
