:root{--t-micro:11px;--t-xs:12px;--t-sm:14px;--t-md:16px;--t-lg:20px;--t-xl:34px;--track-tight:-.03em;--track-snug:-.012em;--track-label:.08em;--w-normal:400;--w-medium:500;--w-bold:600;--lh-number:1.05;--lh-heading:1.3;--lh-body:1.6;--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:20px;--sp-6:24px;--sp-7:32px;--sp-8:40px;--r-panel:8px;--r-ctl:6px;--r-tag:4px;--ease:.12s cubic-bezier(.4, 0, .2, 1);--font:-apple-system, "Hiragino Sans", "PingFang SC", "Noto Sans JP", sans-serif;--mono:ui-monospace, SFMono-Regular, monospace;--ground:#f2f2f0;--surface:#fff;--ink:#111;--muted:#565656;--faint:#757575;--line:#e0e0de;--rule:#c9c9c6;--wash:#f7f7f5;--accent:#111;--accent-wash:#f0f0ee;--ok:#1a7f4e;--warn:#9a5108;--bad:#a11c1c}body{font-family:var(--font);font-size:var(--t-sm);line-height:var(--lh-body);color:var(--ink);background:var(--ground);-webkit-font-smoothing:antialiased}.mono{font-family:var(--mono);font-variant-numeric:tabular-nums}.num{font-variant-numeric:tabular-nums}.muted{color:var(--muted)}.faint{color:var(--faint)}.lbl{font-size:var(--t-micro);font-weight:var(--w-medium);letter-spacing:var(--track-label);color:var(--muted)}.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-panel);padding:var(--sp-6)}.bare-head{padding-bottom:var(--sp-4);border-bottom:1px solid var(--rule)}.panel-head{align-items:baseline;gap:var(--sp-3);padding-bottom:var(--sp-3);border-bottom:1px solid var(--rule);margin-bottom:var(--sp-5);display:flex}.panel-head h2{font-size:var(--t-md);font-weight:var(--w-bold);letter-spacing:var(--track-snug);margin:0}.panel-head .summary{text-align:right;color:var(--muted);font-variant-numeric:tabular-nums;margin-left:auto;font-size:13px}.hero-num{font-size:var(--t-xl);font-weight:var(--w-bold);letter-spacing:var(--track-tight);line-height:var(--lh-number);font-variant-numeric:tabular-nums;display:block}.ctl{align-items:center;gap:var(--sp-2);background:var(--surface);border:1px solid var(--rule);border-radius:var(--r-ctl);font:inherit;color:var(--ink);cursor:pointer;transition:border-color var(--ease);padding:6px 10px;font-size:13px;display:inline-flex}.ctl:hover{border-color:var(--muted)}.stepper{background:var(--surface);border:1px solid var(--rule);border-radius:var(--r-ctl);display:inline-flex;overflow:hidden}.stepper button{font:inherit;color:var(--muted);cursor:pointer;transition:background var(--ease), color var(--ease);background:0 0;border:0;padding:6px 9px;font-size:12px}.stepper button:hover{background:var(--wash);color:var(--ink)}table{border-collapse:collapse;width:100%}thead th{font-size:var(--t-micro);font-weight:var(--w-medium);letter-spacing:var(--track-label);color:var(--muted);text-align:left;padding-bottom:var(--sp-2);border-bottom:1px solid var(--rule)}tbody td{border-bottom:1px solid var(--line);vertical-align:baseline;padding:9px 0}tbody tr:last-child td{border-bottom:0}tbody tr{transition:background var(--ease)}.hoverable tbody tr:hover{background:var(--wash)}td.t-time{font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:var(--t-xs);color:var(--faint)}td.t-num{font-family:var(--mono);font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap}td.t-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.t-note{color:var(--faint);font-size:var(--t-xs);margin-left:6px}tr.is-selected td{background:var(--accent-wash)}tr.is-selected td:first-child{box-shadow:inset 2px 0 0 var(--accent)}.filters{margin-inline:calc(var(--sp-2) * -1);display:grid}.filters a{align-items:baseline;gap:var(--sp-2);padding:7px var(--sp-2);border-radius:var(--r-ctl);color:var(--muted);transition:background var(--ease), color var(--ease);font-size:13px;text-decoration:none;display:flex}.filters a:hover{background:var(--wash);color:var(--ink)}.filters a.on{color:var(--ink);font-weight:var(--w-medium);background:var(--accent-wash);box-shadow:inset 2px 0 0 var(--accent)}.filters .count{font-family:var(--mono);font-size:var(--t-xs);color:var(--faint);margin-left:auto}details>summary{list-style:none}details>summary::-webkit-details-marker{display:none}.more{font:inherit;font-size:var(--t-xs);color:var(--faint);cursor:pointer;transition:color var(--ease);background:0 0;border:0;align-items:center;gap:5px;padding:0;display:inline-flex}.more:after{content:"›";font-size:13px}details[open] .more:after{content:"‹"}.more:hover{color:var(--ink)}details .body{margin-top:var(--sp-3);color:var(--muted);font-size:13px}details .body>div{margin-bottom:2px}:where(a,button,summary,[tabindex]):focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--r-tag)}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}*,:before,:after{box-sizing:border-box}html{height:100%}body{min-height:100%;margin:0}a{color:inherit}.topbar{align-items:center;gap:var(--sp-3);height:48px;padding:0 var(--sp-4);background:var(--surface);border-bottom:1px solid var(--rule);z-index:10;display:flex;position:sticky;top:0}.topbar .brand{font-size:var(--t-md);font-weight:var(--w-bold);letter-spacing:var(--track-snug);white-space:nowrap;text-decoration:none}.topbar nav{gap:var(--sp-1);scrollbar-width:none;display:flex;overflow-x:auto}.topbar nav a{border-radius:var(--r-ctl);color:var(--muted);white-space:nowrap;transition:background var(--ease), color var(--ease);padding:6px 10px;font-size:13px;text-decoration:none}.topbar nav a:hover{background:var(--wash);color:var(--ink)}.topbar nav a.on{color:var(--ink);font-weight:var(--w-medium);background:var(--accent-wash)}.topbar .right{align-items:center;gap:var(--sp-1);margin-left:auto;display:flex}.topbar .right a,.topbar .right button{font:inherit;color:var(--muted);border-radius:var(--r-ctl);cursor:pointer;transition:background var(--ease), color var(--ease);background:0 0;border:0;padding:6px 8px;font-size:13px;text-decoration:none}.topbar .right a:hover,.topbar .right button:hover{background:var(--wash);color:var(--ink)}main.page{max-width:1100px;padding:var(--sp-5) var(--sp-4) var(--sp-8);margin:0 auto}.login-wrap{min-height:100dvh;padding:var(--sp-4);place-items:center;display:grid}.login{gap:var(--sp-3);width:100%;max-width:360px;display:grid}.login h1{margin:0 0 var(--sp-2);font-size:var(--t-lg);font-weight:var(--w-bold);letter-spacing:var(--track-snug)}.input{font:inherit;font-size:var(--t-md);border:1px solid var(--rule);border-radius:var(--r-ctl);background:var(--surface);width:100%;min-height:44px;color:var(--ink);padding:10px 12px}.input:focus{outline:2px solid var(--accent);outline-offset:1px}.btn{font:inherit;font-size:var(--t-sm);font-weight:var(--w-medium);border:1px solid var(--ink);border-radius:var(--r-ctl);background:var(--ink);color:#fff;cursor:pointer;min-height:44px;transition:background var(--ease);padding:10px 14px}.btn:hover{background:#000}.error{color:var(--bad);margin:0;font-size:13px}.day-head{align-items:baseline;gap:var(--sp-4);padding-bottom:var(--sp-4);border-bottom:1px solid var(--rule);flex-wrap:wrap;display:flex}.day-head .date{font-size:var(--t-xl);font-weight:var(--w-bold);letter-spacing:var(--track-tight);line-height:var(--lh-number);font-variant-numeric:tabular-nums}.day-head .dow{font-size:var(--t-md);color:var(--muted)}.day-head .stepper{margin-left:auto}.stepper a{color:var(--muted);text-align:center;min-width:44px;transition:background var(--ease), color var(--ease);padding:6px 10px;font-size:12px;text-decoration:none;display:inline-block}.stepper a:hover{background:var(--wash);color:var(--ink)}.stepper .v{border-inline:1px solid var(--line);padding:6px 10px;font-size:13px}.counts{gap:var(--sp-4);padding:var(--sp-5) 0;grid-template-columns:repeat(3,1fr);display:grid}.counts .lbl{margin-bottom:var(--sp-1);display:block}.sections{gap:var(--sp-4);display:grid}.table-wrap{overflow-x:auto}table{min-width:0}.table-wrap>table{min-width:560px}td.empty{color:var(--faint);padding:var(--sp-4) 0}@media (width<=720px){main.page{padding:var(--sp-4) var(--sp-4) var(--sp-8)}.panel{padding:var(--sp-4)}.day-head .date{font-size:28px}.counts{gap:var(--sp-3)}}.sections>.panel{min-width:0}.table-wrap{-webkit-overflow-scrolling:touch}.list-head{align-items:baseline;gap:var(--sp-3);padding-bottom:var(--sp-4);border-bottom:1px solid var(--rule);margin-bottom:var(--sp-5);display:flex}.list-head h1{font-size:var(--t-lg);font-weight:var(--w-bold);letter-spacing:var(--track-snug);margin:0}.list-head .summary{color:var(--muted);font-variant-numeric:tabular-nums}.list-head .ctl{min-height:36px;margin-left:auto;text-decoration:none}tr.off td{color:var(--faint)}td a{font-weight:var(--w-medium);text-decoration:none}td a:hover{text-decoration:underline}.tag{font-size:var(--t-micro);letter-spacing:var(--track-label);border:1px solid var(--rule);border-radius:var(--r-tag);color:var(--muted);vertical-align:1px;padding:1px 6px;display:inline-block}.tag.warn{color:var(--warn);border-color:currentColor}.form{gap:var(--sp-4);max-width:560px;display:grid}.field{gap:var(--sp-1);display:grid}.field .lbl{text-transform:none}.row2{gap:var(--sp-3);grid-template-columns:1fr 1fr;display:grid}select.input{appearance:auto}textarea.input{resize:vertical;min-height:88px}.check{align-items:center;gap:var(--sp-2);min-height:44px;font-size:var(--t-sm);display:flex}.check input{width:20px;height:20px}.actions{gap:var(--sp-2);padding-top:var(--sp-2);align-items:center;display:flex}.btn.secondary{background:var(--surface);color:var(--ink);border-color:var(--rule)}.btn.secondary:hover{background:var(--wash)}.errors{padding:var(--sp-3) var(--sp-4);border:1px solid var(--bad);border-radius:var(--r-ctl);color:var(--bad);gap:2px;margin:0;font-size:13px;list-style:none;display:grid}@media (width<=720px){.row2{grid-template-columns:1fr}}th:not(:last-child),td:not(:last-child){padding-right:var(--sp-4)}.warn-text{color:var(--warn)}.topbar .right a,.topbar .right button,.list-head h1,.list-head .ctl{white-space:nowrap}@media (width<=720px){.topbar{gap:var(--sp-2);padding:0 var(--sp-3)}.topbar .right a,.topbar .right button{padding:6px}.list-head{row-gap:var(--sp-2);flex-wrap:wrap}.list-head .summary{flex-basis:100%;order:3;font-size:13px}.hide-m{display:none}}.two-col{gap:var(--sp-4);grid-template-columns:240px minmax(0,1fr);align-items:start;display:grid}.side{position:sticky;top:64px}.side .search{margin-top:var(--sp-4)}.filters a.on{box-shadow:inset 2px 0 0 var(--accent)}.bad-text{color:var(--bad)}.ok-text{color:var(--ok)}.kv{gap:var(--sp-2) var(--sp-4);font-size:var(--t-sm);grid-template-columns:auto 1fr;display:grid}.kv dt{color:var(--muted)}.kv dd{text-align:right;font-variant-numeric:tabular-nums;font-weight:var(--w-medium);margin:0}.actions-col{gap:var(--sp-2);margin-top:var(--sp-4);display:grid}.actions-col form{display:contents}.actions-col .btn{width:100%}.chk-grid{gap:var(--sp-2);grid-template-columns:repeat(auto-fill,minmax(140px,1fr));display:grid}.chk-grid label{align-items:center;gap:var(--sp-2);min-height:40px;padding:0 var(--sp-2);border:1px solid var(--line);border-radius:var(--r-ctl);font-size:13px;display:flex}.chk-grid label.off{color:var(--faint)}.chk-grid input{width:18px;height:18px}.status-line{font-size:var(--t-md);font-weight:var(--w-medium)}@media (width<=900px){.two-col{grid-template-columns:1fr}.side{position:static}.side.after{order:2}}@media (width<=720px){.filters{grid-template-columns:repeat(2,1fr)}}.two-col.detail{grid-template-columns:minmax(0,1fr) 280px}.two-col.detail .form{max-width:none}@media (width<=900px){.two-col.detail{grid-template-columns:1fr}.two-col.detail .side{order:-1}}.two-col>*{min-width:0}.hints{gap:var(--sp-4);color:var(--muted);margin-top:calc(var(--sp-3) * -1);padding-bottom:var(--sp-4);font-size:13px;display:flex}.grid table{table-layout:fixed;min-width:720px}.grid th.room,.grid td.room{background:var(--surface);z-index:1;text-align:left;width:88px;padding-right:var(--sp-2);position:sticky;left:0}.grid th{text-align:center;padding-right:0}.grid th .d{font-size:var(--t-xs);color:var(--ink);letter-spacing:0;display:block}.grid th.wk .d{color:var(--faint)}.grid td{text-align:center;border-left:1px solid var(--line);white-space:nowrap;padding:5px 1px;font-size:12px;overflow:hidden}.grid td.room{font-weight:var(--w-medium);border-left:0}.grid td.arrival{background:var(--ink);color:#fff}.grid td.arrival a{color:inherit}.grid td.stay{background:var(--accent-wash)}.grid td.off{background:var(--wash);color:var(--faint)}.grid tr.off td.room{color:var(--faint)}.grid th.today,.grid td.today{box-shadow:inset 0 -2px 0 var(--accent)}.grid td a{font-weight:var(--w-medium);text-decoration:none;display:block}.shifts table{table-layout:fixed;min-width:0}.shifts th.who,.shifts td.who{background:var(--surface);z-index:1;text-align:left;width:72px;padding-right:var(--sp-2);white-space:nowrap;text-overflow:ellipsis;position:sticky;left:0;overflow:hidden}.shifts th{text-align:center;width:38px;padding-right:0}.shifts th .d{font-size:var(--t-xs);color:var(--ink);letter-spacing:0;display:block}.shifts th.wk .d,.shifts th.wk{color:var(--faint)}.shifts td{border-left:1px solid var(--line);text-align:center;padding:2px 1px}.shifts td.who{font-weight:var(--w-medium);border-left:0}.shifts td.today,.shifts th.today{box-shadow:inset 0 -2px 0 var(--accent)}.shifts form{display:contents}.shifts button.cell{font:inherit;width:100%;min-height:40px;color:var(--ink);cursor:pointer;border-radius:var(--r-tag);transition:background var(--ease);background:0 0;border:0;padding:0;font-size:12px}.shifts button.cell:hover{background:var(--wash)}.shifts button.cell.on{background:var(--accent-wash);font-weight:var(--w-medium)}.shifts button.cell.rest{color:var(--faint);background:var(--wash)}.shifts td.wk button.cell:not(.on):not(.rest){background:0 0}.week table{min-width:0}.week th,.week td{text-align:center}.week th.who,.week td.who{text-align:left}.week td .lb{border-radius:var(--r-tag);min-width:40px;padding:4px 0;display:inline-block}.week td .lb.on{background:var(--accent-wash);font-weight:var(--w-medium)}.week td .lb.rest{color:var(--faint)}.inline-form{gap:var(--sp-2);align-items:center;display:flex}.inline-form .input{max-width:240px}.staff-list td form{display:inline}.link-btn{font:inherit;color:var(--muted);cursor:pointer;border-radius:var(--r-ctl);background:0 0;border:0;padding:4px 6px;font-size:13px}.link-btn:hover{background:var(--wash);color:var(--ink)}.shifts th{width:32px}.week th.who,.week td.who{white-space:nowrap;width:72px}.week td .lb{min-width:34px;font-size:13px}.week th,.week td{padding-left:2px;padding-right:2px}.overview{gap:var(--sp-4);padding-bottom:var(--sp-5);border-bottom:1px solid var(--rule);margin-bottom:var(--sp-5);grid-template-columns:minmax(0,1fr) auto;align-items:end;display:grid}.overview .big{font-size:56px;font-weight:var(--w-bold);letter-spacing:var(--track-tight);font-variant-numeric:tabular-nums;line-height:1}.overview .big small{font-size:var(--t-lg);font-weight:var(--w-medium);color:var(--muted);margin-left:2px}.overview .sub{color:var(--muted);font-size:var(--t-sm);margin-top:var(--sp-2)}.kpis{gap:var(--sp-6);grid-template-columns:repeat(5,auto);justify-content:end;display:grid}.kpis .lbl{margin-bottom:2px;display:block}.kpis .v{font-size:var(--t-md);font-weight:var(--w-medium);font-variant-numeric:tabular-nums;white-space:nowrap}.cmp td.t-num,.cmp th.r{text-align:right}.delta{font-size:var(--t-xs);margin-left:6px}.heat{grid-template-columns:repeat(7,1fr);gap:4px;display:grid}.heat .h{font-size:var(--t-micro);color:var(--muted);text-align:center;letter-spacing:var(--track-label);padding-bottom:2px}.heat .c{border-radius:var(--r-tag);min-height:52px;font-size:var(--t-xs);border:1px solid var(--line);flex-direction:column;justify-content:space-between;padding:4px 6px;display:flex}.heat .c .n{font-weight:var(--w-medium)}.heat .c .p{font-variant-numeric:tabular-nums}.heat .c.dark{color:#fff;border-color:#0000}.heat .c.empty{border-color:#0000}.heat .c.today{box-shadow:inset 0 0 0 2px var(--accent)}@media (width<=900px){.overview{grid-template-columns:1fr}.kpis{justify-content:start;gap:var(--sp-4);grid-template-columns:repeat(3,1fr)}.overview .big{font-size:44px}.heat .c{min-height:44px;padding:3px 4px}}.cmp table{min-width:0}.pnl td:first-child{color:var(--muted)}.pnl tr.total td{font-weight:var(--w-bold);border-top:1px solid var(--rule)}.pnl tr.sub td:first-child{padding-left:var(--sp-4)}.exports{gap:var(--sp-2);flex-wrap:wrap;display:flex}.exports .ctl{text-decoration:none}@media (width<=900px){.two-col.detail.pnl-first .side{order:1}}.subnav{gap:var(--sp-1);margin:calc(var(--sp-3) * -1) 0 var(--sp-5);display:flex;overflow-x:auto}.subnav a{border-radius:var(--r-ctl);color:var(--muted);white-space:nowrap;padding:6px 10px;font-size:13px;text-decoration:none}.subnav a:hover{background:var(--wash);color:var(--ink)}.subnav a.on{color:var(--ink);font-weight:var(--w-medium);background:var(--accent-wash)}.facts td.v{white-space:pre-line}.facts td.k{white-space:nowrap;font-weight:var(--w-medium)}.facts tr.unc td.k:after{content:" ·";color:var(--warn)}.doc{max-width:760px;font-size:var(--t-sm)}.doc h3{font-size:var(--t-md);margin:var(--sp-5) 0 var(--sp-2);letter-spacing:var(--track-snug)}.doc h3:first-child{margin-top:0}.doc p{margin:0 0 var(--sp-2)}.doc ol,.doc ul{margin:0 0 var(--sp-2);padding-left:1.4em}.doc li{margin-bottom:2px}.doc .lead{font-size:var(--t-md);font-weight:var(--w-medium)}.doc table td:first-child{color:var(--muted);white-space:nowrap}.cl label{gap:var(--sp-3);border-bottom:1px solid var(--line);cursor:pointer;align-items:flex-start;padding:10px 0;display:flex}.cl label:last-child{border-bottom:0}.cl input{flex:none;width:20px;height:20px;margin-top:1px}.cl .done{color:var(--faint);text-decoration:line-through}.cl .when{font-size:var(--t-xs);color:var(--faint);white-space:nowrap;font-variant-numeric:tabular-nums;margin-left:auto}
