/* ============================================================
   Simple Invoice — SimpleFast ブランド(paper / ink / yellow)
   ============================================================ */
:root{
  --paper:#f4f1ea; --ink:#111111; --yellow:#ffe000; --sub:#555555;
  --line:#d9d5c8; --white:#fdfdfd; --soft:#faf8f3;
  --ok:#1d7a4d; --ok-bg:#e4f3ea; --warn:#b8860b; --warn-bg:#fbf1d6;
  --danger:#b3261e; --danger-bg:#fbe7e5;
  --font-jp:"Noto Sans JP",-apple-system,BlinkMacSystemFont,"Hiragino Kaku Gothic ProN","Hiragino Sans",Meiryo,sans-serif;
  --radius:8px; --shadow:3px 3px 0 var(--ink);
}
*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}
html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}
body{
  font-family:var(--font-jp); color:var(--ink); line-height:1.7;
  background-color:var(--paper);
  background-image:linear-gradient(rgba(17,17,17,.045) 1px,transparent 1px),linear-gradient(90deg,rgba(17,17,17,.045) 1px,transparent 1px);
  background-size:40px 40px; min-height:100vh;
}
a{color:inherit;text-decoration:none}
img{max-width:100%;display:block}
h1,h2,h3{letter-spacing:.01em}
input,select,textarea,button{font-family:inherit}

/* ===== Header ===== */
.app-header{
  position:sticky; top:0; z-index:40;
  background:rgba(244,241,234,.92); backdrop-filter:blur(10px); -webkit-backdrop-filter:blur(10px);
  border-bottom:2px solid var(--ink);
  display:flex; align-items:center; justify-content:space-between; gap:16px; flex-wrap:wrap;
  padding:10px 24px;
}
.brand{display:flex; align-items:center; gap:16px; min-width:0}
.back-link{font-size:.78rem; font-weight:800; white-space:nowrap; color:var(--ink); background:var(--white); border:2px solid var(--ink); border-radius:6px; padding:6px 12px; box-shadow:2px 2px 0 var(--ink); transition:transform .12s, box-shadow .12s}
.back-link:hover{transform:translate(2px,2px); box-shadow:0 0 0 var(--ink)}
.brand-title{font-size:1.15rem; font-weight:900; display:flex; align-items:baseline; gap:8px; flex-wrap:wrap}
.brand-fast{position:relative; z-index:0}
.brand-fast::after{content:"";position:absolute;left:-3%;right:-3%;bottom:.06em;height:.32em;background:var(--yellow);z-index:-1;transform:rotate(-1deg)}
.brand-sub{font-size:.72rem; font-weight:600; color:var(--sub); letter-spacing:.08em}
.app-nav{display:flex; gap:4px; flex-wrap:wrap}
.app-nav__item{
  font-size:.86rem; font-weight:700; color:var(--sub);
  padding:7px 13px; border-radius:6px; border:1.5px solid transparent; white-space:nowrap;
}
.app-nav__item:hover{color:var(--ink); background:var(--soft)}
.app-nav__item.is-active{color:var(--ink); background:var(--white); border-color:var(--ink)}

/* データタブの吹き出し(自動バックアップ未設定の注意) */
.app-nav__item.nav-has-bubble{position:relative}
.nav-bubble{
  display:none; position:absolute; top:calc(100% + 8px); right:0; z-index:60;
  white-space:nowrap; background:var(--danger); color:#fff;
  font-size:.72rem; font-weight:700; line-height:1.4;
  padding:6px 10px; border-radius:6px; box-shadow:0 4px 14px rgba(0,0,0,.22);
}
.nav-bubble.is-show{display:block; animation:navBubbleIn .18s ease}
.nav-bubble::before{
  content:""; position:absolute; top:-5px; right:16px;
  border-left:5px solid transparent; border-right:5px solid transparent; border-bottom:5px solid var(--danger);
}
@keyframes navBubbleIn{from{opacity:0; transform:translateY(-4px)}to{opacity:1; transform:none}}

/* ===== Layout ===== */
.app-main{max-width:1080px; margin:0 auto; padding:26px 24px 40px}
.page-head{display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap; margin-bottom:18px}
.page-title{font-size:1.35rem; font-weight:900}
.page-sub{font-size:.85rem; color:var(--sub)}
.section-label{font-size:.78rem; font-weight:800; letter-spacing:.06em; color:var(--sub); margin:22px 0 8px}
.muted{color:var(--sub)}
.right{text-align:right}
.nowrap{white-space:nowrap}

/* ===== Buttons ===== */
.si-btn{
  display:inline-flex; align-items:center; gap:7px; justify-content:center;
  font-size:.86rem; font-weight:800; color:var(--ink);
  background:var(--white); border:2px solid var(--ink); border-radius:var(--radius);
  padding:8px 15px; box-shadow:var(--shadow); cursor:pointer;
  transition:transform .12s, box-shadow .12s, background .12s;
}
.si-btn:hover{transform:translate(2px,2px); box-shadow:1px 1px 0 var(--ink)}
.si-btn:active{transform:translate(3px,3px); box-shadow:0 0 0 var(--ink)}
.si-btn--primary{background:var(--yellow)}
.si-btn--danger{background:var(--danger); color:#fff; border-color:var(--danger)}
.si-btn--sm{font-size:.78rem; padding:5px 10px; box-shadow:2px 2px 0 var(--ink)}
.si-btn--ghost{background:transparent; border-color:var(--line); box-shadow:none; font-weight:700}
.si-btn--ghost:hover{background:var(--soft); transform:none; border-color:var(--ink)}
.si-btn[disabled]{opacity:.45; cursor:not-allowed; box-shadow:none; transform:none}
.si-btn-row{display:flex; gap:10px; flex-wrap:wrap}
.taxmode-bar{display:flex; align-items:center; gap:12px; flex-wrap:wrap; margin-bottom:12px}
.si-seg{display:inline-flex; border:1.5px solid var(--ink); border-radius:var(--radius); overflow:hidden}
.si-seg__btn{font-size:.8rem; font-weight:700; padding:6px 14px; background:var(--white); border:none; cursor:pointer; color:var(--sub)}
.si-seg__btn + .si-seg__btn{border-left:1.5px solid var(--ink)}
.si-seg__btn.is-active{background:var(--yellow); color:var(--ink)}

/* ===== Cards ===== */
.si-card{background:var(--white); border:1.5px solid var(--line); border-radius:var(--radius); padding:18px 20px}
.si-card + .si-card{margin-top:14px}
.si-empty{
  background:var(--soft); border:1.5px dashed var(--line); border-radius:var(--radius);
  padding:34px 20px; text-align:center; color:var(--sub); font-size:.9rem;
}

/* ===== Forms ===== */
.si-form{display:grid; gap:14px}
.si-grid-2{display:grid; grid-template-columns:1fr 1fr; gap:14px}
.si-grid-3{display:grid; grid-template-columns:repeat(3,1fr); gap:14px}
.si-field{display:flex; flex-direction:column; gap:5px; min-width:0}
.si-field > label{font-size:.8rem; font-weight:700; color:var(--sub)}
.si-field .hint{font-size:.72rem; color:var(--sub)}
.si-input,.si-select,.si-textarea{
  width:100%; background:var(--white); border:1.5px solid var(--line); border-radius:6px;
  padding:9px 11px; font-size:.9rem; color:var(--ink);
}
.si-input:focus,.si-select:focus,.si-textarea:focus{outline:none; border-color:var(--ink); box-shadow:0 0 0 3px rgba(255,224,0,.5)}
.si-textarea{resize:vertical; min-height:70px}
.si-input.right{text-align:right}
.req::after{content:"必須"; font-size:.62rem; color:var(--danger); margin-left:6px; font-weight:800; vertical-align:1px}

/* ===== Tables ===== */
.si-table-wrap{overflow-x:auto; border:1.5px solid var(--line); border-radius:var(--radius); background:var(--white)}
.si-table{width:100%; border-collapse:collapse; font-size:.86rem}
.si-table th{
  text-align:left; font-weight:800; color:var(--sub); font-size:.76rem;
  padding:10px 12px; border-bottom:1.5px solid var(--line); background:var(--soft); white-space:nowrap;
}
.si-table td{padding:10px 12px; border-bottom:1px solid var(--line); vertical-align:middle}
.si-table tr:last-child td{border-bottom:none}
.si-table tbody tr{cursor:default}
.si-table tbody tr.clickable:hover{background:var(--soft)}
.si-table .num{text-align:right; font-variant-numeric:tabular-nums; white-space:nowrap}

/* ===== Badges ===== */
.si-badge{display:inline-block; font-size:.72rem; font-weight:800; padding:2px 9px; border-radius:999px; white-space:nowrap}
.si-badge--paid{background:var(--ok-bg); color:var(--ok)}
.si-badge--unpaid{background:var(--soft); color:var(--sub); border:1px solid var(--line)}
.si-badge--overdue{background:var(--danger-bg); color:var(--danger)}
.si-badge--draft{background:#eee7f7; color:#6a4bab}
.si-badge--quote{background:#e8eef7; color:#2b5fa5}
.si-badge--invoice{background:var(--warn-bg); color:var(--warn)}
.si-badge--receipt{background:var(--ok-bg); color:var(--ok)}

/* ===== Dashboard metrics ===== */
.si-metrics{display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:12px; margin-bottom:8px}
.si-metric{background:var(--white); border:1.5px solid var(--line); border-radius:var(--radius); padding:14px 16px; position:relative; overflow:hidden}
.si-metric::before{content:"";position:absolute;left:0;top:0;width:46px;height:5px;background:var(--yellow)}
.si-metric__label{font-size:.76rem; color:var(--sub); font-weight:700}
.si-metric__value{font-size:1.5rem; font-weight:900; margin-top:4px; font-variant-numeric:tabular-nums}
.si-metric__sub{font-size:.72rem; color:var(--sub)}
.si-metric--danger .si-metric__value{color:var(--danger)}
.si-metric--danger::before{background:var(--danger)}

/* 継続請求の通知バー */
.si-notice{
  display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap;
  background:var(--warn-bg); border:2px solid var(--ink); border-radius:var(--radius);
  padding:12px 16px; margin:16px 0; box-shadow:var(--shadow);
}
.si-notice__text{font-size:.9rem; font-weight:700}

/* ===== Document builder(左フォーム / 右プレビュー) ===== */
.doc-builder{display:block; max-width:940px}
.doc-builder__preview{position:sticky; top:74px}
.preview-frame{
  background:#8a897f; border:1.5px solid var(--line); border-radius:var(--radius);
  padding:14px; overflow:auto; max-height:calc(100vh - 130px); text-align:center;
}
.preview-frame canvas{display:inline-block; max-width:100%; height:auto; box-shadow:0 4px 18px rgba(0,0,0,.3); background:#fff}
.preview-empty{color:#f4f1ea; font-size:.85rem; padding:40px 10px}

/* 明細テーブル(編集) */
.line-table{width:100%; min-width:520px; border-collapse:collapse; font-size:.84rem}
.line-table th{font-size:.72rem; color:var(--sub); font-weight:800; text-align:left; padding:6px 6px}
.line-table td{padding:4px 4px; vertical-align:top}
.line-table .si-input,.line-table .si-select{padding:7px 8px; font-size:.84rem}
.line-table .col-amount{text-align:right; font-weight:700; white-space:nowrap; font-variant-numeric:tabular-nums; padding-top:14px}
.line-del{color:var(--danger); background:none; border:none; cursor:pointer; font-size:1.1rem; line-height:1; padding:8px 4px}
.line-prod--helper{font-size:.76rem; color:var(--sub); background:var(--soft); padding:5px 8px}

/* 合計ボックス */
.totals{margin-top:12px; margin-left:auto; width:min(320px,100%); font-size:.9rem}
.totals__row{display:flex; justify-content:space-between; padding:5px 0; border-bottom:1px dashed var(--line)}
.totals__row--grand{font-size:1.15rem; font-weight:900; border-bottom:none; border-top:2px solid var(--ink); margin-top:4px; padding-top:8px}
.totals__row .num{font-variant-numeric:tabular-nums}
.stamp-note{margin-top:14px; font-size:.8rem; line-height:1.7; background:var(--warn-bg); border:1px solid var(--line); border-radius:6px; padding:9px 12px; color:#7a5b00}

/* ===== Toast ===== */
.si-toast{
  position:fixed; left:50%; bottom:26px; transform:translateX(-50%) translateY(20px);
  background:var(--ink); color:#fff; font-size:.85rem; font-weight:700; padding:11px 20px;
  border-radius:999px; opacity:0; pointer-events:none; transition:opacity .2s,transform .2s; z-index:120; box-shadow:0 6px 20px rgba(0,0,0,.3);
}
.si-toast.is-show{opacity:1; transform:translateX(-50%) translateY(0)}

/* ===== 一覧の操作ボタンの間隔 ===== */
.si-table td .si-btn + .si-btn{margin-left:7px}

/* ===== ヒントのトグル & ツールチップ ===== */
.tips-toggle{font-size:.78rem; font-weight:700; color:var(--sub); background:var(--white); border:1.5px solid var(--line); border-radius:999px; padding:5px 12px; cursor:pointer; white-space:nowrap}
.tips-toggle:hover{border-color:var(--ink); color:var(--ink)}
.tips-toggle.is-off{opacity:.6}
.si-tip{position:fixed; left:0; top:0; max-width:280px; background:var(--ink); color:#fff; font-size:.78rem; line-height:1.6; padding:8px 12px; border-radius:8px; box-shadow:0 6px 20px rgba(0,0,0,.28); opacity:0; pointer-events:none; transition:opacity .12s; z-index:200}
.si-tip.is-show{opacity:1}

/* ===== Modal(汎用: ui.js) ===== */
.si-modal-back{position:fixed; inset:0; background:rgba(17,17,17,.5); display:none; align-items:center; justify-content:center; z-index:100; padding:20px}
.si-modal-back.is-open{display:flex}
.si-modal{background:var(--white); border:2px solid var(--ink); border-radius:12px; box-shadow:8px 8px 0 rgba(17,17,17,.25); width:min(560px,100%); max-height:90vh; overflow:auto}
.si-modal--sm{width:min(420px,100%)}
.si-modal--wide{width:min(900px,100%)}
.si-modal__head{padding:16px 20px; border-bottom:1.5px solid var(--line)}
.si-modal__title{font-size:1.05rem; font-weight:900}
.si-modal__body{padding:18px 20px}
.si-modal__foot{padding:14px 20px; border-top:1.5px solid var(--line); display:flex; justify-content:flex-end; gap:10px}

/* ===== VoiceCTA ===== */
.voice-cta{max-width:1080px; margin:10px auto 0; padding:26px 24px; text-align:center}
.voice-cta__text{font-size:.9rem; color:var(--sub); line-height:1.9}
.voice-cta__text strong{color:var(--ink); background:linear-gradient(transparent 60%,var(--yellow) 60%); padding:0 2px; font-weight:800}
.voice-cta__btn{
  display:inline-block; margin-top:14px; background:var(--yellow); color:var(--ink);
  font-weight:900; font-size:.9rem; padding:12px 26px; border:2px solid var(--ink); border-radius:var(--radius); box-shadow:var(--shadow);
  transition:transform .12s,box-shadow .12s;
}
.voice-cta__btn:hover{transform:translate(2px,2px); box-shadow:1px 1px 0 var(--ink)}

/* ===== Footer ===== */
.site-footer{border-top:2px solid var(--ink); background:var(--soft); padding:26px 24px; text-align:center; margin-top:30px}
.site-footer__counter{display:flex; gap:16px; justify-content:center; flex-wrap:wrap; margin-bottom:14px}
.sf-counter{font-size:.78rem; font-weight:800; color:var(--sub); background:var(--white); border:1.5px solid var(--line); border-radius:999px; padding:4px 14px}
.site-footer__feedback{margin-bottom:14px}
.footer-feedback{font-size:.85rem; font-weight:800; color:var(--ink); border-bottom:2px solid var(--yellow)}
.site-footer__links{display:flex; gap:8px 18px; justify-content:center; flex-wrap:wrap; font-size:.8rem; color:var(--sub)}
.site-footer__links a{font-weight:700}
.site-footer__links a:hover{color:var(--ink)}
.site-footer__copy{margin-top:14px; font-size:.72rem; color:var(--sub)}

/* ===== フィードバックモーダル(既存ツールと同じ構造) ===== */
.modal-backdrop{position:fixed; inset:0; background:rgba(17,17,17,.55); display:none; align-items:center; justify-content:center; z-index:110; padding:20px}
.modal-backdrop.is-open{display:flex}
.modal{background:var(--white); border:2px solid var(--ink); border-radius:12px; box-shadow:8px 8px 0 rgba(17,17,17,.25); width:min(560px,100%); max-height:90vh; overflow:auto}
.modal-header{display:flex; align-items:center; justify-content:space-between; padding:16px 20px; border-bottom:1.5px solid var(--line)}
.modal-title{font-size:1.05rem; font-weight:900}
.modal-close{background:none; border:none; font-size:1.5rem; line-height:1; cursor:pointer; color:var(--sub)}
.modal-body{padding:18px 20px}
.modal-footer{display:flex; gap:10px; padding:14px 20px; border-top:1.5px solid var(--line)}
.tool-btn{font-size:.85rem; font-weight:800; background:var(--white); border:2px solid var(--ink); border-radius:var(--radius); padding:8px 16px; cursor:pointer; box-shadow:2px 2px 0 var(--ink)}
.tool-btn:hover{transform:translate(1px,1px); box-shadow:1px 1px 0 var(--ink)}
.feedback-intro{font-size:.9rem; margin-bottom:14px}
.feedback-block{background:var(--soft); border:1.5px solid var(--line); border-radius:var(--radius); padding:16px}
.feedback-block__title{font-weight:900; margin-bottom:8px}
.feedback-block__body{font-size:.85rem; color:var(--sub); line-height:1.8}
.feedback-cta{display:inline-block; margin-top:12px; font-weight:900; font-size:.86rem; padding:10px 20px; border:2px solid var(--ink); border-radius:var(--radius); box-shadow:2px 2px 0 var(--ink)}
.feedback-cta--primary{background:var(--yellow)}
.feedback-cta--secondary{background:var(--white)}
.feedback-divider{margin-top:16px; padding-top:14px; border-top:1px dashed var(--line); text-align:center}
.feedback-divider__text{font-size:.8rem; color:var(--sub)}

/* ===== レスポンシブ ===== */
@media (max-width:820px){
  .doc-builder{grid-template-columns:1fr}
  .doc-builder__preview{position:static}
  .si-grid-2,.si-grid-3{grid-template-columns:1fr}
}
@media (max-width:560px){
  .app-header{padding:10px 14px}
  .nav-bubble{white-space:normal; max-width:min(240px,72vw)}
  .app-main{padding:18px 14px 32px}
  .brand-sub{display:none}
}
