:root{--font:-apple-system, BlinkMacSystemFont, "Hiragino Sans", "Hiragino Kaku Gothic ProN", "Segoe UI", "Noto Sans JP", Roboto, Meiryo, system-ui, sans-serif;--font-doc:"Hiragino Mincho ProN", "Hiragino Mincho Pro", "Noto Serif JP", serif;--bg:#f4f6fa;--bg-2:#eef2f8;--surface:#fff;--surface-2:#f7f9fc;--surface-3:#f1f4f9;--ink:#232838;--ink-2:#4b5265;--ink-3:#6a7285;--line:#eaedf4;--line-2:#e1e6ef;--line-strong:#d6dce7;--indigo-50:#eef1fb;--indigo-100:#e2e7f8;--indigo-200:#cbd3f1;--indigo-300:#a9b4e6;--indigo-400:#808ed6;--indigo-500:#5c6ac4;--indigo-600:#4a57b3;--indigo-700:#3b4794;--navy-50:#eef1fb;--gold-100:#fbf4de;--gold-200:#f4e7be;--gold-300:#e8d18c;--gold-400:#dab85f;--gold-500:#c69a3a;--gold-600:#a87e27;--gold-ink:#7c611f;--ok:#2e7d50;--ok-bg:#e7f4ec;--ok-line:#cde7d6;--warn:#8a5a12;--warn-bg:#fbf0da;--warn-line:#f0e0b8;--danger:#b23b3b;--danger-bg:#fbeaea;--danger-line:#f2d0d0;--info:#4451a8;--info-bg:#eaeefb;--info-line:#d7def6;--muted:#566072;--muted-bg:#eef1f6;--muted-line:#dee3ec;--vermilion:#c0392b;--r-card:20px;--r-card-2:16px;--r-btn:12px;--r-input:12px;--r-pill:999px;--sh-1:0 1px 2px #2630560a, 0 6px 16px #2630560d;--sh-2:0 2px 6px #2630560d, 0 12px 30px #26305612}*{box-sizing:border-box}html{-webkit-font-smoothing:auto}body{background:var(--bg);color:var(--ink-2);font-family:var(--font);margin:0;font-size:14px;line-height:1.7}a{color:var(--indigo-600);text-decoration:none}a:hover{text-decoration:underline}:focus-visible{outline:2px solid var(--indigo-400);outline-offset:2px}.shell{min-height:100vh;display:flex}.sidebar{background:var(--surface);border-right:1px solid var(--line-2);flex-direction:column;flex:0 0 176px;gap:2px;width:176px;padding:18px 12px;display:flex}.brand{padding:4px 10px 14px}.brand__t{color:var(--ink);font-size:15px;font-weight:800;line-height:1.5}.brand__s{color:var(--ink-3);letter-spacing:.06em;font-size:10.5px}.nav__item{color:var(--ink-2);border-radius:10px;padding:8px 12px;font-size:13px;font-weight:600;display:block}.nav__item:hover{background:var(--surface-2);text-decoration:none}.nav__item--active{background:var(--indigo-50);color:var(--indigo-700)}.nav__item--sub{padding:6px 12px 6px 22px;font-size:12.5px;font-weight:500}.nav__item--planned{color:var(--ink-3);cursor:default;font-weight:500}.nav__item--planned:hover{background:0 0}.nav__item--planned .m{color:var(--gold-ink);margin-left:6px;font-size:10px}.sidebar__foot{color:var(--ink-3);border-top:1px solid var(--line);margin-top:auto;padding:10px 12px;font-size:11px}.main{flex-direction:column;flex:1;min-width:0;display:flex}.topbar{background:var(--surface);border-bottom:1px solid var(--line-2);align-items:center;gap:16px;height:56px;padding:0 22px;display:flex}.topbar__title{color:var(--ink);font-size:15px;font-weight:800}.topbar__crumb{color:var(--ink-3);font-size:12px}.topbar__spacer{margin-left:auto}.topbar__user{color:var(--ink-2);font-size:12.5px;font-weight:600}.topbar__role{color:var(--gold-ink);background:var(--gold-100);border:1px solid var(--gold-200);border-radius:var(--r-pill);margin-left:8px;padding:2px 10px;font-size:11px}.content{width:100%;max-width:1240px;padding:22px}.page-head{margin-bottom:16px}.page-head__title{color:var(--ink);margin:0 0 2px;font-size:20px;font-weight:800}.page-head__desc{color:var(--ink-3);margin:0;font-size:12.5px}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-card);box-shadow:var(--sh-1);padding:18px 20px}.toolbar{flex-wrap:wrap;align-items:center;gap:10px;margin:14px 0;display:flex}.toolbar__spacer{margin-left:auto}.btn{font-family:var(--font);border-radius:var(--r-btn);border:1px solid var(--indigo-600);background:var(--indigo-600);color:#fff;cursor:pointer;align-items:center;gap:6px;padding:8px 16px;font-size:13px;font-weight:700;line-height:1.4;display:inline-flex}.btn:hover{background:var(--indigo-700);border-color:var(--indigo-700)}.btn--ghost{background:var(--surface);color:var(--indigo-700);border-color:var(--line-strong)}.btn--ghost:hover{background:var(--indigo-50)}.btn--sm{padding:5px 12px;font-size:12px}.btn:disabled{opacity:.5;cursor:not-allowed}.fld{flex-direction:column;gap:5px;margin-bottom:14px;display:flex}.fld>label{color:var(--ink-2);font-size:12px;font-weight:700}.req{color:var(--vermilion);margin-left:6px;font-size:10px}.input,.select{font-family:var(--font);color:var(--ink);background:var(--surface);border:1px solid var(--line-strong);border-radius:var(--r-input);width:100%;padding:9px 12px;font-size:13.5px}.input:focus,.select:focus{border-color:var(--indigo-400);box-shadow:0 0 0 3px var(--indigo-50);outline:none}.input[aria-invalid=true]{border-color:var(--danger)}.table-wrap{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-card-2);box-shadow:var(--sh-1);overflow-x:auto}.table{border-collapse:collapse;width:100%;font-size:13px}.table th{text-align:left;letter-spacing:.05em;color:var(--ink-3);background:var(--surface-2);border-bottom:1px solid var(--line-2);white-space:nowrap;padding:10px 14px;font-size:11px}.table td{border-bottom:1px solid var(--line);vertical-align:middle;padding:11px 14px}.table tr:last-child td{border-bottom:none}.table--zebra tbody tr:nth-child(2n){background:var(--surface-2)}.table tbody tr.is-click{cursor:pointer}.table tbody tr.is-click:hover{background:var(--indigo-50)}.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.pill{border-radius:var(--r-pill);white-space:nowrap;padding:2px 10px;font-size:11px;font-weight:700;display:inline-block}.pill--ok{background:var(--ok-bg);color:var(--ok)}.pill--warn{background:var(--warn-bg);color:var(--warn)}.pill--danger{background:var(--danger-bg);color:var(--danger)}.pill--info{background:var(--info-bg);color:var(--info)}.pill--muted{background:var(--muted-bg);color:var(--muted)}.avatar{background:var(--indigo-50);width:30px;height:30px;color:var(--indigo-700);border-radius:50%;flex:0 0 30px;justify-content:center;align-items:center;font-size:13px;font-weight:800;display:inline-flex}.grid{gap:14px;display:grid}.grid--4{grid-template-columns:repeat(4,1fr)}@media (max-width:900px){.grid--4{grid-template-columns:repeat(2,1fr)}}.stat{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-card-2);box-shadow:var(--sh-1);padding:13px 16px}.stat__label{color:var(--ink-3);letter-spacing:.04em;font-size:11px}.stat__value{color:var(--ink);font-variant-numeric:tabular-nums;font-size:24px;font-weight:800}.stat__value small{color:var(--ink-3);margin-left:2px;font-size:12px;font-weight:600}.alert{border:1px solid var(--line-2);background:var(--surface-2);color:var(--ink-2);border-radius:12px;gap:8px;padding:10px 14px;font-size:12.5px;display:flex}.alert--info{background:var(--info-bg);border-color:var(--info-line);color:var(--info)}.alert--warn{background:var(--warn-bg);border-color:var(--warn-line);color:var(--warn)}.alert--danger{background:var(--danger-bg);border-color:var(--danger-line);color:var(--danger)}.ovl{z-index:200;background:#1e243a57;display:block;position:fixed;inset:0}.drawer{background:var(--surface);border-left:1px solid var(--line-2);width:min(600px,94vw);box-shadow:var(--sh-2);z-index:210;flex-direction:column;display:flex;position:fixed;top:0;bottom:0;right:0}.drawer__head{border-bottom:1px solid var(--line-2);align-items:center;gap:10px;padding:16px 20px;display:flex}.drawer__title{color:var(--ink);margin:0;font-size:16px;font-weight:800}.drawer__x{border:1px solid var(--line-strong);background:var(--surface);width:32px;height:32px;color:var(--ink-2);cursor:pointer;border-radius:10px;justify-content:center;align-items:center;margin-left:auto;font-size:15px;display:inline-flex}.drawer__x:hover{background:var(--surface-2);text-decoration:none}.drawer__body{flex:1;padding:18px 20px;overflow-y:auto}.kv{grid-template-columns:120px 1fr;gap:7px 14px;font-size:13px;display:grid}.kv__k{color:var(--ink-3);padding-top:1px;font-size:12px}.kv__v{color:var(--ink)}.rel{flex-direction:column;gap:8px;display:flex}.rel__row{border:1px solid var(--line);background:var(--surface);border-radius:12px;align-items:center;gap:10px;padding:9px 12px;display:flex}.rel__nm{color:var(--ink);font-size:13px;font-weight:700}.rel__sub{color:var(--ink-3);font-size:11.5px}.badge{border:1px solid var(--line-strong);color:var(--ink-2);background:var(--surface-2);border-radius:8px;padding:1px 8px;font-size:10.5px;font-weight:700;display:inline-block}.blocks{flex-wrap:wrap;gap:8px;display:flex}.blocks .chip{color:var(--ink-2);border:1px solid var(--line-strong);border-radius:var(--r-pill);background:var(--surface);align-items:center;gap:6px;padding:5px 14px;font-size:12.5px;font-weight:700;display:inline-flex}.blocks .chip:hover{background:var(--indigo-50);text-decoration:none}.blocks .chip--active{background:var(--indigo-600);border-color:var(--indigo-600);color:#fff}.map-grid{grid-template-columns:repeat(var(--map-cols,8), minmax(52px, 1fr));gap:6px;margin-top:14px;display:grid}.map-wrap{overflow-x:auto}.map-cell{border:1px solid var(--line-strong);cursor:pointer;text-align:center;min-height:44px;color:var(--ink-2);background:var(--surface);border-radius:10px;justify-content:center;align-items:center;padding:4px;font-size:11.5px;font-weight:700;line-height:1.3;display:flex}.map-cell:hover{outline:2px solid var(--indigo-300);text-decoration:none}.map-cell--free{background:var(--ok-bg);border:2px solid var(--ok);color:#2b7549}.map-cell--taken{background:var(--indigo-600);border:2px solid var(--indigo-700);color:#fff}.map-cell--hold{background:var(--warn-bg);border:2px dashed var(--warn);color:var(--warn)}.map-cell--own{background:var(--muted-bg);border:2px dotted var(--muted);color:var(--muted)}.map-cell--sel{outline:2.5px solid var(--gold-400);outline-offset:1px}.map-legend{color:var(--ink-3);flex-wrap:wrap;gap:14px;margin-top:12px;font-size:11.5px;display:flex}.map-legend i{vertical-align:-2px;border-radius:4px;width:12px;height:12px;margin-right:5px;display:inline-block}.login-wrap{background:var(--bg);justify-content:center;align-items:center;min-height:100vh;padding:20px;display:flex}.login-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-card);width:400px;max-width:100%;box-shadow:var(--sh-2);padding:34px 34px 28px}.login-brand{text-align:center;margin-bottom:22px}.login-brand__rule{background:var(--gold-400);border-radius:2px;width:44px;height:3px;margin:12px auto 0}.login-brand h1{color:var(--ink);margin:0 0 2px;font-size:19px;font-weight:800}.login-brand p{color:var(--ink-3);letter-spacing:.05em;margin:0;font-size:11.5px}
