:root {
  --bg:#f4f6f8;
  --panel:#ffffff;
  --text:#1e2933;
  --muted:#687684;
  --line:#dde3e8;
  --accent:#304a61;
  --accent-soft:#e8eef3;
  --danger:#a93232;
  --danger-soft:#faecec;
  --warn:#9a641b;
  --warn-soft:#fff4df;
  --ok:#2f6b4f;
  --ok-soft:#eaf5ef;
  --shadow:0 8px 24px rgba(31,45,61,.08);
  --radius:14px;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans JP","Yu Gothic UI",sans-serif}
button,input,select,textarea{font:inherit}
button{cursor:pointer}
a{color:#245c89}
.app-shell{min-height:100vh;display:grid;grid-template-columns:245px 1fr}
.sidebar{background:#213242;color:#eef4f8;padding:22px 14px;position:sticky;top:0;height:100vh;overflow:auto}
.brand{padding:4px 10px 22px;border-bottom:1px solid rgba(255,255,255,.14);margin-bottom:14px}
.brand h1{font-size:18px;margin:0 0 6px}.brand small{opacity:.72}
.nav-btn{width:100%;border:0;background:transparent;color:#dce6ee;text-align:left;padding:11px 12px;border-radius:9px;margin:2px 0}
.nav-btn:hover,.nav-btn.active{background:rgba(255,255,255,.11);color:#fff}
.nav-section{font-size:11px;text-transform:uppercase;letter-spacing:.08em;opacity:.55;padding:16px 12px 6px}
.sidebar-footer{margin-top:22px;padding:14px 10px;border-top:1px solid rgba(255,255,255,.14);font-size:12px;line-height:1.6;color:#bdcbd6}
.main{padding:28px;max-width:1400px;width:100%;margin:0 auto}
.page-head{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;margin-bottom:22px}
.page-head h2{font-size:26px;margin:0 0 7px}.page-head p{margin:0;color:var(--muted);line-height:1.6}
.badge{display:inline-flex;align-items:center;gap:5px;padding:4px 9px;border-radius:999px;font-size:12px;font-weight:650;background:var(--accent-soft);color:var(--accent)}
.badge.danger{background:var(--danger-soft);color:var(--danger)}.badge.warn{background:var(--warn-soft);color:var(--warn)}.badge.ok{background:var(--ok-soft);color:var(--ok)}
.grid{display:grid;gap:16px}.grid.cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid.cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid.cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}
.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px}
.card h3{font-size:16px;margin:0 0 12px}.card h4{font-size:14px;margin:0 0 8px}.metric{font-size:28px;font-weight:750;letter-spacing:-.03em}.metric-label{font-size:12px;color:var(--muted);margin-top:3px}
.alert{border-radius:12px;padding:14px 16px;margin-bottom:14px;border:1px solid}.alert.danger{background:var(--danger-soft);border-color:#efc5c5}.alert.warn{background:var(--warn-soft);border-color:#eed7ac}.alert.info{background:#edf4fa;border-color:#cadbea}.alert.ok{background:var(--ok-soft);border-color:#c7dfd1}
.alert strong{display:block;margin-bottom:5px}
.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:12px;background:#fff}
table{border-collapse:collapse;width:100%;min-width:760px}th,td{padding:11px 12px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top;font-size:13px}th{background:#f6f8fa;color:#52606c;font-size:12px;position:sticky;top:0}tr:last-child td{border-bottom:0}.num{text-align:right;font-variant-numeric:tabular-nums}
.toolbar{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0}.btn{border:1px solid #bec8d1;background:#fff;color:#2c3b46;padding:9px 13px;border-radius:9px;font-weight:650}.btn:hover{background:#f3f6f8}.btn.primary{background:var(--accent);color:#fff;border-color:var(--accent)}.btn.danger{background:#fff;color:var(--danger);border-color:#dfa6a6}.btn.small{padding:6px 9px;font-size:12px}.btn:disabled{opacity:.45;cursor:not-allowed}
.form-grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:12px}.field{grid-column:span 4}.field.w2{grid-column:span 2}.field.w3{grid-column:span 3}.field.w6{grid-column:span 6}.field.w8{grid-column:span 8}.field.w12{grid-column:1/-1}.field label{display:block;font-size:12px;color:#596773;margin:0 0 5px;font-weight:650}.field input,.field select,.field textarea{width:100%;border:1px solid #cbd4dc;background:#fff;border-radius:8px;padding:9px 10px;color:var(--text)}.field textarea{min-height:82px;resize:vertical}.field input:focus,.field select:focus,.field textarea:focus{outline:2px solid #b7ccdc;border-color:#86a8c0}
.section-title{display:flex;justify-content:space-between;align-items:center;gap:10px;margin:24px 0 10px}.section-title h3{margin:0;font-size:18px}.hint{font-size:12px;color:var(--muted);line-height:1.55}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.divider{height:1px;background:var(--line);margin:18px 0}
.status-line{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.deadline{font-size:13px}.deadline strong{font-size:16px}
.lock-wrap{min-height:100vh;display:grid;place-items:center;padding:24px;background:linear-gradient(135deg,#eef2f5,#dce5eb)}.lock-card{width:min(520px,100%);background:#fff;border:1px solid var(--line);border-radius:18px;padding:28px;box-shadow:0 20px 60px rgba(31,45,61,.14)}.lock-card h1{margin:0 0 8px;font-size:25px}.lock-card p{color:var(--muted);line-height:1.65}.lock-card .field{margin:14px 0}.lock-actions{display:flex;gap:9px;flex-wrap:wrap}.privacy-note{margin-top:18px;padding:12px;border-radius:10px;background:#f4f7f9;font-size:12px;line-height:1.65;color:#52606c}
.progress{height:9px;background:#e9edf0;border-radius:999px;overflow:hidden}.progress>span{display:block;height:100%;background:var(--accent)}
.kpi{display:flex;justify-content:space-between;gap:12px;align-items:flex-end}.kpi .metric{font-size:24px}.right{text-align:right}.muted{color:var(--muted)}.nowrap{white-space:nowrap}.clickable{cursor:pointer}
.checklist{display:grid;gap:8px}.check-item{display:flex;gap:10px;align-items:flex-start;padding:10px 11px;border:1px solid var(--line);border-radius:9px}.check-dot{width:18px;height:18px;border-radius:50%;display:grid;place-items:center;flex:0 0 auto;font-size:11px;margin-top:1px}.check-dot.ok{background:var(--ok-soft);color:var(--ok)}.check-dot.warn{background:var(--warn-soft);color:var(--warn)}.check-dot.danger{background:var(--danger-soft);color:var(--danger)}
.copy-row{display:grid;grid-template-columns:minmax(180px,1fr) 180px 90px;gap:8px;align-items:center;padding:9px 0;border-bottom:1px solid var(--line)}.copy-row:last-child{border-bottom:0}.copy-value{font-weight:750;font-variant-numeric:tabular-nums;text-align:right}
.toast{position:fixed;right:18px;bottom:18px;background:#223542;color:#fff;padding:10px 14px;border-radius:9px;box-shadow:var(--shadow);z-index:20;font-size:13px}
.unsaved{background:#633;color:#fff;padding:5px 9px;border-radius:999px;font-size:11px;font-weight:700}
@media (max-width:980px){.app-shell{grid-template-columns:1fr}.sidebar{position:relative;height:auto}.sidebar nav{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.nav-section{grid-column:1/-1}.main{padding:18px}.grid.cols-4,.grid.cols-3,.grid.cols-2{grid-template-columns:1fr 1fr}.field,.field.w2,.field.w3,.field.w6,.field.w8{grid-column:span 6}}
@media (max-width:640px){.grid.cols-4,.grid.cols-3,.grid.cols-2{grid-template-columns:1fr}.form-grid{display:block}.field,.field.w2,.field.w3,.field.w6,.field.w8,.field.w12{margin-bottom:10px}.main{padding:12px}.page-head{display:block}.page-head h2{font-size:22px}.sidebar nav{grid-template-columns:1fr 1fr}.copy-row{grid-template-columns:1fr 90px}.copy-row .copy-value{grid-column:1/2;text-align:left}.lock-card{padding:20px}}
