:root{--bg:#f4f5f9;--fg:#1a2238;--mute:#6b7280;--panel:#fff;--line:#dfe3ec;--navy:#1c2748;--gold:#d6aa4e;--accent:#22305a;--accent-fg:#fff;--ok:#1f8a4c;--ng:#c0392b;--warn:#fff7e0}
*{box-sizing:border-box}
html,body{margin:0;background:var(--bg);color:var(--fg);font-family:'Noto Sans JP',-apple-system,"Hiragino Sans",sans-serif;font-size:15px;line-height:1.5}
a{color:var(--accent)}
button{font-family:inherit;font-size:14px;border:none;border-radius:8px;padding:9px 14px;cursor:pointer;background:var(--accent);color:#fff;font-weight:700}
button.ghost{background:#fff;color:var(--fg);border:1px solid var(--line)}
button.sm{padding:5px 10px;font-size:13px}
button:disabled{opacity:.5;cursor:default}
input,select,textarea{font-family:inherit;font-size:15px;padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--fg);width:100%}
input[type=checkbox]{width:20px;height:20px;padding:0}
label{display:block;font-size:12px;color:var(--mute);margin-bottom:3px}
/* レイアウト: PCは左サイドバー、スマホは上バー＋ハンバーガー */
.shell{display:grid;grid-template-columns:220px minmax(0,1fr);min-height:100vh}
.side{background:linear-gradient(180deg,#0f1529,#2a3a6b);color:#fff;padding:18px 14px;display:flex;flex-direction:column;gap:14px;position:sticky;top:0;height:100vh}
.side-h{font-weight:900;font-size:16px;letter-spacing:.06em;display:flex;align-items:center;gap:10px}
.side-logo{height:44px;width:auto}
.side-store{font-size:13px;color:#cbd3ea;margin-top:-8px}
.nav{display:flex;flex-direction:column;gap:6px}
.nav button{background:transparent;color:#e4e8f5;text-align:left;padding:10px 12px;border-radius:8px;font-weight:700;border:1px solid transparent}
.nav button:hover{background:rgba(255,255,255,.08)}
.nav button.on{background:rgba(255,255,255,.16);border-color:rgba(255,255,255,.25)}
.side-f{margin-top:auto;border-top:1px solid rgba(255,255,255,.15);padding-top:12px}
.side-f .who{font-size:13px;margin-bottom:8px;line-height:1.4}.side-f .role{color:#cbd3ea;font-size:12px}
.side-f button{background:rgba(255,255,255,.15);color:#fff;width:100%;padding:8px}
.top{display:none}
.backdrop{display:none}
@media(max-width:899px){
  .shell{display:block}
  .top{display:flex;align-items:center;gap:12px;background:linear-gradient(135deg,#0f1529,#2a3a6b);color:#fff;padding:10px 14px;position:sticky;top:0;z-index:10}
  .top .t{font-weight:900;letter-spacing:.04em}.top-store{font-size:13px;color:#cbd3ea;margin-left:auto}.top-logo{height:30px;width:auto}
  .burger{background:rgba(255,255,255,.15);color:#fff;font-size:20px;padding:4px 10px;line-height:1}
  .side{position:fixed;top:0;bottom:0;left:-260px;width:240px;z-index:30;transition:left .2s;box-shadow:0 0 24px rgba(0,0,0,.3)}
  .side.open{left:0}
  .backdrop.show{display:block;position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:20}
}
.wrap{padding:12px 16px 60px;max-width:1200px;margin:0 auto}
.card{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:14px;margin-bottom:12px}
.card h2{font-size:15px;margin:0 0 10px;padding-left:10px;border-left:4px solid var(--accent)}
.row{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px}
.mnav{display:flex;align-items:center;gap:8px;margin-bottom:10px}
.mnav .m{font-weight:900;font-size:18px;min-width:120px;text-align:center}
.sum{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:8px}
.sum .c{background:#f6f7fb;border-radius:8px;padding:8px 10px}
.sum .c .l{font-size:11px;color:var(--mute)}
.sum .c .v{font-weight:700;font-size:16px;font-variant-numeric:tabular-nums}
.sum .c.tot{background:var(--navy);color:#fff}.sum .c.tot .l{color:#cbd3ea}
.days{display:grid;grid-template-columns:repeat(auto-fill,minmax(64px,1fr));gap:6px}
.days button{background:#fff;color:var(--fg);border:1px solid var(--line);padding:6px 4px;font-size:13px;font-weight:500;line-height:1.3}
.days button .s{display:block;font-size:10px;color:var(--mute)}
.days button.has{border-color:var(--accent);background:#eef1fa}
.days button.sel{background:var(--accent);color:#fff}.days button.sel .s{color:#dfe5f7}
.days button.sat{color:#2457c5}.days button.sun{color:#c0392b}
.slot{display:grid;grid-template-columns:1.2fr 1fr 1fr auto;gap:6px;align-items:end;padding:6px 0;border-bottom:1px dashed var(--line)}
.slot .chks{display:flex;gap:14px;align-items:center;padding-bottom:9px}
.slot .chk{display:flex;align-items:center;gap:4px;font-size:14px;color:var(--fg);margin:0;white-space:nowrap}
table{width:100%;border-collapse:collapse;font-size:13px;font-variant-numeric:tabular-nums}
th{background:#eef1f7;text-align:left;padding:7px 8px;font-size:12px;color:#3b4459;white-space:nowrap}
td{padding:7px 8px;border-bottom:1px solid var(--line);white-space:nowrap}
td.r,th.r{text-align:right}
tr.total td{font-weight:900;background:#f6f7fb}
.tblwrap{overflow:auto}
.msg{font-size:13px;color:var(--mute)}
.err{color:var(--ng);font-size:13px;margin-top:6px}
.ok{color:var(--ok)}
.badge{display:inline-block;font-size:11px;padding:2px 8px;border-radius:10px;background:#eef1f7}
.badge.paid{background:#dff3e6;color:var(--ok)}
.login{max-width:380px;margin:60px auto;text-align:center}
.login .logo{font-size:18px;font-weight:900;color:var(--navy);margin-bottom:16px}
.login-logo{height:64px;width:auto;display:block;margin:0 auto 8px}
.btns{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.hint{font-size:12px;color:var(--mute);margin-top:6px}
@media(max-width:600px){.slot{grid-template-columns:1fr 1fr;grid-auto-rows:auto}.slot .chks{padding-bottom:10px;gap:16px}}
/* 明細書 */
.sheet{background:#fff;color:#1a2238;max-width:760px;margin:0 auto;padding:36px 40px;font-size:13px}
.sheet h1{font-size:22px;letter-spacing:.2em;text-align:center;margin:0 0 20px}
.sheet .hd{display:flex;justify-content:space-between;gap:20px;margin-bottom:16px}
.sheet .to{font-size:16px;font-weight:700;border-bottom:2px solid #1a2238;padding-bottom:4px}
.sheet .tot{background:#f6f7fb;border:2px solid #1c2748;border-radius:8px;padding:10px 16px;display:flex;justify-content:space-between;align-items:center;font-size:18px;font-weight:900;margin:14px 0}
.sheet table td,.sheet table th{padding:6px 8px}
.sheet .iss{margin-top:24px;font-size:12px;color:#3b4459;border-top:1px solid #dfe3ec;padding-top:10px}
@media print{body{background:#fff}.top,.nav,.noprint{display:none!important}.wrap{padding:0;max-width:none}.card{border:none;padding:0}.sheet{padding:10mm 12mm}@page{size:A4;margin:10mm}}
/* 明細書のスマホ表示 */
@media(max-width:600px){
  .sheet{padding:18px 14px;font-size:12px}
  .sheet h1{font-size:18px;margin-bottom:12px}
  .sheet .hd{flex-direction:column;gap:8px}
  .sheet .hd>div:last-child{text-align:left!important}
  .sheet .hd img{margin:0 0 6px 0!important}
  .sheet .tot{font-size:15px;padding:8px 10px}
  .sheet table{font-size:12px}
  .sheet td,.sheet th{white-space:normal;padding:5px 4px}
  .sheet td.r{white-space:nowrap;font-size:12px}
  .sheet .msg{font-size:11px}
}
/* 成績グラフ */
.pies{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px}
.pie{text-align:center}.pie canvas{max-height:180px}.pie .pl{font-size:12px;color:var(--mute);margin-top:6px}
.chartbox{position:relative;height:260px}
@media(max-width:600px){.chartbox{height:220px}}
