:root{
  /* 「たそがれ・シンプル」トンマナ：寒色の土台に、暖色の灯り */
  --bg:            #F5F8FC;
  --bg-panel:      #FFFFFF;
  --ink:           #333A4D;
  --ink-soft:      #848C9E;
  --line:          #E6EAF2;

  --need:          #E67E3C;   /* 困っています（支援がほしい） */
  --need-soft:     #FCE7D4;
  --offer:         #2E9464;   /* 私にできること（支援します） */
  --offer-soft:    #DCF1E7;

  --urgent:        #C1392B;   /* 期限が近い（1〜2日） */
  --urgent-soft:   #FBDDD8;
  --soon:          #D69A1E;   /* 期限が近い（3〜7日） */
  --soon-soft:     #FBEBCB;
  --calm:          #6E8B7A;   /* 期限に余裕 / なし */
  --calm-soft:     #E4EEE8;

  --radius: 14px;
  --shadow: 0 3px 10px rgba(51,58,77,0.08);
  font-family: "BIZ UDPGothic", sans-serif;
}
*{box-sizing:border-box;}
html,body{margin:0;padding:0;background:var(--bg);color:var(--ink);min-height:100vh;}
.app{ max-width: 980px; margin: 0 auto; padding: 20px 16px 70px; }

/* ---------- gate ---------- */
.gate{ max-width:420px; margin:70px auto; background:var(--bg-panel); border:1px solid var(--line); border-radius:20px; padding:32px 28px; text-align:center; box-shadow:var(--shadow); }
.gate .glow{ width:56px; height:56px; margin:0 auto 14px; border-radius:50%; background:radial-gradient(circle at 35% 30%, #FFE7B8, var(--need) 85%); }
.gate h1{ font-family:"Zen Maru Gothic"; font-weight:800; font-size:24px; margin:0 0 6px;}
.gate p{ font-size:13px; color:var(--ink-soft); margin-bottom:20px; line-height:1.6; }
.gate input{ width:100%; padding:12px; border:1.5px solid var(--line); border-radius:10px; font-size:15px; margin-bottom:12px; font-family:"BIZ UDPGothic"; }
.gate button{ width:100%; padding:13px; border:none; border-radius:10px; background:var(--need); color:#fff; font-family:"Zen Maru Gothic"; font-weight:700; font-size:15px; cursor:pointer; }
.gate button:hover{ filter:brightness(1.06); }
.gate .err{ color:var(--urgent); font-size:12px; margin-top:8px; min-height:16px; }

/* ---------- header ---------- */
.masthead{ display:flex; align-items:center; justify-content:space-between; padding-bottom: 16px; margin-bottom: 18px; flex-wrap: wrap; gap:10px; }
.masthead .brand-row{ display:flex; align-items:center; gap:12px; }
.masthead .glow-badge{ width:40px; height:40px; border-radius:50%; background:radial-gradient(circle at 35% 30%, #FFE7B8, var(--need) 85%); flex-shrink:0; }
.masthead .brand{ font-family:"Zen Maru Gothic"; font-weight:800; font-size: 22px; line-height:1.2; }
.masthead .brand small{ display:block; font-size:11px; font-weight:500; color:var(--ink-soft); margin-top:2px; }
.whoami{ font-size:12px; color:var(--ink-soft); text-align:right; }
.whoami b{color:var(--ink); font-weight:700;}
.whoami button{ margin-top:4px; font-size:11px; background:none; border:1px solid var(--line); color:var(--ink-soft); padding:4px 9px; border-radius:8px; cursor:pointer; }
.whoami button:hover{ border-color:var(--ink); color:var(--ink); }

/* ---------- tabs ---------- */
.tabs{ display:flex; gap:6px; margin-bottom: 18px; flex-wrap:wrap; }
.tab{ font-family:"Zen Maru Gothic"; font-weight:700; font-size:13.5px; padding:9px 16px; cursor:pointer; color:var(--ink-soft); border-radius: 20px; display:flex; align-items:center; gap:6px; background:#fff; border:1.5px solid var(--line); }
.tab .n{ font-size:10px; background:var(--need); color:#fff; border-radius:10px; padding:1px 6px; min-width:16px; text-align:center; }
.tab.active{ color:#fff; background:var(--need); border-color:var(--need); }
.tab.active .n{ background:rgba(255,255,255,0.3); }
.tab:hover:not(.active){ border-color:var(--need); color:var(--need); }

.panel{ background:var(--bg-panel); border:1px solid var(--line); border-radius: var(--radius); padding:24px; box-shadow:var(--shadow); }
.panel h2{ font-family:"Zen Maru Gothic"; font-size:19px; margin:0 0 4px; }
.panel .sub{ font-size:12px; color:var(--ink-soft); margin:0 0 18px; line-height:1.6;}

/* ---------- TOP hero & feed ---------- */
.hero{ background: linear-gradient(135deg, #FFE9C8 0%, #FFF6EA 60%); border:1px solid var(--line); border-radius: var(--radius); padding:26px 24px; margin-bottom:22px; box-shadow:var(--shadow); }
.hero h1{ font-family:"Zen Maru Gothic"; font-weight:800; font-size:22px; margin:0 0 8px; }
.hero p{ font-size:13px; color:var(--ink-soft); margin:0; line-height:1.7; max-width:520px; }
.hero .cta-row{ margin-top:16px; display:flex; gap:10px; flex-wrap:wrap; }
.hero .cta{ font-family:"Zen Maru Gothic"; font-weight:700; font-size:13px; padding:10px 18px; border-radius:20px; cursor:pointer; border:none; }
.hero .cta.need{ background:var(--need); color:#fff; }
.hero .cta.offer{ background:var(--offer); color:#fff; }

.need-feed{ display:grid; grid-template-columns:repeat(3,1fr); gap:14px; align-items:stretch; }
.need-card{ position:relative; background:#fff; border:1px solid var(--line); border-radius: var(--radius); padding:18px; box-shadow:var(--shadow); display:flex; flex-direction:column; }
.need-card .kind-glow{ width:38px; height:38px; border-radius:50%; display:flex; align-items:center; justify-content:center; font-size:18px; background:var(--need-soft); margin-bottom:10px; }
.need-card .badge-deadline{ position:absolute; top:18px; right:18px; }
.need-card .top-row{ padding-right:76px; }
.need-card h3{ font-family:"Zen Maru Gothic"; font-size:16.5px; margin:0 0 5px; }
.need-card .cat{ font-size:11.5px; color:var(--ink-soft); margin-bottom:6px; }
.need-card .note{ font-size:12.5px; color:var(--ink-soft); margin-top:6px; line-height:1.6; }
.need-card .meta-row{ display:flex; gap:10px; margin-top:10px; align-items:center; flex-wrap:wrap; font-size:11.5px; color:var(--ink-soft); }
.badge-deadline{ font-family:"Zen Maru Gothic"; font-weight:700; font-size:12px; padding:4px 11px; border-radius:14px; white-space:nowrap; }
.badge-deadline.urgent{ background:var(--urgent-soft); color:var(--urgent); }
.badge-deadline.soon{ background:var(--soon-soft); color:var(--soon); }
.badge-deadline.calm{ background:var(--calm-soft); color:var(--calm); }
.help-btn{ font-family:"Zen Maru Gothic"; font-weight:700; font-size:12.5px; padding:9px 16px; border-radius:18px; border:none; background:var(--offer); color:#fff; cursor:pointer; white-space:nowrap; }
.help-btn:hover{ filter:brightness(1.07); }
.help-btn:disabled{ opacity:0.5; cursor:default; }

/* ---------- form ---------- */
.type-switch{ display:flex; gap:8px; margin-bottom:18px; }
.type-btn{ flex:1; font-family:"Zen Maru Gothic"; font-weight:700; font-size:13.5px; padding:13px 8px; border-radius:14px; cursor:pointer; text-align:center; border:2px solid var(--line); background:#fff; color:var(--ink-soft); line-height:1.4; }
.type-btn.need.active{ border-color:var(--need); background:var(--need-soft); color:var(--need); }
.type-btn.offer.active{ border-color:var(--offer); background:var(--offer-soft); color:var(--offer); }

.kind-switch{ display:flex; gap:8px; margin-bottom:16px; }
.kind-btn{ flex:1; font-size:13px; padding:10px 6px; border-radius:12px; cursor:pointer; text-align:center; border:1.5px solid var(--line); background:#fff; color:var(--ink-soft); }
.kind-btn.active{ border-color:var(--ink); background:var(--ink); color:#fff; }

.grid2{ display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.field{ margin-bottom:14px; }
.field label{ display:block; font-size:12.5px; color:var(--ink-soft); margin-bottom:5px; font-weight:700;}
.field input, .field select, .field textarea{ width:100%; font-family:"BIZ UDPGothic"; font-size:14px; padding:10px 11px; border:1.5px solid var(--line); border-radius:10px; background:#fff; color:var(--ink); }
.field textarea{ resize:vertical; min-height:64px; }
.loc-row{ display:flex; gap:8px; align-items:flex-end; flex-wrap:wrap; }
.loc-row .field{ flex:1; margin-bottom:0; min-width:120px; }
.geo-btn{ font-size:12.5px; white-space:nowrap; padding:10px 14px; border:none; background:var(--ink); color:#fff; border-radius:10px; cursor:pointer; height:41px; font-family:"Zen Maru Gothic"; font-weight:700; }
.geo-btn:hover{ opacity:0.85; }
.geo-status{ font-size:11.5px; color:var(--offer); margin:8px 0 12px; min-height:14px;}
.map-hint{ font-size:11.5px; color:var(--ink-soft); margin-bottom:6px; }
.loc-map{ width:100%; height:220px; border-radius:10px; border:1.5px solid var(--line); margin-bottom:14px; cursor:pointer; }

.submit-btn{ font-family:"Zen Maru Gothic"; font-weight:700; font-size:15px; padding:13px 24px; border:none; border-radius:22px; cursor:pointer; color:#fff; }
.submit-btn.need{ background:var(--need); }
.submit-btn.offer{ background:var(--offer); }
.submit-btn:hover{ filter:brightness(1.08); }
.submit-btn:disabled{ opacity:0.5; cursor:not-allowed; }

/* ---------- listing tag list (own registrations) ---------- */
.tag-list{ display:grid; grid-template-columns:repeat(auto-fill,minmax(230px,1fr)); gap:14px; margin-top:16px; }
.tag{ position:relative; background:#fff; border:1px solid var(--line); border-radius: var(--radius); padding:16px 14px 12px 54px; box-shadow:var(--shadow); }
.tag .kind-glow{ position:absolute; left:12px; top:14px; width:30px; height:30px; border-radius:50%; display:flex; align-items:center; justify-content:center; font-size:14px; }
.tag.need .kind-glow{ background:var(--need-soft); }
.tag.offer .kind-glow{ background:var(--offer-soft); }
.tag .kind{ display:inline-block; font-family:"Zen Maru Gothic"; font-weight:700; font-size:10.5px; letter-spacing:0.02em; padding:2px 8px; border-radius:10px; margin-bottom:7px; }
.tag.need .kind{ background:var(--need-soft); color:var(--need); }
.tag.offer .kind{ background:var(--offer-soft); color:var(--offer); }
.tag h3{ font-family:"Zen Maru Gothic"; font-size:15.5px; margin:0 0 5px; }
.tag .meta{ font-size:11.5px; color:var(--ink-soft); line-height:1.7; }
.tag .note{ font-size:11.5px; color:var(--ink-soft); margin-top:5px; font-style:italic; }
.tag .del{ position:absolute; top:12px; right:12px; font-size:10px; color:var(--ink-soft); background:none; border:1px solid var(--line); border-radius:8px; padding:2px 7px; cursor:pointer; }
.empty{ font-size:12.5px; color:var(--ink-soft); padding:22px 0; text-align:center; border:1.5px dashed var(--line); border-radius:var(--radius); }

/* ---------- connections ---------- */
.conn-card{ position:relative; display:flex; gap:14px; align-items:stretch; background:#fff; border:1px solid var(--line); border-radius: var(--radius); padding:16px; margin-bottom:12px; box-shadow:var(--shadow); flex-wrap:wrap; }
.conn-card .side{ flex:1; min-width:140px; }
.conn-card .side .kind{ font-family:"Zen Maru Gothic"; font-weight:700; font-size:10.5px; }
.conn-card .side.need .kind{ color:var(--need); }
.conn-card .side.offer .kind{ color:var(--offer); }
.conn-card .side h4{ font-family:"Zen Maru Gothic"; font-size:14.5px; margin:3px 0; }
.conn-card .side .m{ font-size:11px; color:var(--ink-soft); }
.conn-card .side .note{ font-size:11.5px; color:var(--ink-soft); margin-top:5px; line-height:1.6; }
.conn-card .mid{ display:flex; flex-direction:column; align-items:center; justify-content:center; font-size:11px; color:var(--ink-soft); width:100px; flex-shrink:0; text-align:center; }
.conn-card .mid .dist{ font-family:"Zen Maru Gothic"; font-size:15px; font-weight:700; color:var(--ink); }
.conn-card .stamp{ position:absolute; top:10px; right:14px; background:var(--offer); color:#fff; font-family:"Zen Maru Gothic"; font-weight:700; font-size:10.5px; padding:3px 12px; border-radius:12px; }
.conn-actions{ display:flex; flex-direction:column; gap:6px; justify-content:center; flex-shrink:0; }
.btn-sm{ font-size:11.5px; padding:8px 14px; border-radius:14px; border:1.5px solid var(--ink); background:#fff; color:var(--ink); cursor:pointer; white-space:nowrap; font-family:"Zen Maru Gothic"; font-weight:700; }
.btn-sm.primary{ background:var(--ink); color:#fff; }
.btn-sm:hover{ opacity:0.8; }

/* ---------- chat ---------- */
.chat-layout{ display:grid; grid-template-columns: 220px 1fr; gap:16px; min-height:420px; }
.chat-threads{ border-right:1px solid var(--line); padding-right:14px; }
.thread-item{ padding:10px 9px; border-radius:12px; cursor:pointer; margin-bottom:5px; font-size:12.5px; border:1.5px solid transparent; }
.thread-item.active{ background:var(--need-soft); border-color:var(--need); }
.thread-item .t-title{ font-weight:700; font-family:"Zen Maru Gothic"; }
.thread-item .t-sub{ font-size:10.5px; color:var(--ink-soft); }
.chat-body{ display:flex; flex-direction:column; }
.chat-summary{ display:flex; gap:12px; padding-bottom:12px; margin-bottom:10px; border-bottom:1.5px solid var(--line); flex-wrap:wrap; }
.chat-summary .cs-side{ flex:1; min-width:160px; }
.chat-summary .cs-side .kind{ font-family:"Zen Maru Gothic"; font-weight:700; font-size:10.5px; }
.chat-summary .cs-side.need .kind{ color:var(--need); }
.chat-summary .cs-side.offer .kind{ color:var(--offer); }
.chat-summary .cs-side h4{ font-family:"Zen Maru Gothic"; font-size:13.5px; margin:3px 0; }
.chat-summary .cs-side .m{ font-size:10.5px; color:var(--ink-soft); }
.chat-summary .cs-side .note{ font-size:11px; color:var(--ink-soft); margin-top:4px; line-height:1.6; }
.chat-msgs{ flex:1; overflow-y:auto; max-height:360px; padding:6px 4px; display:flex; flex-direction:column; gap:8px; }
.msg{ max-width:75%; padding:9px 13px; border-radius:14px; font-size:13px; line-height:1.5; }
.msg.me{ align-self:flex-end; background:var(--need); color:#fff; border-bottom-right-radius:3px; }
.msg.them{ align-self:flex-start; background:var(--bg); border:1px solid var(--line); border-bottom-left-radius:3px; }
.msg .m-meta{ font-size:9.5px; opacity:0.65; margin-top:3px; }
.match-controls{ margin-top:10px; padding:9px 12px; border-radius:12px; font-size:11.5px; text-align:center; }
.match-controls.hint{ background:var(--bg); color:var(--ink-soft); border:1px dashed var(--line); }
.match-controls.ready{ background:none; padding:0; }
.match-controls.ready .btn-sm{ width:100%; }
.match-controls.done{ background:var(--offer-soft); color:var(--offer); font-weight:700; font-family:"Zen Maru Gothic"; font-size:12.5px; }
.chat-input{ display:flex; gap:8px; margin-top:10px; }
.chat-input input{ flex:1; padding:11px; border:1.5px solid var(--line); border-radius:20px; font-family:"BIZ UDPGothic"; font-size:13.5px;}
.chat-input button{ padding:0 20px; border:none; background:var(--need); color:#fff; border-radius:20px; cursor:pointer; font-family:"Zen Maru Gothic"; font-weight:700; }

/* ---------- coordinator (admin) ---------- */
.stat-row{ display:grid; grid-template-columns:repeat(4,1fr); gap:12px; margin-bottom:20px; }
.stat{ border:1px solid var(--line); border-radius: var(--radius); padding:14px; background:#fff; }
.stat .v{ font-family:"Zen Maru Gothic"; font-size:23px; font-weight:800; color:var(--ink); }
.stat .l{ font-size:11px; color:var(--ink-soft); margin-top:2px; }
.ledger{ width:100%; border-collapse:collapse; font-size:12.5px; }
.ledger th{ text-align:left; font-size:10.5px; color:var(--ink-soft); border-bottom:2px solid var(--ink); padding:7px 8px; font-weight:700;}
.ledger td{ padding:8px; border-bottom:1px solid var(--line); }
.ledger tr:hover td{ background:var(--bg); }
.pill{ font-size:10px; padding:2px 9px; border-radius:10px; font-weight:700; }
.pill.open{ background:var(--offer-soft); color:var(--offer); }
.pill.connected{ background:var(--need-soft); color:var(--need); }
.section-title{ font-family:"Zen Maru Gothic"; font-weight:700; font-size:14.5px; margin:26px 0 12px; display:flex; align-items:center; gap:8px;}
.section-title .rule{ flex:1; height:1px; background:var(--line); }
.export-btn{ font-size:11px; padding:7px 13px; border:1.5px solid var(--ink); background:#fff; border-radius:14px; cursor:pointer; font-family:"Zen Maru Gothic"; font-weight:700; }
.table-wrap{ overflow-x:auto; }
.content-cell{ position:relative; cursor:help; border-bottom:1px dotted var(--ink-soft); }
.dup-badge{ display:inline-block; font-size:10px; font-weight:700; font-family:"Zen Maru Gothic"; color:var(--soon); background:var(--soon-soft); border-radius:8px; padding:1px 7px; white-space:nowrap; margin-left:2px; cursor:help; }
.content-popover{
  display:none; position:absolute; left:0; top:calc(100% + 6px); z-index:20;
  width:240px; background:#fff; color:var(--ink); border:1.5px solid var(--line); border-radius:10px;
  box-shadow:var(--shadow); padding:10px 12px; font-size:11.5px; line-height:1.6; white-space:normal;
}
.content-cell:hover .content-popover, .content-cell:focus .content-popover{ display:block; }
.content-popover .cp-title{ font-family:"Zen Maru Gothic"; font-weight:700; font-size:12.5px; margin-bottom:6px; }
.content-popover .cp-row{ color:var(--ink-soft); }
.bar-chart{ display:flex; flex-direction:column; gap:9px; }
.bar-row{ display:grid; grid-template-columns:70px 1fr 34px; gap:8px; align-items:center; font-size:12px; }
.bar-track{ height:14px; background:var(--bg); border-radius:8px; overflow:hidden; }
.bar-fill{ height:100%; background:var(--offer); }

.connector-tool{ background:var(--bg); border:1.5px dashed var(--line); border-radius:var(--radius); padding:16px; margin-bottom:10px; }
.connector-tool .cg-title{ font-family:"Zen Maru Gothic"; font-weight:700; font-size:13px; margin-bottom:10px; display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.connector-tool .cg-count{ font-family:"BIZ UDPGothic"; font-weight:400; font-size:11px; color:var(--ink-soft); }
.connector-tool .row{ display:flex; gap:10px; align-items:flex-end; flex-wrap:wrap; }
.connector-tool .field{ flex:1; min-width:200px; margin-bottom:0; }
.connector-tool select{ width:100%; padding:10px; border:1.5px solid var(--line); border-radius:10px; font-family:"BIZ UDPGothic"; }
.connector-tool button{ font-family:"Zen Maru Gothic"; font-weight:700; font-size:13px; padding:11px 20px; border:none; border-radius:14px; background:var(--ink); color:#fff; cursor:pointer; height:41px; }

.admin-section span:first-child{ color:var(--urgent); }
.admin-gate, .admin-report{ background:var(--need-soft); border:1.5px dashed var(--need); border-radius:var(--radius); padding:16px; margin-bottom:16px; }
.admin-gate .row{ display:flex; gap:10px; margin-top:8px; flex-wrap:wrap; }
.admin-gate input{ flex:1; min-width:180px; padding:10px 12px; border:1.5px solid var(--line); border-radius:10px; font-family:"BIZ UDPGothic"; }
.admin-gate button, .admin-report > button{ font-family:"Zen Maru Gothic"; font-weight:700; font-size:13px; padding:11px 20px; border:none; border-radius:14px; background:var(--ink); color:#fff; cursor:pointer; }
.admin-report #reportResult{ margin-top:14px; }
.admin-chat-box{ background:#fff; border:1.5px solid var(--line); border-radius:var(--radius); padding:14px; position:relative; }
.admin-chat-box .btn-sm{ position:absolute; top:14px; right:14px; }
.admin-chat-box .cp-title{ font-family:"Zen Maru Gothic"; font-weight:700; font-size:13.5px; margin-bottom:10px; padding-right:70px; }
.admin-chat-msgs{ max-height:320px; }

@media (max-width:900px){
  .need-feed{ grid-template-columns:repeat(2,1fr); }
}
@media (max-width:640px){
  .grid2{ grid-template-columns:1fr; }
  .stat-row{ grid-template-columns:repeat(2,1fr); }
  .chat-layout{ grid-template-columns:1fr; }
  .chat-threads{ border-right:none; border-bottom:1px solid var(--line); padding-right:0; padding-bottom:10px; }
  .conn-card{ flex-direction:column; }
  .chat-summary{ flex-direction:column; gap:10px; }
  .need-feed{ grid-template-columns:1fr; }
}

/* ---------- 補助金ガイド ---------- */
.subsidy-root{ font-size:14.5px; line-height:1.75; }
.sb-hero h2{ font-family:"Zen Maru Gothic"; font-size:20px; margin:0 0 4px; }
.sb-consult{ background:var(--soon-soft); border:1px solid #EBCB85; border-radius:12px; padding:12px 14px; font-size:13.5px; margin:0 0 12px; }
.sb-consult .sb-note{ margin-top:6px; padding-top:6px; border-top:1px dashed #D9B45C; }
.sb-links{ display:flex; flex-wrap:wrap; gap:8px; margin-bottom:8px; }
.sb-linkbtn{ display:inline-block; padding:9px 16px; border-radius:20px; border:1.5px solid var(--ink); color:var(--ink); background:#fff; font-family:"Zen Maru Gothic"; font-weight:700; font-size:13px; text-decoration:none; }
.sb-linkbtn.off{ border-color:var(--line); color:var(--ink-soft); }
.sb-fine{ font-size:12px; color:var(--ink-soft); line-height:1.6; }
.sb-nav{ display:flex; gap:6px; margin:14px 0 18px; flex-wrap:wrap; }
.sb-navbtn{ flex:1 1 140px; display:flex; align-items:center; justify-content:center; gap:8px; padding:11px 10px; border:1.5px solid var(--line); border-radius:12px; background:#fff; color:var(--ink); font-family:"Zen Maru Gothic"; font-weight:700; font-size:14px; cursor:pointer; }
.sb-navbtn span{ display:inline-flex; width:22px; height:22px; align-items:center; justify-content:center; border-radius:50%; background:var(--line); font-size:12px; }
.sb-navbtn.active{ background:var(--ink); border-color:var(--ink); color:#fff; }
.sb-navbtn.active span{ background:var(--need); color:#fff; }
.sb-btn{ display:inline-block; padding:10px 18px; border-radius:20px; border:1.5px solid var(--ink); background:var(--ink); color:#fff; font-family:"Zen Maru Gothic"; font-weight:700; font-size:13.5px; cursor:pointer; margin:2px 0; }
.sb-btn.ghost{ background:#fff; color:var(--ink); }
.sb-btn.danger{ background:#fff; color:var(--urgent); border-color:var(--urgent); }
.sb-btn:disabled{ opacity:.35; cursor:default; }
.sb-cta{ margin:14px 0 0; }
.sb-sec{ border:1px solid var(--line); border-radius:12px; margin:0 0 10px; background:#fff; }
.sb-sec>summary{ cursor:pointer; padding:13px 16px; font-family:"Zen Maru Gothic"; font-weight:700; font-size:15px; list-style:none; }
.sb-sec>summary::-webkit-details-marker{ display:none; }
.sb-sec>summary::before{ content:"＋"; display:inline-block; width:1.4em; color:var(--need); }
.sb-sec[open]>summary::before{ content:"－"; }
.sb-sec-body{ padding:2px 16px 14px; }
.sb-sec-body ul, .sb-sec-body ol{ padding-left:1.3em; margin:6px 0; }
.sb-admin{ border-color:var(--need); }
.sb-cards{ display:grid; grid-template-columns:repeat(3,1fr); gap:10px; margin:6px 0 12px; }
.sb-card{ border:1px solid var(--line); border-radius:12px; padding:12px 14px; background:var(--bg); }
.sb-card h4{ margin:0 0 2px; font-family:"Zen Maru Gothic"; font-size:14px; }
.sb-card p{ margin:6px 0 0; font-size:13px; }
.sb-big{ font-family:"Zen Maru Gothic"; font-weight:700; font-size:16px; color:var(--need); }
.sb-h{ font-family:"Zen Maru Gothic"; font-size:14px; margin:16px 0 4px; padding-left:8px; border-left:4px solid var(--need); }
.sb-table{ width:100%; border-collapse:collapse; font-size:13.5px; margin:8px 0; }
.sb-table th, .sb-table td{ border:1px solid var(--line); padding:7px 9px; text-align:left; vertical-align:top; }
.sb-table thead th, .sb-table tr>th:first-child{ background:var(--bg); font-weight:700; }
.sb-table .sb-r{ text-align:right; white-space:nowrap; }
.sb-hit td{ background:var(--offer-soft); font-weight:700; }
.sb-sum td{ background:var(--bg); font-weight:700; }
.sb-table input, .sb-table select{ width:100%; font-size:14px; padding:7px 8px; border:1.5px solid var(--line); border-radius:8px; background:#fff; color:var(--ink); font-family:inherit; }
.sb-budget, .sb-roster, .sb-sched{ display:block; overflow-x:auto; }
.sb-budget td:nth-child(2){ min-width:120px; }
.sb-budget td:nth-child(3){ min-width:180px; }
.sb-roster input{ min-width:110px; }
.sb-roster td:nth-child(3) input{ min-width:180px; }
.sb-x{ border:none; background:none; color:var(--urgent); font-size:16px; cursor:pointer; }
.sb-alert{ border-radius:10px; padding:10px 14px; margin:10px 0; font-size:13.5px; border:1px solid var(--line); }
.sb-alert ul{ margin:4px 0 0; padding-left:1.2em; }
.sb-alert.info{ background:#EAF1FB; border-color:#C9DAF2; }
.sb-alert.warn{ background:var(--soon-soft); border-color:#EBCB85; }
.sb-alert.err{ background:var(--urgent-soft); border-color:#EDA79E; }
.sb-alert.ok{ background:var(--offer-soft); border-color:#A9D9C0; }
.sb-flow{ list-style:none; padding:0!important; counter-reset:f; }
.sb-flow li{ counter-increment:f; position:relative; padding:4px 0 12px 44px; }
.sb-flow li::before{ content:counter(f); position:absolute; left:0; top:2px; width:30px; height:30px; border-radius:50%; background:var(--need); color:#fff; font-weight:700; text-align:center; line-height:30px; }
.sb-flow li::after{ content:""; position:absolute; left:14px; top:34px; bottom:0; width:2px; background:var(--line); }
.sb-flow li:last-child::after{ display:none; }
.sb-flow li b, .sb-flow li span{ display:block; }
.sb-flow li span{ font-size:13px; color:var(--ink-soft); }
.sb-gloss dt{ font-weight:700; margin-top:8px; }
.sb-gloss dd{ margin:0; font-size:13.5px; color:var(--ink-soft); }
.sb-help{ font-size:12px; color:var(--ink-soft); font-weight:400; line-height:1.6; margin:0 0 5px; }
.sb-req{ display:inline-block; margin-left:6px; padding:0 6px; border-radius:6px; background:var(--urgent); color:#fff; font-size:10.5px; font-weight:700; vertical-align:1px; }
.sb-check, .sb-radio{ display:flex; gap:10px; align-items:flex-start; padding:8px 10px; margin:4px 0; border:1px solid var(--line); border-radius:10px; cursor:pointer; background:#fff; }
.sb-check input, .sb-radio input{ margin-top:5px; width:18px; height:18px; flex:none; }
.sb-check em{ display:block; font-style:normal; font-size:12px; color:var(--ink-soft); }
.sb-radios{ display:flex; flex-wrap:wrap; gap:8px; }
.sb-radio{ flex:1 1 180px; }
.sb-inline{ background:var(--bg); border-radius:10px; padding:8px 12px; margin:6px 0 14px; font-size:13.5px; }
.sb-inline.warn{ background:var(--soon-soft); }
.sb-simform{ max-width:560px; }
.sb-result{ margin-top:6px; }
.sb-total{ display:flex; justify-content:space-between; align-items:baseline; flex-wrap:wrap; gap:6px; background:var(--offer-soft); border-radius:12px; padding:12px 16px; margin:12px 0; }
.sb-total span{ font-weight:700; }
.sb-total b{ font-family:"Zen Maru Gothic"; font-size:24px; color:var(--offer); }
.sb-chips{ display:flex; gap:4px; overflow-x:auto; padding-bottom:6px; margin-bottom:8px; }
.sb-chip{ flex:none; display:flex; align-items:center; gap:4px; padding:6px 10px; border:1.5px solid var(--line); border-radius:16px; background:#fff; font-size:12.5px; cursor:pointer; color:var(--ink-soft); font-family:inherit; }
.sb-chip span{ font-weight:700; }
.sb-chip.done{ border-color:var(--offer); color:var(--offer); }
.sb-chip.active{ background:var(--ink); border-color:var(--ink); color:#fff; }
.sb-stepno{ font-size:12px; color:var(--need); font-weight:700; }
.sb-stephead h3{ font-family:"Zen Maru Gothic"; font-size:18px; margin:0 0 10px; }
.sb-wizfoot{ display:flex; align-items:center; justify-content:space-between; gap:8px; flex-wrap:wrap; margin-top:20px; padding-top:14px; border-top:1px solid var(--line); }
.sb-quick{ background:var(--bg); border-radius:10px; padding:10px 12px; margin:10px 0; }
.sb-quickrow{ display:flex; flex-wrap:wrap; gap:8px; align-items:center; margin-top:6px; }
.sb-quickrow input, .sb-quickrow select{ padding:7px 8px; border:1.5px solid var(--line); border-radius:8px; font-family:inherit; font-size:14px; }
.sb-quickrow input{ flex:1 1 200px; }
.sb-docs{ list-style:none; padding:0; margin:6px 0; }
.sb-docs li{ display:flex; gap:10px; align-items:center; padding:7px 10px; border:1px solid var(--line); border-radius:8px; margin:4px 0; font-size:13.5px; }
.sb-docs li span{ flex:none; font-size:11.5px; font-weight:700; padding:2px 8px; border-radius:10px; }
.sb-docs li.ok span{ background:var(--offer-soft); color:var(--offer); }
.sb-docs li.todo span{ background:var(--urgent-soft); color:var(--urgent); }
.sb-docs li.manual span{ background:var(--soon-soft); color:#8A6512; }
.sb-jump{ border:1px solid var(--ink); background:#fff; border-radius:10px; padding:0 8px; font-size:11.5px; cursor:pointer; font-family:inherit; }
.sb-actions{ display:flex; flex-wrap:wrap; gap:8px; margin:8px 0; }
.sb-file{ cursor:pointer; }
@media (max-width:640px){
  .sb-cards{ grid-template-columns:1fr; }
  .sb-wizfoot .sb-fine{ order:3; width:100%; text-align:center; }
}

/* ---------- 書類プレビュー・印刷 ---------- */
#subsidyPrint{ display:none; }
body.sb-preview #subsidyPrint{ display:block; position:fixed; inset:0; z-index:1000; overflow:auto; background:#8b93a5; padding:0 0 40px; }
.ps-toolbar{ position:sticky; top:0; z-index:2; display:flex; flex-wrap:wrap; gap:8px; align-items:center; padding:10px 16px; background:#fff; border-bottom:1px solid var(--line); }
.ps-toolbar span{ flex:1 1 200px; font-size:12px; color:var(--ink-soft); }
.ps-page{ background:#fff; color:#000; width:210mm; max-width:100%; min-height:297mm; margin:14px auto; padding:16mm; font-family:"BIZ UDPMincho","MS PMincho",serif; font-size:11pt; line-height:1.7; box-shadow:0 2px 10px rgba(0,0,0,.3); }
.ps-no{ font-size:10pt; }
.ps-right{ text-align:right; margin:6px 0; }
.ps-center{ text-align:center; margin:8px 0; }
.ps-big{ font-size:12pt; }
.ps-to{ font-size:12pt; margin:4px 0 8px; }
.ps-sign{ margin:8px 0 8px 40%; font-size:10.5pt; }
.ps-t1{ text-align:center; font-size:11pt; margin-top:10px; }
.ps-t2{ text-align:center; font-size:15pt; font-weight:700; letter-spacing:.2em; margin:2px 0 10px; }
.ps-body{ text-indent:1em; }
.ps-h{ font-weight:700; margin:12px 0 4px; }
.ps-table{ width:100%; border-collapse:collapse; margin:4px 0 8px; font-size:10pt; }
.ps-table th, .ps-table td{ border:1px solid #000; padding:4px 7px; vertical-align:top; text-align:left; }
.ps-table th{ background:#f0f0f0; width:24%; font-weight:700; }
.ps-sched th, .ps-roster th{ width:auto; }
.ps-r{ text-align:right; white-space:nowrap; }
.ps-sum td{ font-weight:700; background:#f5f5f5; }
.ps-small{ font-size:9pt; }
.ps-items{ margin:0; padding-left:1.4em; }
.ps-sub{ margin-bottom:6px; }
.ps-dot{ border:0; border-top:1px dotted #666; margin:6px 0; }
.ps-list, .ps-pledge{ margin:4px 0; padding-left:1.4em; }
.ps-bylaws h5{ margin:8px 0 0; font-size:10.5pt; }
.ps-bylaws p{ margin:0 0 4px; font-size:10pt; }
@media print{
  @page{ size:A4; margin:0; }
  body.sb-preview #root{ display:none!important; }
  body.sb-preview{ background:#fff; }
  body.sb-preview #subsidyPrint{ position:static; background:#fff; overflow:visible; padding:0; }
  .ps-toolbar{ display:none!important; }
  .ps-page{ margin:0; box-shadow:none; width:auto; min-height:0; height:297mm; page-break-after:always; break-after:page; overflow:hidden; }
  .ps-page:last-child{ page-break-after:auto; break-after:auto; }
}

/* ---------- 校区ダッシュボード（コーディネーター画面・管理者） ---------- */
.dd-warn{ background:var(--soon-soft); border:1px solid #EBCB85; border-radius:10px; padding:10px 14px; font-size:13px; margin:0 0 12px; }
.dd-legend{ display:flex; flex-wrap:wrap; gap:6px; margin:8px 0; }
.dd-chip{ display:inline-block; padding:2px 10px; border-radius:10px; font-size:11.5px; font-weight:700; white-space:nowrap; }
.dd-grid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(92px,1fr)); gap:6px; margin:8px 0 14px; }
.dd-tile{ border-radius:10px; padding:7px 6px; text-align:center; font-size:12.5px; font-weight:700; line-height:1.3; }
.dd-tile small{ display:block; font-weight:400; font-size:10.5px; opacity:.85; }
.st-unknown{ background:#EEF0F4; color:var(--ink-soft); }
.st-need{ background:var(--urgent-soft); color:var(--urgent); }
.st-blank{ background:var(--soon-soft); color:#8A6512; }
.st-short{ background:var(--need-soft); color:#B35A1F; }
.st-ok{ background:var(--offer-soft); color:var(--offer); }
.dd-input{ width:72px; padding:5px 6px; border:1.5px solid var(--line); border-radius:8px; font-size:13px; font-family:inherit; }
.listing-district{ font-size:12px; padding:4px 6px; border:1.5px solid var(--line); border-radius:8px; max-width:120px; font-family:inherit; }

/* ---------- 実証KPI（コーディネーター画面・管理者） ---------- */
.kpi-cards{ display:grid; grid-template-columns:repeat(3,1fr); gap:10px; margin:6px 0 14px; }
.kpi-card{ border:1px solid var(--line); border-radius:12px; padding:12px 14px; background:#fff; }
.kpi-h{ font-family:"Zen Maru Gothic"; font-weight:700; font-size:13px; color:var(--ink-soft); }
.kpi-big{ font-family:"Zen Maru Gothic"; font-weight:800; font-size:30px; line-height:1.3; }
.kpi-big small{ font-size:12px; font-weight:700; color:var(--ink-soft); margin-left:4px; }
.kpi-bar{ height:8px; border-radius:6px; background:var(--line); margin:6px 0 8px; overflow:hidden; }
.kpi-fill{ height:100%; border-radius:6px; background:var(--need); }
.kpi-fill.ok{ background:var(--offer); }
.kpi-sub{ font-size:12px; color:var(--ink-soft); line-height:1.7; }
.kpi-warn{ margin-top:6px; padding:6px 10px; border-radius:8px; background:var(--soon-soft); font-size:12px; }
.kpi-form{ display:flex; flex-wrap:wrap; gap:10px; align-items:flex-end; margin:6px 0 10px; }
.kpi-form label{ display:flex; flex-direction:column; gap:3px; font-size:12px; color:var(--ink-soft); font-weight:700; }
.kpi-form .kpi-wide{ flex:1 1 280px; }
.kpi-in{ padding:7px 8px; border:1.5px solid var(--line); border-radius:8px; font-size:13.5px; font-family:inherit; background:#fff; color:var(--ink); }
.kpi-form input[type=number]{ width:120px; }
.kpi-defs{ margin-top:14px; font-size:13px; }
.kpi-defs summary{ cursor:pointer; font-weight:700; }
.dd-sum td{ font-weight:700; background:var(--bg); }
@media (max-width:760px){ .kpi-cards{ grid-template-columns:1fr; } }
