:root{--page:#f4f0e9;--bg:#fff;--panel-2:#faf6f0;--border:rgba(48,32,20,.07);--ink-1:#1f1710;--ink-2:#4a3f34;--ink-3:#82715f;--accent:#d9642a;--accent-2:#2e6b63;--accent-soft:rgba(217,100,42,.11);--on-accent:#fff;--glow:rgba(217,100,42,.34);--up:#2f7a55;--down:#c0453c;--warn:#b77a16;--shadow:0 1px 3px rgba(60,38,20,.05);--shadow-lg:0 40px 90px -50px rgba(60,38,20,.34);--r:20px;--r-sm:12px;--r-lg:32px;--nav-h:0px;--z-sticky:200;--z-nav:300;--z-sheet:400;--z-toast:500}*{box-sizing:border-box}html,body{overflow-x:clip}body{background:var(--page);color:var(--ink-1);-webkit-font-smoothing:antialiased;min-height:100dvh;margin:0;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Noto Sans,Ubuntu,Cantarell,Helvetica Neue,PingFang SC,Microsoft YaHei,sans-serif;font-size:14px;line-height:1.5}a{color:inherit}button{font:inherit}.num{font-variant-numeric:tabular-nums;letter-spacing:-.01em}.shell{min-height:100dvh}.main{max-width:680px;padding:18px 16px calc(96px + env(safe-area-inset-bottom));margin:0 auto}.sidebar{display:none}.tabbar{z-index:var(--z-nav);-webkit-backdrop-filter:blur(14px);border-top:1px solid var(--border);padding:6px 8px calc(6px + env(safe-area-inset-bottom));background:rgba(255,253,249,.92);gap:2px;display:flex;position:fixed;bottom:0;left:0;right:0}.tabbar a{min-height:50px;color:var(--ink-3);white-space:nowrap;border-radius:12px;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:2px;font-size:11px;font-weight:600;text-decoration:none;transition:color .15s ease-out;display:flex}.tabbar a.active{color:var(--accent)}.tabbar a svg{width:22px;height:22px}.brand{align-items:baseline;gap:8px;margin:2px 0 14px;display:flex}.brand h1{letter-spacing:-.01em;overflow-wrap:anywhere;min-width:0;margin:0;font-size:20px;font-weight:800}.brand .ver{color:var(--ink-3);white-space:nowrap;font-size:11px;font-weight:600}@media (min-width:768px){.tabbar{display:none}.sidebar{border-right:1px solid var(--border);background:var(--panel-2);width:232px;z-index:var(--z-nav);flex-direction:column;gap:4px;padding:24px 14px;display:flex;position:fixed;top:0;bottom:0;left:0}.sidebar .brand{padding:6px 12px 18px}.snav{border-radius:var(--r-sm);min-height:44px;color:var(--ink-2);white-space:nowrap;align-items:center;gap:10px;padding:0 12px;font-size:14px;font-weight:600;text-decoration:none;display:flex}.snav svg{width:19px;height:19px;color:var(--ink-3)}.snav.active{background:var(--accent-soft);color:var(--accent)}.snav.active svg{color:var(--accent)}.sidebar .foot{color:var(--ink-3);margin-top:auto;padding:12px;font-size:11px}.main{max-width:none;margin:0 0 0 232px;padding:28px 32px 56px}.main>.page{max-width:1000px}.brand h1{font-size:22px}}.page{gap:14px;display:grid}.card{background:var(--bg);border:1px solid var(--border);border-radius:var(--r);box-shadow:var(--shadow);padding:18px}.card-hero{background:radial-gradient(280px 160px at 88% -12%,var(--accent-soft),transparent 62%),linear-gradient(150deg,#fffdf9 0%,#fbf4ea 100%)}.card-head{justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;display:flex}.card-title{margin:0;font-size:15px;font-weight:700}.hint{color:var(--ink-3);font-size:12px}.tiles{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}@media (min-width:640px){.tiles.cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}.tile{background:var(--bg);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:16px;flex-direction:column;gap:4px;padding:14px;display:flex}.tile .label{color:var(--ink-3);font-size:12px;font-weight:600}.tile .big{letter-spacing:-.02em;font-variant-numeric:tabular-nums;font-size:24px;font-weight:800}.tile .sub{color:var(--ink-3);font-variant-numeric:tabular-nums;font-size:12px}.badge{background:var(--accent-soft);color:var(--accent);white-space:nowrap;border-radius:999px;align-items:center;gap:4px;padding:2px 9px;font-size:11px;font-weight:700;display:inline-flex}.badge-muted{background:var(--panel-2);color:var(--ink-3)}.badge-warn{color:var(--warn);background:rgba(183,122,22,.12)}.badge-down{color:var(--down);background:rgba(192,69,60,.1)}.badge-up{color:var(--up);background:rgba(47,122,85,.12)}.ava{background:var(--accent-soft);width:34px;height:34px;color:var(--accent);border-radius:50%;flex:none;place-items:center;font-size:13px;font-weight:800;display:grid}.rows{display:grid}.row{border-bottom:1px solid var(--border);align-items:center;gap:12px;min-height:52px;padding:12px 2px;display:flex}.rows .row:last-child{border-bottom:none}.row .grow{flex:1;min-width:0}.row .title{overflow-wrap:anywhere;font-weight:600}.row .sub{color:var(--ink-3);margin-top:1px;font-size:12px}.row .amt{font-variant-numeric:tabular-nums;white-space:nowrap;font-size:15px;font-weight:700}.btn{border:1px solid var(--border);background:var(--bg);min-height:44px;color:var(--ink-1);cursor:pointer;white-space:nowrap;border-radius:14px;justify-content:center;align-items:center;gap:6px;padding:0 18px;font-size:14px;font-weight:700;transition:box-shadow .15s ease-out,opacity .15s ease-out;display:inline-flex}.btn:hover{box-shadow:var(--shadow)}.btn-primary{background:var(--accent);color:var(--on-accent);box-shadow:0 8px 22px -10px var(--glow);border-color:transparent}.btn-danger-text{color:var(--down);min-height:36px;box-shadow:none;background:0 0;border-color:transparent;padding:0 10px;font-size:13px}.btn-sm{border-radius:10px;min-height:36px;padding:0 12px;font-size:13px}.btn:disabled{opacity:.5;cursor:not-allowed;pointer-events:none}.input,select,textarea{border-radius:var(--r-sm);border:1px solid var(--border);background:var(--panel-2);width:100%;min-height:44px;font:inherit;color:var(--ink-1);padding:10px 12px}textarea{resize:vertical;min-height:72px}.input:focus-visible{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:none}select:focus-visible{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:none}textarea:focus-visible{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:none}.btn:focus-visible{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:none}.field{gap:6px;display:grid}.field>label{color:var(--ink-2);font-size:12px;font-weight:600}.form-grid{gap:14px;display:grid}.seg{background:var(--panel-2);border:1px solid var(--border);border-radius:var(--r-sm);gap:3px;padding:3px;display:flex}.seg button{min-height:38px;color:var(--ink-3);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-radius:9px;flex:1;padding:0 6px;font-size:13px;font-weight:600}.seg button.on{background:var(--bg);color:var(--accent);box-shadow:var(--shadow)}.member-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;display:grid}.mp{border-radius:var(--r-sm);border:1px solid var(--border);background:var(--bg);min-height:48px;color:var(--ink-2);cursor:pointer;white-space:nowrap;padding:4px;font-size:13px;font-weight:600}.mp.on{background:var(--accent-soft);color:var(--accent);border-color:rgba(217,100,42,.35)}.check{cursor:pointer;align-items:center;gap:10px;min-height:44px;font-weight:600;display:flex}.check input{width:20px;height:20px;accent-color:var(--accent)}.select{-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:var(--r-sm);border:1px solid var(--border);background-color:var(--panel-2);width:auto;min-width:116px;font:inherit;color:var(--ink-1);cursor:pointer;white-space:nowrap;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%2382715f' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-position:right 11px center;background-repeat:no-repeat;padding:8px 34px 8px 12px;font-size:13px;font-weight:600}.select:focus-visible{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:none}.timesel{align-items:center;gap:8px;display:flex}.timesel .colon{color:var(--ink-3);font-size:16px;font-weight:800}.timesel select{-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:var(--r-sm);border:1px solid var(--border);background-color:var(--panel-2);min-width:88px;font:inherit;font-variant-numeric:tabular-nums;color:var(--ink-1);cursor:pointer;text-align:center;text-align-last:center;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%2382715f' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-position:right 11px center;background-repeat:no-repeat;flex:1;padding:10px 34px 10px 14px;font-size:18px;font-weight:700}.timesel select:focus-visible{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:none}.backdrop{z-index:var(--z-sheet);background:rgba(31,23,16,.42);justify-content:center;align-items:flex-end;animation:.16s ease-out fade;display:flex;position:fixed;top:0;bottom:0;left:0;right:0}.sheet{background:var(--bg);width:100%;max-width:560px;max-height:88dvh;padding:18px 18px calc(24px + env(safe-area-inset-bottom));box-shadow:var(--shadow-lg);border-radius:20px 20px 0 0;animation:.2s ease-out slide-up;overflow:auto}.sheet-head{justify-content:space-between;align-items:center;margin-bottom:14px;display:flex}.sheet-head h3{margin:0;font-size:16px;font-weight:800}@media (min-width:768px){.backdrop{align-items:center;padding:24px}.sheet{border-radius:var(--r);width:480px;padding:22px}}.week{gap:6px;display:grid}.wday{border-radius:var(--r-sm);background:var(--panel-2);border:1px solid transparent;align-items:center;gap:10px;min-height:46px;padding:8px 12px;display:flex}.wday.today{background:var(--accent-soft);border-color:rgba(217,100,42,.28)}.wday .dow{text-align:center;width:20px;color:var(--ink-3);flex:none;font-weight:800}.wday.today .dow{color:var(--accent)}.wday .d{color:var(--ink-3);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:12px}.wday .times{font-variant-numeric:tabular-nums;white-space:nowrap;gap:14px;margin-left:auto;font-size:13px;display:flex}.wday .times b{font-weight:700}.wday .times .lbl{color:var(--ink-3);margin-right:3px;font-size:11px;font-weight:500}.duty-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.duty-item{background:var(--panel-2);border:1px solid var(--border);border-radius:14px;align-items:center;gap:10px;padding:12px;display:flex}.duty-item .t{font-size:14px;font-weight:700}.duty-item .n{color:var(--ink-3);font-size:12px}.dtable{border-collapse:collapse;width:100%;font-size:13px}.dtable th{text-align:left;color:var(--ink-3);border-bottom:1px solid var(--border);white-space:nowrap;padding:8px 10px;font-size:12px;font-weight:600}.dtable td{border-bottom:1px solid var(--border);padding:10px}.dtable tr:last-child td{border-bottom:none}.dtable .num,.dtable td.r{text-align:right;font-variant-numeric:tabular-nums}.rule{border-bottom:1px solid var(--border);padding:12px 0}.rule:last-child{border-bottom:none;padding-bottom:0}.rule .rt{margin-bottom:3px;font-size:13px;font-weight:700}.rule .rb{color:var(--ink-2);text-wrap:pretty;font-size:13px}.empty{text-align:center;color:var(--ink-3);justify-items:center;gap:8px;padding:30px 16px;font-size:13px;display:grid}.empty .ico{background:var(--panel-2);border-radius:13px;place-items:center;width:42px;height:42px;display:grid}.sk{background:linear-gradient(90deg,var(--panel-2),#f0e7da,var(--panel-2));background-size:200% 100%;border-radius:10px;min-height:14px;animation:1.2s linear infinite shimmer}.toast{left:50%;bottom:calc(92px + env(safe-area-inset-bottom));z-index:var(--z-toast);background:var(--ink-1);color:#fdfbf7;box-shadow:var(--shadow-lg);text-align:center;border-radius:999px;max-width:calc(100vw - 48px);padding:10px 18px;font-size:13px;font-weight:600;animation:.15s ease-out fade;position:fixed;transform:translate(-50%)}@media (min-width:768px){.toast{bottom:28px}}.err-text{color:var(--down);font-size:13px;font-weight:600}.gate{justify-content:center;align-items:center;min-height:100dvh;padding:20px;display:flex}.gate-card{text-align:center;width:100%;max-width:360px;padding:28px 24px}.gate-card h1{margin:0 0 18px;font-size:18px}.confirm-strip{background:var(--accent-soft);border:1px solid rgba(217,100,42,.25);border-radius:14px;align-items:center;gap:12px;padding:14px;display:flex}@keyframes fade{0%{opacity:0}to{opacity:1}}@keyframes slide-up{0%{opacity:.6;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
