:root{--bg:#F5F5F7;--surface:#FFFFFF;--text:#1D1D1F;--sub:#6E6E73;--accent:#1F3A5F;--on-accent:#FFFFFF;--line:#D2D2D7;--ok:#187A33;--warn:#9A5B00;--danger:#C5221F;--r-surface:12px;--r-ctl:8px;--ease:cubic-bezier(.2,0,0,1)}
@media (prefers-color-scheme:dark){:root{--bg:#000000;--surface:#1C1C1E;--text:#F5F5F7;--sub:#A1A1A6;--accent:#8FB3E8;--on-accent:#0B1A2E;--line:#38383A;--ok:#5BD478;--warn:#FFB340;--danger:#FF7B72}}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--text);font:400 16px/1.7 -apple-system,"Hiragino Sans","Noto Sans JP",sans-serif;font-variant-numeric:tabular-nums}
a{color:var(--accent)}
:focus-visible{outline:3px solid var(--accent);outline-offset:2px}
h1{font-size:28px;font-weight:700;line-height:1.4;margin:0 0 16px}
h2{font-size:18px;font-weight:600;line-height:1.5;margin:32px 0 8px}
p{margin:0 0 16px}
.sub,.help{font-size:13px;color:var(--sub)}
.wrap{max-width:1040px;margin:0 auto;padding:24px 16px 96px}
.bar{background:var(--surface);position:sticky;top:0;z-index:5}
.bar-in{max-width:1040px;margin:0 auto;padding:8px 16px;display:flex;gap:16px;align-items:center;flex-wrap:wrap}
.brand{font-weight:700;color:var(--text);text-decoration:none;margin-right:8px}
.nav{display:flex;gap:4px;flex:1;overflow-x:auto;-webkit-overflow-scrolling:touch}
.nav a{display:inline-flex;align-items:center;min-height:44px;padding:0 12px;border-radius:var(--r-ctl);color:var(--sub);text-decoration:none;white-space:nowrap;transition:background 150ms var(--ease)}
.nav a:hover{background:var(--bg)}
.nav a[aria-current=page]{color:var(--text);font-weight:600;background:var(--bg)}
.who{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--sub)}
.panel{background:var(--surface);border-radius:var(--r-surface);padding:24px;margin-bottom:24px}
.btn{display:inline-flex;align-items:center;justify-content:center;min-height:44px;min-width:44px;padding:0 16px;border:0;border-radius:var(--r-ctl);background:transparent;color:var(--accent);font:inherit;font-weight:600;cursor:pointer;text-decoration:none;transition:opacity 150ms var(--ease)}
.btn:hover{opacity:.8}
.btn-primary{background:var(--accent);color:var(--on-accent)}
.btn-danger{color:var(--danger)}
.row{display:flex;gap:16px;flex-wrap:wrap;align-items:flex-end}
.row>.grow{flex:1;min-width:160px}
.stack>*+*{margin-top:16px}
label{display:block;font-size:13px;color:var(--sub);margin-bottom:4px}
input[type=text],input[type=email],input[type=password],input[type=date],input[type=time],input[type=number],input[type=month],select,textarea{width:100%;min-height:44px;padding:8px 12px;border:1px solid var(--line);border-radius:var(--r-ctl);background:var(--surface);color:var(--text);font:inherit}
textarea{min-height:120px;resize:vertical}
.choices{display:flex;gap:8px;flex-wrap:wrap}
.choice{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 16px;border:1px solid var(--line);border-radius:var(--r-ctl);cursor:pointer;color:var(--text);font-size:16px;margin:0}
.choice input{width:20px;height:20px;margin:0}
.checks{max-height:280px;overflow:auto;border:1px solid var(--line);border-radius:var(--r-ctl);padding:8px}
.checks .choice{border:0;display:flex;width:100%}
table{width:100%;border-collapse:collapse}
th{font-size:13px;font-weight:600;color:var(--sub);text-align:left;padding:8px 12px;border-bottom:1px solid var(--line)}
td{padding:12px;border-bottom:1px solid var(--line);vertical-align:top}
td.num,th.num{text-align:right}
.scroll{overflow-x:auto}
.big{font-size:40px;font-weight:700;line-height:1.2}
.stats{display:flex;gap:48px;flex-wrap:wrap}
.stats .sub{display:block}
.ok{color:var(--ok)}.warn{color:var(--warn)}.danger{color:var(--danger)}
.flash{padding:16px;border-radius:var(--r-ctl);background:var(--surface);margin-bottom:16px;font-weight:600}
.flash.ok{color:var(--ok)}.flash.warn{color:var(--warn)}.flash.danger{color:var(--danger)}
.tag{display:inline-block;font-size:13px;font-weight:600}
.login{max-width:400px;margin:96px auto 0;padding:0 16px}
.actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-top:24px}
.pager{display:flex;gap:8px;align-items:center;margin:16px 0}
@media (max-width:720px){h1{font-size:24px}.stats{gap:24px}.panel{padding:16px}}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
@media print{.bar,.noprint{display:none!important}body{background:#fff;color:#000}.panel{padding:0;background:#fff}.wrap{padding:0}.pb{page-break-after:always}}

.photo-thumb{display:block;max-width:100%;max-height:320px;margin-top:.5rem;border-radius:8px}

.navgrp{display:inline-flex;align-items:center;flex:none;white-space:nowrap}
.navgrp>summary{white-space:nowrap;list-style:none;cursor:pointer;padding:.45rem .7rem;border-radius:8px;display:inline-block}
.navgrp>summary::-webkit-details-marker{display:none}
.navgrp>summary::after{content:" ▾"}
.navgrp>summary.is-cur{font-weight:700}
.navsub{display:inline-flex;align-items:center;gap:.1rem;padding:0 .2rem;border-left:2px solid GrayText;margin-left:.2rem}
.menu-list,.menu-list ul{list-style:none;margin:0;padding:0}
.menu-list li.mi,.menu-list li.mg>.mg-head{display:flex;align-items:center;gap:.6rem;padding:.55rem .7rem;border:1px solid GrayText;border-radius:10px;margin:.35rem 0;background:Canvas}
.menu-list li.mg{margin:.5rem 0}
.menu-list li.mg>.mg-head{background:color-mix(in srgb,CanvasText 6%,Canvas)}
.menu-list .sub{min-height:2.4rem;margin:.2rem 0 .2rem 1.6rem;padding:.2rem;border:1px dashed GrayText;border-radius:10px}
.menu-list .ml,.menu-list .gname{flex:1}
.menu-list .grip{cursor:grab;user-select:none}
.menu-list li.dragging{opacity:.4}

.nav{flex-wrap:wrap;overflow:visible;gap:2px}
.nav a{min-height:34px;padding:0 9px;font-size:.88rem}
.navgrp>summary{padding:.3rem .55rem;font-size:.88rem}
.navsub{gap:0}
@media (max-width:640px){.nav a{min-height:32px;padding:0 7px;font-size:.82rem}.navgrp>summary{font-size:.82rem;padding:.25rem .4rem}}
.ledger th,.ledger td{white-space:nowrap}.ledger td:first-child{white-space:normal;min-width:11rem}

.tag.ok{background:#dcfce7;color:#14532d}
@media (prefers-color-scheme:dark){.tag.ok{background:#14532d;color:#dcfce7}}
.chart{width:100%;max-width:760px;height:auto}
.chart text{fill:currentColor;font-size:12px}
.chart .c-bud{fill:currentColor;opacity:.28}
.chart .c-fc{fill:#2563eb}
.chart .c-neg{fill:#dc2626}
.chart .axis{stroke:currentColor;opacity:.35}
.prof th,.prof td{white-space:nowrap}
.prof td:first-child,.prof td:nth-last-child(2){white-space:normal;min-width:10rem}
tfoot th{text-align:left}
tfoot th.num{text-align:right}
