:root{--ink:#1b2733;--ink-soft:#5b6b7c;--line:#dde4ea;--bg:#f4f6f8;--card:#fff;--accent:#1667c2;--over:#b3261e;--soon:#c8461a;--near:#b7791f;--far:#5b6b7c;--over-bg:#fdecea;--soon-bg:#fdf0e8;--near-bg:#fdf7e6}*{box-sizing:border-box}body{background:var(--bg);color:var(--ink);margin:0;font-family:Segoe UI,Yu Gothic UI,Hiragino Sans,Noto Sans JP,sans-serif;font-size:15px;line-height:1.6}h1{margin:0;font-size:20px}h2{margin:0 0 8px;font-size:16px}h3{color:var(--ink-soft);margin:20px 0 4px;font-size:15px}button{font:inherit;border:1px solid var(--accent);background:var(--accent);color:#fff;cursor:pointer;border-radius:6px;padding:8px 16px}button:hover{filter:brightness(1.08)}button:disabled{opacity:.55;cursor:default}button.ghost{color:var(--accent);background:#fff}button.ghost.danger{color:var(--over);border-color:var(--over)}input,select,textarea{font:inherit;border:1px solid var(--line);color:var(--ink);background:#fff;border-radius:6px;width:100%;padding:8px 10px}input:focus,select:focus,textarea:focus{outline:2px solid var(--accent);outline-offset:1px}label{color:var(--ink-soft);flex-direction:column;gap:4px;font-size:13px;display:flex}.card{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:20px}.spacer{flex:1}.muted{color:var(--ink-soft)}.error{color:var(--over);margin:8px 0 0;font-weight:600}.error.banner{background:var(--over-bg);border:1px solid var(--over);border-radius:6px;margin:0 0 12px;padding:10px 14px}.hint{color:var(--ink-soft);margin:4px 0 12px;font-size:13px}.req{color:var(--over);font-size:11px;font-weight:700}.login-wrap{place-items:center;min-height:100vh;padding:20px;display:grid}.login{flex-direction:column;gap:14px;width:340px;display:flex}.app{max-width:1080px;margin:0 auto;padding:16px 20px 60px}.bar{align-items:center;gap:10px;padding:12px 0 16px;display:flex}.bar .who{color:var(--ink-soft);font-size:13px}.filters{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:18px;display:flex}.filters .search{flex:1;min-width:220px}.filters select{width:auto}.check{white-space:nowrap;flex-direction:row;align-items:center;gap:6px}.check input{width:auto}.section{margin-bottom:24px}.section .count{color:var(--ink-soft);font-size:13px;font-weight:400}.section.over h2{color:var(--over)}.section.closed h2{color:var(--ink-soft)}.rows{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.row{background:var(--card);border:1px solid var(--line);border-left:5px solid var(--far);cursor:pointer;border-radius:8px;grid-template-columns:132px 1fr auto;align-items:center;gap:14px;padding:10px 14px;display:grid}.row:hover{border-color:var(--accent)}.row-due{flex-direction:column;line-height:1.35;display:flex}.row-due .days{font-size:16px;font-weight:700}.row-due .due-label,.row-due .due-at{color:var(--ink-soft);font-size:11px}.row-name{font-weight:600}.row-sub{color:var(--ink-soft);font-size:12px}.dot{opacity:.5}.row-side{color:var(--ink-soft);white-space:nowrap;flex-direction:column;align-items:flex-end;gap:2px;font-size:12px;display:flex}.status{border:1px solid var(--line);color:var(--ink);border-radius:999px;padding:1px 10px;font-size:11px}.s-落札{color:#12652b;background:#e6f4ea;border-color:#1e8e3e}.s-失注,.s-辞退{color:var(--ink-soft);background:#f1f3f4}.s-応札{border-color:var(--accent);color:#10488a;background:#e8f0fe}.row.due-over{border-left-color:var(--over);background:var(--over-bg)}.row.due-over .days{color:var(--over)}.row.due-soon{border-left-color:var(--soon);background:var(--soon-bg)}.row.due-soon .days{color:var(--soon)}.row.due-near{border-left-color:var(--near);background:var(--near-bg)}.row.due-near .days{color:var(--near)}.row.due-far .days,.row.due-none .days{color:var(--far);font-weight:600}.row.due-none{border-left-color:var(--line);opacity:.75}.empty{text-align:center;padding:40px 20px}.overlay{z-index:10;background:#141e2873;justify-content:center;align-items:flex-start;padding:24px 16px;display:flex;position:fixed;inset:0;overflow:auto}.form{width:100%;max-width:760px}.grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;display:grid}.grid .wide{grid-column:1/-1}.form-buttons{border-top:1px solid var(--line);align-items:center;gap:8px;margin-top:20px;padding-top:16px;display:flex}@media (width<=640px){.row{grid-template-columns:110px 1fr}.row-side{flex-direction:row;grid-column:1/-1;align-items:center;gap:8px}}.warn{color:var(--over);margin-top:4px;font-size:12px;font-weight:600}
