:root{--bg:#f3f6fa;--panel:#fff;--border:#dfe6ee;--ink:#172638;--muted:#5b6b7f;--accent:#096b69;--accent-lite:#e6f5f2;--blue:#315d96;--warn:#a26516;--red:#ae4545;--shadow:0 6px 26px rgba(30,51,68,.04)}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:14px/1.55 system-ui,-apple-system,"Yu Gothic UI","Noto Sans JP",Meiryo,sans-serif}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{opacity:.4;cursor:not-allowed}a{color:var(--accent)}.shell{min-height:100vh;display:grid;grid-template-columns:235px minmax(0,1fr)}aside{background:#102a3a;color:#e9f3f8;padding:25px 15px;display:flex;flex-direction:column;gap:22px}aside h1{margin:0 0 6px;font-size:19px}aside p{margin:0;color:#a9c2cf;font-size:12px}.nav{display:grid;gap:5px}.nav button{border:0;color:#c9dce6;text-align:left;background:transparent;padding:12px 14px;border-radius:11px}.nav button.active,.nav button:hover{background:#244657;color:#fff}.asidefoot{margin-top:auto;color:#a9c2cf;font-size:11px}.main{min-width:0}.top{padding:13px 28px;border-bottom:1px solid var(--border);display:flex;gap:10px;justify-content:space-between;align-items:center;background:#fff;flex-wrap:wrap}.top strong{font-size:13px}.top .actions{display:flex;align-items:center;gap:7px;flex-wrap:wrap}main{padding:26px 28px 70px;max-width:1450px;margin:auto}.pagehead{margin:0 0 20px;display:flex;justify-content:space-between;gap:15px;align-items:end;flex-wrap:wrap}.pagehead h2{font-size:25px;line-height:1.2;margin:0 0 7px}.pagehead p{margin:0;color:var(--muted)}.muted{color:var(--muted)}.mini{font-size:12px}.fine{font-size:11px}.stack{display:grid;gap:14px}.grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.grid4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.panel,.stat{background:var(--panel);border:1px solid var(--border);border-radius:14px;box-shadow:var(--shadow);padding:19px}.panel h3{font-size:17px;margin:0 0 13px}.panel h4{font-size:14px;margin:0 0 7px}.panel p:last-child{margin-bottom:0}.stat strong{display:block;font-size:29px;line-height:1.35;font-variant-numeric:tabular-nums}.stat span{color:var(--muted);font-size:12px}.toolbar,.inline{display:flex;gap:9px;align-items:center;flex-wrap:wrap}.toolbar{margin-bottom:15px}.button{border:1px solid var(--border);background:#fff;color:var(--ink);border-radius:9px;padding:8px 12px;white-space:nowrap}.button:hover{border-color:#8bb9b1}.button.primary{background:var(--accent);border-color:var(--accent);color:#fff}.button.ghost{background:transparent}.button.danger{color:var(--red)}.button.small{font-size:12px;padding:5px 9px}.button.silent{border-color:transparent;background:transparent}.pill{font-size:11px;padding:3px 8px;border-radius:100px;background:#edf1f5;color:var(--muted);display:inline-flex;align-items:center;gap:4px}.pill.ok{background:var(--accent-lite);color:#086f53}.pill.notice{background:#fff5e5;color:var(--warn)}.field{display:grid;gap:5px;min-width:0}.field label{font-size:12px;font-weight:650;color:#435369}.field input,.field select,.field textarea,select,input[type=number],input[type=text]{min-width:0;max-width:100%;border:1px solid #cfd9e4;border-radius:8px;padding:9px 10px;background:#fff;color:var(--ink)}.field textarea{resize:vertical;min-height:64px}.field input:focus,.field select:focus{outline:2px solid #95d9d0;outline-offset:1px}.formgrid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:13px}.formgrid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.formgrid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.formactions{grid-column:1/-1;display:flex;justify-content:flex-end;gap:8px}.span2{grid-column:span 2}.full{grid-column:1/-1}.tablewrap{overflow-x:auto}table{width:100%;border-collapse:collapse;min-width:660px}th,td{padding:10px 9px;text-align:left;border-bottom:1px solid #e8edf3;vertical-align:middle}th{font-size:12px;background:#f7f9fb;color:#56677b;white-space:nowrap}tbody tr:hover{background:#f9fbfc}tbody tr:last-child td{border-bottom:0}.right{text-align:right}.roomgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:10px}.roomcard{text-align:left;padding:15px;border:1px solid var(--border);border-radius:11px;background:white;transition:background .15s,border .15s}.roomcard:hover{background:#f6faf9;border-color:#80afa9}.roomcard strong{display:block;margin:2px 0 5px;font-size:15px}.roomcard .tiny{font-size:12px;color:var(--muted)}.chips{display:flex;gap:7px;flex-wrap:wrap}.chip{border:1px solid #d2dce6;padding:6px 11px;border-radius:100px;background:#fff;font-size:12px;color:#34465b}.chip.on{background:#096b69;color:#fff;border-color:#096b69}.sectionline{margin:10px 0;border-top:1px solid var(--border)}.empty{padding:30px 15px;text-align:center;color:var(--muted);background:#f8fafc;border:1px dashed #cbd8e2;border-radius:12px}.notice{background:#edf6fb;color:#28536b;border-left:3px solid #5b9dc5;padding:10px 13px;border-radius:6px;font-size:12px}.warning{background:#fff8e8;color:#73551f;border-left:3px solid #c39d53;padding:10px 13px;border-radius:6px;font-size:12px}.tree{padding:0;margin:0;list-style:none}.tree ul{list-style:none;border-left:2px solid #d9e7e4;margin:8px 0 5px 16px;padding-left:17px}.tree li{margin:8px 0}.treecard{border:1px solid var(--border);border-left:4px solid #71aba3;border-radius:9px;padding:11px 13px;background:#fff;max-width:730px}.treecard:hover{background:#f5faf9}.treecard .topline{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.smallcols{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.detailmodal{position:fixed;inset:0;background:#0a1d2bb8;z-index:50;display:flex;align-items:center;justify-content:center;padding:20px}.dialog{background:#fff;width:min(100%,1040px);max-height:92vh;overflow-y:auto;border-radius:16px;box-shadow:0 20px 100px #0005}.dialoghead{padding:17px 20px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;gap:12px}.dialoghead h2{margin:0;font-size:20px}.dialogbody{padding:20px}.dialoghead .button{margin-left:auto}.inlinefield{display:inline-flex;align-items:center;gap:6px;flex-wrap:wrap}.qtyinput{width:84px!important}.selectcompact{max-width:165px!important;width:160px}.divider{height:1px;background:var(--border);margin:15px 0}.toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);z-index:70;background:#153d44;color:#fff;border-radius:9px;padding:12px 18px;box-shadow:0 7px 25px #0004;font-size:13px;max-width:92vw}.hide{display:none!important}body.modalopen{overflow:hidden}
@media(max-width:850px){.shell{display:block}aside{padding:15px;gap:9px}aside h1{font-size:16px}.nav{display:flex;overflow-x:auto}.nav button{white-space:nowrap;padding:8px 11px}.asidefoot{display:none}main{padding:17px 12px 60px}.top{padding:10px 12px}.grid3,.grid4{grid-template-columns:repeat(2,minmax(0,1fr))}.formgrid{grid-template-columns:repeat(2,minmax(0,1fr))}.pagehead h2{font-size:21px}}
@media(max-width:550px){.grid,.grid3,.grid4,.formgrid,.formgrid.three,.formgrid.two{grid-template-columns:1fr}.span2{grid-column:1}.panel{padding:14px}.detailmodal{padding:6px}.dialog{max-height:98vh}.dialogbody{padding:12px}.roomgrid{grid-template-columns:repeat(2,minmax(0,1fr))}.roomcard{padding:11px}.top .actions .button{font-size:11px}.stat strong{font-size:24px}}
@media print{aside,.top,.pagehead .button,.toolbar,.noprint{display:none!important}.shell{display:block}main{padding:0}.panel{box-shadow:none}}
/* ---- Project S v0.2 additions ---- */
.nav button .cnt{float:right;font-size:11px;background:#244657;border-radius:100px;padding:0 7px;color:#cfe}
.pill.warn{background:#fdeaea;color:var(--red)}.pill.hold{background:#fff5e5;color:var(--warn)}.pill.ref{background:#eaf0fa;color:var(--blue)}.pill.diff{background:#fdeaea;color:var(--red);font-weight:650}
.tabs{display:flex;gap:4px;border-bottom:1px solid var(--border);margin:0 0 14px;flex-wrap:wrap}.tabs button{border:0;background:transparent;padding:9px 14px;border-bottom:3px solid transparent;color:var(--muted);font-weight:600}.tabs button.active{color:var(--accent);border-bottom-color:var(--accent)}
.num{font-variant-numeric:tabular-nums}.nullv{color:#9aa8b8;font-style:italic}
.cmp td.diffcell{background:#fff1f1}.cmp td.holdcell{background:#fffaf0}
.kv{display:grid;grid-template-columns:150px minmax(0,1fr);gap:4px 10px;font-size:13px}.kv dt{color:var(--muted)}.kv dd{margin:0}
.link{background:none;border:0;padding:0;color:var(--accent);text-decoration:underline;cursor:pointer;font:inherit;text-align:left}
.formgrid.five{grid-template-columns:repeat(5,minmax(0,1fr))}.formgrid.six{grid-template-columns:repeat(6,minmax(0,1fr))}
.blk{border:1px solid var(--border);border-radius:11px;padding:13px;margin:0 0 12px;background:#fcfdfe}.blk h4{margin:0 0 9px}.blk.design{border-left:4px solid #315d96}.blk.adopted{border-left:4px solid #096b69}.blk.calc{border-left:4px solid #a26516}
.hist{max-height:180px;overflow:auto;font-size:12px;border:1px solid var(--border);border-radius:8px;padding:6px 10px;background:#fafbfc}
.smalltable table{min-width:0}.smalltable th,.smalltable td{padding:6px 7px}
.sticky th{position:sticky;top:0;z-index:1}
.checkrow{display:flex;gap:6px;align-items:center;font-size:12px}
.errlist{margin:6px 0 0;padding-left:18px;font-size:12px}
.shell.nosidebar{display:block}
@media(max-width:850px){.formgrid.five,.formgrid.six{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:550px){.formgrid.five,.formgrid.six{grid-template-columns:1fr}}
label.field{display:grid;gap:5px;min-width:0}.field .lbl{font-size:12px;font-weight:650;color:#435369}
label.checkrow{display:flex}
.panel>.tabs{margin-top:0}
.warning .errlist li{margin:2px 0}
.pill{white-space:nowrap}
table.cmp{min-width:1180px}
.blk .formgrid+.formgrid,.blk .formgrid+.toolbar,.blk .formgrid+p{margin-top:13px}
.blk .toolbar{margin:10px 0 0}
/* ---- v0.3 サーバー版: ログイン / ユーザー / 変更履歴 ---- */
.navsep{height:1px;background:#244657;margin:10px 4px}
.userchip{font-size:12px;color:var(--muted);padding:0 4px}
.loginwrap{min-height:100vh;display:grid;place-items:center;background:linear-gradient(160deg,#102a3a,#1d4a5c);padding:20px}
.logincard{background:#fff;border-radius:16px;box-shadow:0 20px 80px #0006;width:min(100%,420px);padding:30px}
.logincard h1{margin:0 0 4px;font-size:24px}.logincard .sub{color:var(--muted);font-size:13px;margin:0 0 20px}
.logincard form{display:grid;gap:14px}.logincard .err{background:#fdeaea;color:var(--red);border-left:3px solid var(--red);padding:9px 12px;border-radius:6px;font-size:13px;white-space:pre-line}
.logincard .ok{background:var(--accent-lite);color:#086f53;border-left:3px solid var(--accent);padding:9px 12px;border-radius:6px;font-size:13px}
.logincard .alt{margin-top:14px;font-size:13px;text-align:center}
.code{font:700 22px/1.4 ui-monospace,Consolas,monospace;letter-spacing:.06em;background:#f1f6f9;border:1px dashed #9db5c2;border-radius:10px;padding:14px;text-align:center;user-select:all;word-break:break-all}
#drawer .backdrop{position:fixed;inset:0;background:#0a1d2b66;z-index:55}
#drawer .drawer{position:fixed;top:0;right:0;bottom:0;width:min(100%,560px);background:#fff;z-index:56;box-shadow:-10px 0 60px #0004;overflow-y:auto;display:flex;flex-direction:column}
.drawer .dhead{padding:16px 20px;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:10px;position:sticky;top:0;background:#fff}
.drawer .dhead h3{margin:0;font-size:17px;flex:1}.drawer .dbody{padding:18px 20px;display:grid;gap:14px}
.diffrow td{vertical-align:top}.diffrow .before{background:#fff1f1;color:#7a2b2b}.diffrow .after{background:#eefaf3;color:#0b5c40}
tr.clickable{cursor:pointer}tr.clickable:hover{background:#eef6f5!important}
.pager{display:flex;gap:8px;align-items:center;justify-content:flex-end;margin-top:12px}
.filters{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px;align-items:end;margin-bottom:12px}
@media(max-width:1100px){.filters{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:650px){.filters{grid-template-columns:1fr}}
.rawjson{max-height:220px;overflow:auto;background:#f7f9fb;border:1px solid var(--border);border-radius:8px;padding:8px;font:12px/1.5 ui-monospace,Consolas,monospace;white-space:pre-wrap;word-break:break-all}
.drawer table{min-width:0;table-layout:fixed}.drawer td,.drawer th{word-break:break-all}.drawer .kv{grid-template-columns:130px minmax(0,1fr)}
/* ---- v0.5: インラインstyle属性の置換(CSPで style属性を禁止するため、すべてクラス化) ---- */
.mt4{margin-top:4px}.mt6{margin-top:6px}.mt8{margin-top:8px}.mt10{margin-top:10px}.mt12{margin-top:12px}.mt14{margin-top:14px}.mb12{margin-bottom:12px}.mb14{margin-bottom:14px}
.m0{margin:0}.mra{margin-right:auto}.mla{margin-left:auto}h3.m0.mra{margin:0 auto 0 0}
.mw280{min-width:280px}.mw300{min-width:300px}.mw360{min-width:360px}.mw400{min-width:400px}.mw420{min-width:420px}.mw760{min-width:760px}
.nowrap{white-space:nowrap}.preline{white-space:pre-line}.breakall{word-break:break-all}.ptr{cursor:pointer}.fw650{font-weight:650}.w90{width:90px}.pad20{padding:20px}
.stalebar{position:fixed;top:10px;left:50%;transform:translateX(-50%);z-index:80;box-shadow:0 6px 24px #0003;display:flex;gap:10px;align-items:center}
/* ---- v0.5: シェル(ナビゲーション・上部バー・全体検索・表示密度) ---- */
.nav .navgroup{font-size:11px;color:#8fb0c0;padding:10px 14px 3px;letter-spacing:.04em}
.nav .navgroup:first-child{padding-top:0}
.nav button{padding:9px 14px}
aside{position:sticky;top:0;height:100vh;overflow-y:auto}
.top{position:sticky;top:0;z-index:30;gap:12px}
.crumb{display:flex;align-items:center;gap:8px;min-width:0}.crumb .sep{color:#9aa8b8}.crumb #pageLabel{font-weight:650;color:var(--accent)}
.gsearchwrap{position:relative;flex:1 1 260px;max-width:420px}
.gsearchwrap input{width:100%;border:1px solid #cfd9e4;border-radius:9px;padding:7px 11px;background:#f7f9fb}
.gresults{position:absolute;top:calc(100% + 4px);left:0;right:0;background:#fff;border:1px solid var(--border);border-radius:10px;box-shadow:0 12px 40px #0003;max-height:70vh;overflow-y:auto;z-index:60;padding:6px}
.gresults .gtitle{font-size:11px;font-weight:700;color:var(--muted);padding:6px 8px 2px}.gres{display:block;width:100%;text-align:left;border:0;background:transparent;padding:7px 8px;border-radius:7px}.gres:hover,.gres:focus{background:var(--accent-lite);outline:none}
main{max-width:min(100%,2000px)}
.tablewrap:has(table.sticky){max-height:74vh;overflow:auto}
.tablewrap table.sticky th{position:sticky;top:0;z-index:2;box-shadow:0 1px 0 var(--border)}
body.dense{font-size:13px;line-height:1.4}body.dense th,body.dense td{padding:4px 7px}body.dense .panel{padding:13px}body.dense main{padding-top:18px}body.dense .button{padding:5px 9px}
body.dense .field input,body.dense .field select,body.dense select,body.dense input[type=number],body.dense input[type=text]{padding:5px 8px}
@media(max-width:850px){aside{position:static;height:auto}.top{position:static}.gsearchwrap{max-width:none;flex-basis:100%;order:3}.crumb #pageLabel{font-size:13px}}
:focus-visible{outline:2px solid #2a9d8f;outline-offset:2px}
.right-panel{position:sticky;top:70px;align-self:start}
.cols2{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:14px;align-items:start}
@media(max-width:1100px){.cols2{grid-template-columns:1fr}}
/* ---- ダッシュボード ---- */
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:12px}
.card{display:block;text-align:left;width:100%;background:var(--panel);border:1px solid var(--border);border-radius:13px;padding:14px 16px;box-shadow:var(--shadow);cursor:pointer}
.card:hover{border-color:#80afa9;background:#f9fcfb}.card .lbl{font-size:12px;color:var(--muted)}.card .val{font-size:27px;font-weight:700;font-variant-numeric:tabular-nums;line-height:1.3}.card .sub{font-size:11px;color:var(--muted)}
.card.warn{border-left:4px solid #c39d53}.card.bad{border-left:4px solid #ae4545}.card.good{border-left:4px solid #096b69}
.chart{width:100%;height:auto;display:block}.chart text{font:11px system-ui,"Yu Gothic UI",Meiryo,sans-serif;fill:#34465b}.chart .axis{stroke:#cbd8e2}.chart .bg{fill:#e8eef3}
.chart .c-done{fill:#1c7f6e}.chart .c-insp{fill:#315d96}.chart .c-prog{fill:#d3a23a}.chart .c-todo{fill:#cfd8e1}.chart .c-bar{fill:#4a8fb0}.chart .c-bar2{fill:#a26516}.chart .c-r{fill:#c0504d}.chart .c-s{fill:#4a7fb5}.chart .c-t{fill:#2f8f6b}.chart .c-n{fill:#7a7a7a}
.legend{display:flex;gap:12px;flex-wrap:wrap;font-size:12px;color:var(--muted);margin-top:6px}.legend i{display:inline-block;width:11px;height:11px;border-radius:3px;margin-right:4px;vertical-align:-1px}
.legend i.l-done{background:#1c7f6e}.legend i.l-insp{background:#315d96}.legend i.l-prog{background:#d3a23a}.legend i.l-todo{background:#cfd8e1}
meter,progress{width:100%;height:12px}
/* ---- 施工進捗マトリクス ---- */
.pmatrix{min-width:0;font-size:12px}.pmatrix th,.pmatrix td{padding:0;text-align:center;vertical-align:middle}.pmatrix th.rowh,.pmatrix td.rowh{text-align:left;padding:4px 8px;white-space:nowrap;position:sticky;left:0;background:#fff;z-index:1}
.pmatrix thead th{padding:6px 4px;white-space:normal;min-width:74px;max-width:104px;font-size:11px;line-height:1.25}.pmatrix thead th.rowh{z-index:3;background:#f7f9fb}
.pcell{display:block;width:100%;min-height:30px;border:0;border-left:1px solid #fff;border-bottom:1px solid #fff;font-size:11px;padding:4px 2px;cursor:pointer;color:#1b2b3c}
.pcell:hover{outline:2px solid #2a9d8f;outline-offset:-2px}.pcell.sel{outline:3px solid #315d96;outline-offset:-3px}
.st-not_started{background:#eef2f6;color:#6b7b8d}.st-in_progress{background:#fde9b8}.st-done{background:#bfe8da}.st-inspected{background:#c9dcf5;font-weight:700}.st-na{background:repeating-linear-gradient(45deg,#f7f9fb,#f7f9fb 5px,#e9eef3 5px,#e9eef3 10px);color:#8a98a8}
.pcell.derived{opacity:.75}.rate{font-variant-numeric:tabular-nums;font-weight:650}
.ptoolbar{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:12px}
.statuslegend{display:flex;gap:8px;flex-wrap:wrap;font-size:12px}.statuslegend span{padding:2px 9px;border-radius:100px}
/* ---- 盤系統図 ---- */
.dwrap{display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:12px}@media(max-width:1100px){.dwrap{grid-template-columns:1fr}}
.dcanvas{width:100%;height:min(66vh,640px);min-height:380px;background:#fbfcfe;border:1px solid var(--border);border-radius:12px;touch-action:none;display:block;user-select:none;cursor:grab}
.dcanvas.panning{cursor:grabbing}.dcanvas.connecting{cursor:crosshair}
.dgrid{stroke:#e9eef3;stroke-width:1}
.dnode{cursor:move}.dnode rect.body{fill:#fff;stroke:#71aba3;stroke-width:1.6}.dnode.k-incoming rect.body{stroke:#315d96}.dnode.k-transformer rect.body{stroke:#a26516}.dnode.k-generator rect.body,.dnode.k-ats rect.body{stroke:#ae4545}.dnode.k-spd rect.body,.dnode.k-terminal rect.body,.dnode.k-other rect.body{stroke:#7a8a99}
.dnode.sel rect.body{stroke:#096b69;stroke-width:3.5;fill:#f1faf8}.dnode.target rect.body{stroke:#2a7de1;stroke-width:3.5;fill:#eef5ff}.dnode text{font:12px system-ui,"Yu Gothic UI",Meiryo,sans-serif;fill:#172638;pointer-events:none}.dnode .tname{font-weight:700;font-size:13px}.dnode .tsub{fill:#5b6b7f;font-size:11px}
.dnode .badge{fill:#fff5e5;stroke:#c39d53}.dnode .badge2{fill:#e6f5f2;stroke:#2a9d8f}
.dport{fill:#096b69;stroke:#fff;stroke-width:2;cursor:crosshair}.dport:hover{fill:#2a7de1}
.dedge{fill:none;stroke:#5b7a8c;stroke-width:2;pointer-events:none}.dedge.r-emergency{stroke:#ae4545;stroke-dasharray:7 4}.dedge.r-normal{stroke:#315d96}.dedge.r-accessory{stroke:#8a98a8;stroke-dasharray:2 4}.dedge.r-other{stroke:#8a98a8;stroke-dasharray:8 3 2 3}.dedge.sel{stroke:#096b69;stroke-width:4.5}
.dedge-hit{fill:none;stroke:transparent;stroke-width:16;cursor:pointer}.dtemp{fill:none;stroke:#2a7de1;stroke-width:2.5;stroke-dasharray:5 4;pointer-events:none}
.dtools{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin-bottom:10px}.dtools .sep{width:1px;height:22px;background:var(--border);margin:0 4px}
.button.on{background:#e6f5f2;border-color:#096b69;color:#086f53}
.dpanel h4{margin:10px 0 6px}.dpanel .kv{grid-template-columns:120px minmax(0,1fr)}
/* ---- 計算ツール ---- */
.toolresult{border:1px solid var(--border);border-left:5px solid #a26516;border-radius:10px;padding:12px 14px;background:#fffdf8}.toolresult.ok{border-left-color:#096b69;background:#f7fcfb}.toolresult.ref{border-left-color:#315d96;background:#f6f9fe}.toolresult.error{border-left-color:#ae4545;background:#fff7f7}
.toolresult .big{font-size:24px;font-weight:700;font-variant-numeric:tabular-nums}.toolresult ol,.toolresult ul{margin:4px 0 8px;padding-left:20px;font-size:12px}.toolresult .judge{font-weight:700;margin:6px 0}
.formula{font-family:ui-monospace,Consolas,monospace;background:#f1f6f9;border-radius:6px;padding:4px 8px;font-size:12px;display:inline-block;margin:2px 0}
/* ---- 帳票・印刷 ---- */
.rpt h2{margin:0 0 6px;font-size:20px}.rptmeta{display:flex;gap:6px 22px;flex-wrap:wrap;margin:0 0 10px;font-size:12px}.rptmeta div{display:flex;gap:6px}.rptmeta dt{color:var(--muted)}.rptmeta dd{margin:0}
.rpttable{min-width:0;font-size:12px}.rpttable th,.rpttable td{padding:4px 6px;border:1px solid #cfd8e1;vertical-align:top}.rpttable th{background:#eef3f7;color:#2a3b4c;white-space:normal}.rptnotes{font-size:11px;color:#34465b;margin:8px 0 0;padding-left:18px}
.rptpreview{background:#fff;border:1px solid var(--border);border-radius:10px;padding:16px;overflow:auto;max-height:76vh}
#printarea{display:none}
@page a4p{size:A4 portrait;margin:10mm}@page a4l{size:A4 landscape;margin:10mm}@page a3p{size:A3 portrait;margin:10mm}@page a3l{size:A3 landscape;margin:10mm}
.pa-a4p{page:a4p}.pa-a4l{page:a4l}.pa-a3p{page:a3p}.pa-a3l{page:a3l}
@media print{
  body.printing .shell,body.printing #modal,body.printing #drawer,body.printing #toast,body.printing #login{display:none!important}
  body.printing #printarea{display:block}body.printing{background:#fff}
  #printarea .rpttable{font-size:9pt}#printarea .rpttable thead{display:table-header-group}#printarea .rpttable tr{break-inside:avoid;page-break-inside:avoid}#printarea .rpttable th,#printarea .rpttable td{padding:2px 4px}
  #printarea .rptdense{font-size:7pt}#printarea .rptdense th,#printarea .rptdense td{padding:1px 3px}
  #printarea h2{font-size:15pt}#printarea .rptmeta{font-size:9pt}.rptnotes{font-size:8pt}
}
/* ---- 一括操作・選択 ---- */
.bulkbar{display:flex;gap:8px;flex-wrap:wrap;align-items:center;background:#eef6f5;border:1px solid #b7d7d2;border-radius:10px;padding:8px 12px;margin-bottom:10px}
th.sortable{cursor:pointer;user-select:none}th.sortable:hover{background:#eef3f7}
.chkcol{width:34px;text-align:center}
.dropzone{border:2px dashed #b7c6d3;border-radius:10px;padding:14px;text-align:center;color:var(--muted)}
.okbox{background:var(--accent-lite);color:#086f53;border-left:3px solid var(--accent);padding:9px 12px;border-radius:6px;font-size:12px}
.pill.bad{background:#fdeaea;color:var(--red)}
.tag-hold{background:#fff5e5;color:var(--warn);padding:1px 7px;border-radius:100px;font-size:11px;font-weight:650}
.undo-item{border:1px solid var(--border);border-radius:8px;padding:8px 10px;margin:6px 0}.undo-item.conflict{border-color:#e0b0b0;background:#fff7f7}.undo-item.ok{border-color:#b7d7d2;background:#f7fcfb}
#modal .detailmodal{z-index:65}
.grid>*,.grid3>*,.grid4>*,.cols2>*,.dwrap>*{min-width:0}

/* ---- v0.6: データ診断・電気計算 ---- */
.statrow{display:flex;gap:10px;flex-wrap:wrap}
.statcard{display:flex;flex-direction:column;align-items:flex-start;min-width:110px;border:1px solid var(--border);background:#fff;border-radius:10px;padding:8px 14px;cursor:pointer;font:inherit}
.statcard .n{font-size:22px;font-weight:700;line-height:1.1}.statcard .l{font-size:12px;color:var(--muted)}
.statcard.active{border-color:var(--accent);background:var(--accent-lite)}
.inlineflex{display:inline-flex;align-items:center;gap:6px;font-size:13px}
.checkgrid{display:flex;flex-wrap:wrap;gap:6px 16px}
.mt4{margin-top:4px}.mt10{margin-top:10px}
details>summary{cursor:pointer}
h5{margin:8px 0 4px;font-size:13px;color:var(--muted)}
.wb{stroke:#fff;stroke-width:1}.wb-hold{fill:#e0861a}.wb-notice{fill:#d1a100}.wb-warn{fill:#c0392b}
.tag-hold{color:var(--warn);font-weight:600}

.rpttable .nw{white-space:nowrap}

/* ---- v0.7: 簡易/詳細入力(.dtl は簡易モードで隠す詳細項目。値はDOMに残り、保存時に送信される) ---- */
body:not(.detail) form:not(.showdtl) .dtl{display:none!important}
.dtlbar{display:flex;justify-content:flex-end;margin:0 0 8px}
.simplebox{border:1px solid var(--border);border-left:4px solid #315d96;border-radius:10px;padding:12px 14px;margin:0 0 12px;background:#fbfdff}
.simplebox h4{margin:0 0 8px}
.cmpgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:10px;margin:8px 0}
.cmpcell{border:1px solid var(--border);border-radius:9px;padding:9px 11px;background:#fff}
.cmpcell .t{font-size:11px;color:var(--muted)}.cmpcell .v{font-size:19px;font-weight:700;line-height:1.35;font-variant-numeric:tabular-nums}.cmpcell .s{font-size:11px;color:var(--muted)}
.cmpcell.cand{border-color:#c39d53;background:#fffaf0}
.primarynote{background:#eef4fb;color:#27496b;border-left:3px solid #5b8dc9;padding:8px 12px;border-radius:6px;font-size:12px;margin:8px 0}
.flagrow{display:flex;flex-wrap:wrap;gap:6px 14px}
.tierchips{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 12px}
.tierchip{border:1px solid var(--border);border-radius:100px;background:#fff;padding:5px 12px;font-size:12px;cursor:pointer}
.tierchip.on{background:var(--accent);border-color:var(--accent);color:#fff}
.tierchip .n{font-weight:700;margin-left:4px}
/* ---- v0.7: 数量マトリクス(仮想スクロール) ---- */
.mxwrap{height:calc(100vh - 330px);min-height:300px;overflow:auto;position:relative;border:1px solid var(--border);border-radius:10px;background:#fff;outline:none}
.mxwrap:focus-visible{outline:2px solid #95d9d0;outline-offset:1px}
.mxt{border-collapse:separate;border-spacing:0;table-layout:fixed;min-width:0;width:auto}
.mxt th,.mxt td{padding:0 6px;border-right:1px solid #e8edf3;border-bottom:1px solid #e8edf3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;box-sizing:border-box;height:30px;line-height:29px;vertical-align:middle}
.mxt thead th{position:sticky;top:0;z-index:3;background:#f2f6fa;height:74px;line-height:1.25;text-align:center;white-space:normal;font-weight:600;font-size:12px;width:84px;min-width:84px;max-width:84px;cursor:pointer;vertical-align:top;padding-top:4px}
.mxt thead th.mxcorner{left:0;z-index:5;width:178px;min-width:178px;max-width:178px;text-align:left;cursor:default;vertical-align:middle}
.mxt thead th.mxtoth{position:sticky;right:0;z-index:4;width:84px;min-width:84px;max-width:84px;cursor:default;vertical-align:middle}
.mxt thead th.mxspc,.mxt td.mxspc{padding:0;border:0;cursor:default}
.mxt .mxcat{font-size:10px;color:var(--muted);font-weight:400;height:13px;overflow:hidden}
.mxt .mxhn{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;max-height:3.75em}
.mxt .mxun{display:none}
.mxt th.mxch.sel{background:#d7ece8}
.mxt tbody th.mxrh{position:sticky;left:0;z-index:2;background:#f7f9fb;width:178px;min-width:178px;max-width:178px;text-align:left;font-weight:600;font-size:12px;cursor:pointer}
.mxt tbody th.mxrh.sel{background:#d7ece8}
.mxt .mxfl{color:var(--muted);font-weight:400;font-size:11px}.mxt .mxtp{color:var(--muted);font-weight:400;font-size:10px;margin-left:5px}
.mxt td.mxc{width:84px;min-width:84px;max-width:84px;text-align:right;font-variant-numeric:tabular-nums;cursor:cell;user-select:none}
.mxt td.mxc.sel{background:#e3f1ef}.mxt td.mxc.act{background:#fff;outline:2px solid var(--accent);outline-offset:-2px;z-index:1;position:relative}
.mxt td.mxc.locked{background:repeating-linear-gradient(135deg,#fff,#fff 6px,#f5f0e4 6px,#f5f0e4 12px);color:#6b5a2a}
.mxt td.mxc.sel.locked{background:#ece8d6}
.mxt td.mxc.linked{box-shadow:inset 3px 0 0 #6aa59c}
.mxt td.mxc.partial{box-shadow:inset 3px 0 0 #d1a100}
.mxt td.mxc.zero{color:#9aa8b8}
.mxt td.mxc.editing{padding:0}
.mxt .mxin{width:100%;height:100%;border:0;outline:0;background:#fffbe8;text-align:right;padding:0 6px;font:inherit;border-radius:0}
.mxt .mxmulti{margin-left:3px;color:#a26516;font-weight:700}
.mxt td.mxrt{position:sticky;right:0;z-index:2;background:#f7f9fb;text-align:right;font-weight:600;width:84px;min-width:84px;max-width:84px;font-variant-numeric:tabular-nums}
.mxt tfoot th,.mxt tfoot td{position:sticky;bottom:0;z-index:3;background:#eef3f8;font-weight:700;text-align:right;border-top:2px solid #cfd9e4}
.mxt tfoot th.mxcorner2{left:0;z-index:5;text-align:left;width:178px;min-width:178px;max-width:178px}
.mxt tfoot td.mxrt{z-index:4;background:#e3ecf5}
.mxt td.mxft{width:84px;min-width:84px;max-width:84px;font-variant-numeric:tabular-nums}
.mxt .mxnull{font-weight:400;font-size:10px;color:var(--warn);margin-left:3px}
.mxt tr.mxspr td{padding:0;border:0;height:0}
.mxinfo{margin-top:8px;padding:9px 12px;border:1px solid var(--border);border-radius:9px;background:#fbfdff;font-size:13px;min-height:42px}
@media(max-width:850px){.mxwrap{height:calc(100vh - 260px)}}
body.detail .dtltoggle,body.detail .dtlbar{display:none}

/* ---- v0.8: 図面作成支援(3ペイン)・CSV取込・材料手配 ---- */
.draftwrap{display:grid;grid-template-columns:290px minmax(0,1fr) 350px;gap:12px;align-items:start}
.draftlist{position:sticky;top:8px;max-height:calc(100vh - 110px);overflow:auto;padding:12px}
.draftitems{margin-top:8px}.draftgrp{margin:8px 0 2px;padding:0}
.draftitem{display:flex;flex-direction:column;align-items:flex-start;width:100%;text-align:left;border:1px solid transparent;background:transparent;border-radius:8px;padding:5px 8px;cursor:pointer;font-size:13px}
.draftitem:hover{background:#eef6f5}.draftitem.on{background:var(--accent-lite);border-color:var(--accent);font-weight:650}
.draftres{margin-top:6px;border:1px solid var(--border);border-radius:8px;background:#fcfdfe;max-height:260px;overflow:auto}
.draftmain,.draftside{min-width:0}.draftsec{margin-bottom:12px;padding:14px}.draftsec h3{font-size:15px;margin:0 0 8px}
.draftttl{display:flex;gap:12px;align-items:baseline;flex-wrap:wrap;margin:0 0 10px}.draftttl h2{margin:0;font-size:22px}
.unreg{color:#a26516;font-style:italic;text-decoration:underline dotted}
.gresrow{display:flex;align-items:center;gap:6px}.gresrow .gres{flex:1}
@media(max-width:1250px){.draftwrap{grid-template-columns:250px minmax(0,1fr)}.draftside{grid-column:1/-1}}
@media(max-width:850px){.draftwrap{display:block}.draftlist{position:static;max-height:none;margin-bottom:12px}}
/* ---- v0.9.1: 「入力」タブ(登録・編集の集約)。スマホ幅でも崩れないよう、1カラム・大きめのタップ領域 ---- */
.nav button[data-onclick="App.go('input')"]{background:#0b7a77;color:#fff;font-weight:700}.nav button[data-onclick="App.go('input')"].active,.nav button[data-onclick="App.go('input')"]:hover{background:#0e9a96}
.inpwrap{display:grid;gap:10px;grid-template-columns:minmax(0,1fr)}.inpwrap>*,.inpbody,.inpmain,.inpform,.inpraw{min-width:0}.inpmain .tablewrap{max-width:100%}
.inpmenu{display:flex;gap:8px;flex-wrap:wrap}
.inpchip{border:1px solid var(--border);background:#fff;border-radius:12px;padding:10px 16px;font-weight:650;min-height:44px;color:var(--ink)}
.inpchip.on{background:var(--accent);border-color:var(--accent);color:#fff}
.inptypes{display:flex;gap:6px;flex-wrap:wrap;border-bottom:1px solid var(--border);padding-bottom:10px}
.inptype{border:1px solid var(--border);background:#fff;border-radius:100px;padding:7px 14px;min-height:40px;color:var(--ink)}
.inptype.on{background:var(--accent-lite);border-color:var(--accent);color:var(--accent);font-weight:700}
.inpmodes{display:flex;gap:6px;margin:0 0 10px}
.inpmode{border:0;background:#e9eef4;border-radius:10px 10px 0 0;padding:10px 18px;min-height:42px;color:var(--muted);font-weight:650}
.inpmode.on{background:#fff;color:var(--accent);box-shadow:inset 0 3px 0 var(--accent)}
.inpmode .n{font-size:11px;background:#d4dde8;border-radius:100px;padding:0 7px;margin-left:4px}
.inptarget{display:flex;flex-wrap:wrap;gap:6px 14px;align-items:center;background:var(--accent-lite);border:2px solid var(--accent);border-radius:12px;padding:9px 14px;margin:0 0 12px}
.inptarget.edit{background:#eaf0fa;border-color:var(--blue)}
.inpt-k{font-size:12px;font-weight:700;color:#fff;background:var(--accent);border-radius:6px;padding:1px 8px}.inptarget.edit .inpt-k{background:var(--blue)}
.inpt-i{display:inline-flex;gap:6px;align-items:baseline}.inpt-l{font-size:12px;color:var(--muted)}.inpt-i strong{font-size:16px}
.inpt-i.warn strong{color:var(--red)}.inpt-i.warn::after{content:"要選択";font-size:11px;color:var(--red);border:1px solid var(--red);border-radius:6px;padding:0 5px}
.inpflash{border-radius:10px;padding:10px 14px;margin:0 0 12px;font-weight:600}
.inpflash.ok{background:#e6f5f2;color:#075e5c;border:1px solid #b7d7d2}
.inpflash.err{background:#fdeaea;color:#8c2e2e;border:1px solid #f0bcbc}
.inpactions{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-top:16px;padding:12px 0;border-top:1px solid var(--border);position:sticky;bottom:0;background:var(--panel)}
.inpactions .button.primary{min-height:46px;padding:10px 22px;font-size:15px}
.inpdirty{color:var(--warn);font-weight:650}
.inprecent{margin-top:12px;display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.inplist{display:grid;gap:6px;margin-top:10px}
.inprow{display:flex;gap:10px;align-items:center;text-align:left;border:1px solid var(--border);background:#fff;border-radius:10px;padding:10px 14px;min-height:48px}
.inprow:hover,.inprow:focus{border-color:var(--accent);background:var(--accent-lite)}
.inprow strong{flex:0 1 auto}.inprow .mini{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.inpgo{margin-left:auto;color:var(--accent);font-size:12px;white-space:nowrap}
.inpsteps{list-style:none;margin:12px 0;padding:0;display:grid;gap:8px}
.inpstep{display:flex;gap:12px;align-items:flex-start;border:1px solid var(--border);border-radius:10px;padding:10px 12px;background:#fff}
.inpn{flex:0 0 28px;height:28px;border-radius:50%;background:var(--accent);color:#fff;display:grid;place-items:center;font-weight:700}
.inpraw .formgrid{margin-bottom:6px}
.st-sel{min-width:120px}
.pad8{padding:8px}
@media(max-width:850px){.inpchip{flex:1 1 calc(50% - 8px);text-align:center;padding:10px 8px}.inptype{flex:1 1 auto}.inpactions .button{flex:1 1 auto}}
@media(max-width:550px){.inpchip{flex:1 1 100%}.inpmodes{display:grid;grid-template-columns:1fr 1fr}.inpmode{border-radius:10px}.inprow{flex-wrap:wrap}.inprow .mini{flex-basis:100%;white-space:normal}.inpt-i strong{font-size:15px}.inptarget{padding:8px 10px}}
@media(max-width:850px){.nav .navgroup{white-space:nowrap;align-self:center;padding:0 4px}}
@media print{.inpwrap{display:none}}
