/* ファイルパス: public/css/base.css */
:root{
  --bg:#f8fafc;--surface:#fff;--surface-soft:#f9fafb;--surface-blue:#f5f7ff;
  --border:#e5e7eb;--border-strong:#d9def0;--text:#111827;--text-muted:#667085;--text-soft:#98a2b3;
  --primary:#4f46e5;--primary-2:#2563eb;--primary-dark:#3730a3;--primary-soft:#eef2ff;
  --success:#16a34a;--success-soft:#ecfdf3;--danger:#dc2626;--danger-soft:#fef2f2;--warning:#d97706;--warning-soft:#fffbeb;
  --shadow-sm:0 1px 2px rgba(16,24,40,.04);--shadow-md:0 10px 30px rgba(15,23,42,.08);--shadow-lg:0 18px 50px rgba(15,23,42,.10);
  --radius-sm:10px;--radius-md:14px;--radius-lg:18px;--radius-xl:24px;--header-h:68px;--content-max:1180px;
  --font:Inter,"Noto Sans JP",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  --c-blue:#dbeafe;--c-green:#dcfce7;--c-orange:#ffedd5;--c-pink:#fce7f3;--c-purple:#ede9fe;
  --c-yellow:#fef9c3;--c-cyan:#cffafe;--c-red:#fee2e2;--c-gray:#f3f4f6;--c-slate:#e2e8f0;
}
*{box-sizing:border-box}html{min-height:100%;background:var(--bg);text-size-adjust:100%}body{margin:0;min-height:100vh;font-family:var(--font);font-size:14px;line-height:1.6;color:var(--text);background:radial-gradient(circle at 12% 0%,rgba(79,70,229,.06),transparent 27rem),linear-gradient(180deg,#fff 0%,var(--bg) 44%,var(--bg) 100%);-webkit-font-smoothing:antialiased;overflow-x:hidden}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.52}svg{display:block}.hidden{display:none!important}
.app-header{position:sticky;top:0;z-index:60;height:var(--header-h);display:flex;align-items:center;justify-content:space-between;gap:16px;padding:0 max(18px,env(safe-area-inset-left));border-bottom:1px solid rgba(229,231,235,.9);background:rgba(255,255,255,.9);backdrop-filter:blur(18px)}.brand{display:inline-flex;align-items:center;gap:11px;min-width:0}.brand-mark{width:40px;height:40px;display:grid;place-items:center;border-radius:12px;color:#fff;background:linear-gradient(135deg,var(--primary),var(--primary-2));box-shadow:0 10px 24px rgba(79,70,229,.24);font-weight:900}.brand-copy{display:flex;flex-direction:column;line-height:1.15}.brand-copy strong{font-size:16px;font-weight:850}.brand-copy small{margin-top:4px;color:var(--text-muted);font-size:12px}.header-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.app-view{width:min(100%,calc(var(--content-max) + 40px));min-height:calc(100vh - var(--header-h));margin:0 auto;padding:26px 20px 48px}.page-shell{display:flex;flex-direction:column;gap:22px}.page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;flex-wrap:wrap}.eyebrow{display:inline-block;margin-bottom:6px;color:var(--primary);font-size:12px;font-weight:850;letter-spacing:.12em}.page-title{margin:0;color:#172033;font-size:clamp(26px,5vw,34px);line-height:1.2;letter-spacing:-.04em}.page-subtitle{margin:8px 0 0;color:var(--text-muted);font-size:14px;line-height:1.75}.section-title{margin:0;color:#27364b;font-size:17px;font-weight:850}.section-note{margin:4px 0 0;color:var(--text-muted);font-size:13px}
.card{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);box-shadow:var(--shadow-sm)}.card-soft{border:1px solid #e4e7ff;border-radius:var(--radius-lg);background:linear-gradient(135deg,#fff,var(--surface-blue))}.card-body{padding:20px}.stack{display:flex;flex-direction:column;gap:14px}.row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.row-between{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.grid{display:grid;gap:16px}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}
.btn{min-height:44px;padding:0 17px;border:1px solid var(--border);border-radius:12px;background:#fff;color:var(--text);box-shadow:var(--shadow-sm);display:inline-flex;align-items:center;justify-content:center;gap:8px;font-size:14px;font-weight:800;line-height:1.2;transition:.16s ease}.btn:hover{border-color:var(--border-strong);background:#fcfcff}.btn:active{transform:translateY(1px)}.btn-primary{border-color:var(--primary);color:#fff;background:linear-gradient(135deg,var(--primary),#5b35f5);box-shadow:0 10px 22px rgba(79,70,229,.22)}.btn-primary:hover{background:linear-gradient(135deg,#4338ca,#4f2ddd)}.btn-soft{border-color:#d9ddff;color:var(--primary);background:var(--primary-soft);box-shadow:none}.btn-ghost{border-color:transparent;background:transparent;box-shadow:none;color:var(--text-muted)}.btn-danger{border-color:#fecaca;color:var(--danger);background:#fff}.btn-small{min-height:34px;padding:0 11px;font-size:13px;border-radius:10px}.btn-wide{width:100%}
.input,.select,.textarea{width:100%;border:1px solid var(--border);border-radius:12px;background:#fff;color:var(--text);outline:none;transition:.16s ease}.input,.select{min-height:46px;padding:0 14px}.textarea{min-height:130px;padding:12px 14px;resize:vertical}.input:focus,.select:focus,.textarea:focus{border-color:#a5b4fc;box-shadow:0 0 0 4px rgba(79,70,229,.09)}.form-field{display:flex;flex-direction:column;gap:7px}.form-field>span,.form-label{color:#475467;font-size:13px;font-weight:800}.help-text{color:var(--text-muted);font-size:12px;line-height:1.6}.form-error{padding:10px 12px;border:1px solid #fecaca;border-radius:10px;background:var(--danger-soft);color:#991b1b;font-size:13px}.form-success{padding:10px 12px;border:1px solid #bbf7d0;border-radius:10px;background:var(--success-soft);color:#166534;font-size:13px}
.tag{display:inline-flex;align-items:center;min-height:27px;padding:0 10px;border-radius:999px;background:var(--primary-soft);color:var(--primary);font-size:12px;font-weight:800;white-space:nowrap}.tag.success{color:var(--success);background:var(--success-soft)}.tag.warning{color:var(--warning);background:var(--warning-soft)}.tag.danger{color:var(--danger);background:var(--danger-soft)}.metric{display:flex;flex-direction:column;gap:3px}.metric-label{color:var(--text-muted);font-size:12px;font-weight:700}.metric-value{color:#172033;font-size:26px;font-weight:900}.metric-sub{color:var(--text-muted);font-size:12px}
.table-wrap{overflow:auto;border:1px solid var(--border);border-radius:14px;background:#fff}.data-table{width:100%;border-collapse:collapse;min-width:720px}.data-table th,.data-table td{padding:11px 12px;border-bottom:1px solid var(--border);text-align:left;vertical-align:top}.data-table th{background:#f8fafc;color:#475467;font-size:12px;font-weight:850}.data-table tr:last-child td{border-bottom:0}.empty-state{min-height:220px;padding:36px 24px;display:grid;place-items:center;text-align:center;border:1px dashed var(--border-strong);border-radius:var(--radius-lg);background:rgba(255,255,255,.72)}
.toolbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:10px;border:1px solid var(--border);border-radius:14px;background:#fff;box-shadow:var(--shadow-sm)}.toolbar-group{display:flex;align-items:center;gap:6px;padding-right:8px;border-right:1px solid var(--border)}.toolbar-group:last-child{border-right:0}.tool-btn{min-height:36px;padding:0 10px;border:1px solid var(--border);border-radius:9px;background:#fff;color:#475467;font-weight:750}.tool-btn:hover,.tool-btn.active{color:var(--primary);border-color:#c7d2fe;background:var(--primary-soft)}.color-dot{width:28px;height:28px;border:2px solid #fff;border-radius:50%;box-shadow:0 0 0 1px var(--border);padding:0}.split-layout{display:grid;grid-template-columns:260px minmax(0,1fr);gap:16px;min-height:640px}.file-pane{border:1px solid var(--border);border-radius:16px;background:#fff;overflow:hidden}.file-pane-head{padding:14px;border-bottom:1px solid var(--border)}.file-list{display:flex;flex-direction:column;padding:8px;gap:4px;max-height:620px;overflow:auto}.file-item{display:flex;align-items:center;gap:8px;width:100%;padding:10px;border:0;border-radius:10px;background:transparent;text-align:left;color:#475467}.file-item:hover{background:#f8fafc}.file-item.active{background:var(--primary-soft);color:var(--primary);font-weight:800}.file-item-title{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.unsaved-badge{display:none}.has-unsaved .unsaved-badge{display:inline-flex}.editor-shell{min-width:0;display:flex;flex-direction:column;gap:12px}.editor-stage{position:relative;min-height:620px;border:1px solid var(--border);border-radius:16px;background:#fff;overflow:hidden}.editor-shell.is-fullscreen{position:fixed;inset:0;z-index:100;background:var(--bg);padding:12px}.editor-shell.is-fullscreen .editor-stage{flex:1;min-height:0}.editor-shell.is-fullscreen+.file-pane{display:none}
.toast-region{position:fixed;right:18px;bottom:18px;z-index:180;display:flex;flex-direction:column;gap:10px;pointer-events:none}.toast{width:min(380px,calc(100vw - 36px));padding:13px 15px;border:1px solid var(--border);border-radius:14px;background:rgba(255,255,255,.98);box-shadow:var(--shadow-lg);color:#344054;font-size:13px;font-weight:700;animation:toast-in .2s ease both}.toast.success{border-left:4px solid var(--success)}.toast.error{border-left:4px solid var(--danger)}.toast.warning{border-left:4px solid var(--warning)}@keyframes toast-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
.modal-backdrop{position:fixed;inset:0;z-index:150;display:grid;place-items:center;padding:20px;background:rgba(15,23,42,.42);backdrop-filter:blur(4px)}.modal{width:min(520px,100%);max-height:90vh;overflow:auto;border:1px solid var(--border);border-radius:20px;background:#fff;box-shadow:var(--shadow-lg)}.modal-head,.modal-body,.modal-foot{padding:18px}.modal-head{border-bottom:1px solid var(--border)}.modal-foot{border-top:1px solid var(--border);display:flex;justify-content:flex-end;gap:10px}.modal-title{margin:0;font-size:19px}
.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
@media(max-width:900px){.grid-4,.grid-3{grid-template-columns:repeat(2,minmax(0,1fr))}.split-layout{grid-template-columns:1fr}.file-pane{max-height:260px}.file-list{max-height:190px}}@media(max-width:620px){.app-view{padding:18px 12px 36px}.brand-copy small{display:none}.grid-2,.grid-3,.grid-4{grid-template-columns:1fr}.toolbar{align-items:stretch}.toolbar-group{border-right:0;padding-right:0}.page-title{font-size:26px}}
@media print{.app-header,.toolbar,.file-pane,.no-print,.toast-region{display:none!important}.app-view{width:100%;max-width:none;padding:0}.editor-stage{border:0;overflow:visible}}
.file-item[draggable="true"]{cursor:grab}.file-item.dragging{opacity:.48;cursor:grabbing}.file-item:focus-visible{outline:3px solid rgba(79,70,229,.18);outline-offset:1px}
