:root{--brand: #b3261e;--bg: #fff8f5;--card: #fff;--text: #231917;--muted: #775652;--line: #f1dedb;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;color:var(--text);background:var(--bg)}@media(prefers-color-scheme:dark){:root{--bg: #1a1110;--card: #271d1b;--text: #f1dfdc;--muted: #d8c2be;--line: #3d2f2d;color-scheme:dark}}*{box-sizing:border-box}body{margin:0}.app{min-height:100dvh;display:flex;flex-direction:column;max-width:720px;margin:0 auto}.top{position:sticky;top:0;z-index:2;display:flex;justify-content:space-between;align-items:center;gap:12px;padding:calc(env(safe-area-inset-top,0px) + 12px) 16px 12px;background:var(--brand);color:#fff}.top h1{margin:0;font-size:22px;letter-spacing:2px}.top select{max-width:55%;padding:6px;border-radius:8px;border:0;font:inherit}main{flex:1;padding:16px 16px 96px}h2{margin:0 0 4px}.muted{color:var(--muted);margin:0 0 12px;font-size:14px}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:16px}.stats div{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px;font-size:13px;color:var(--muted)}.stats b{display:block;font-size:24px;color:var(--text)}.days{list-style:none;padding:0;margin:0;display:grid;gap:8px}.days li{display:flex;gap:16px;align-items:center;background:var(--card);border:1px solid var(--line);border-left:6px solid;border-radius:12px;padding:12px}.days li.today{outline:2px solid var(--brand)}.days .muted{margin:2px 0 0}.day{width:44px;font-weight:700;text-align:center}.day small{display:block;font-size:20px}.chips{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}.chips button{border:1px solid var(--line);background:var(--card);color:var(--text);border-radius:999px;padding:8px 14px;font:inherit}.chips button.on{background:var(--brand);color:#fff;border-color:var(--brand)}.banner{border-radius:12px;padding:12px;margin-bottom:12px;font-size:14px}.banner ul{margin:6px 0 0;padding-left:18px}.banner.bad{background:#fde7e4;color:#8c1d18}.banner.good{background:#e3f4e1;color:#1b5e20}.grid-wrap{overflow-x:auto;background:var(--card);border:1px solid var(--line);border-radius:12px}.grid{border-collapse:collapse;width:100%;font-size:13px}.grid th,.grid td{padding:4px;text-align:center;border-bottom:1px solid var(--line)}.grid tbody th{text-align:left;white-space:nowrap;font-weight:500;padding-left:8px}.cell{width:34px;height:30px;border:0;border-radius:6px;color:#fff;font-weight:700;font-size:12px}.cell:disabled{opacity:1}.num{font-variant-numeric:tabular-nums}.total th,.total td{font-weight:700}.legend{list-style:none;padding:0;margin:12px 0 0;display:grid;gap:6px;font-size:13px}.legend span{display:inline-block;width:30px;text-align:center;margin-right:8px;border-radius:4px;color:#fff;font-weight:700}.soon li{margin:6px 0}.tabs{position:fixed;bottom:0;left:0;right:0;display:flex;justify-content:center;background:var(--card);border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom,0px)}.tabs button{flex:1;max-width:180px;background:none;border:0;padding:10px 0;font:inherit;font-size:12px;color:var(--muted);display:flex;flex-direction:column;align-items:center;gap:2px}.tabs button span{font-size:20px}.tabs button.active{color:var(--brand);font-weight:700}button{font:inherit;cursor:pointer}.actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:12px 0}.actions button,.form button,.cards button{border:1px solid var(--line);background:var(--card);color:var(--text);border-radius:10px;padding:8px 14px}button.primary{background:var(--brand)!important;color:#fff!important;border-color:var(--brand)!important}button.primary:disabled{opacity:.5}button.danger{color:#b3261e!important}button.danger.armed{background:#b3261e!important;color:#fff!important}.weeknav{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:0 0 12px;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:4px}.weeknav button{border:0;background:none;color:var(--text);font-size:24px;width:44px;height:40px;border-radius:8px}.weeknav button:disabled{opacity:.25}.weeknav span{font-weight:600;text-align:center}.badge{font-size:12px;font-weight:600;padding:2px 8px;border-radius:999px;vertical-align:middle}.badge.pub{background:#e3f4e1;color:#1b5e20}.badge.draft{background:#fff1d6;color:#7a4f00}.holiday{color:var(--brand);font-size:13px;margin-top:2px}.grid th.hol{color:var(--brand)}.grid thead small{font-weight:400}.subtabs{flex-wrap:wrap;gap:6px}.subtabs button{white-space:nowrap;padding:7px 12px}.section-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:16px 0 4px}.section-head h3{margin:0}.section-head button{border-radius:10px;padding:8px 14px;border:1px solid var(--brand)}.form{display:grid;gap:10px;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:14px;margin-bottom:12px}.form h3{margin:0}.form label{display:grid;gap:4px;font-size:13px;font-weight:600}.form input,.form select,label.inline input{font:inherit;font-weight:400;padding:9px 10px;border-radius:8px;border:1px solid var(--line);background:var(--bg);color:var(--text);width:100%}label.check{display:flex!important;align-items:center;gap:8px;font-weight:400!important;font-size:14px}label.check input{width:auto}label.inline{display:flex;align-items:center;gap:8px;margin-bottom:8px;font-weight:600}label.inline input{width:auto}.row{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px}.row.between{display:flex;justify-content:space-between;align-items:center}h3{margin:16px 0 8px}.cards{list-style:none;padding:0;margin:0;display:grid;gap:8px}.cards li{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px;cursor:pointer}.cards li .actions{margin:8px 0 0}.cards li.inactive{opacity:.55}.small{font-size:13px}.warn{color:#b3261e}.track td{white-space:nowrap}.login{max-width:420px;margin:0 auto;padding:calc(env(safe-area-inset-top,0px) + 48px) 16px 32px}.login h1{color:var(--brand);letter-spacing:3px;margin:0}.login .form button{padding:12px;font-size:16px}.top .me{background:#ffffff26;color:#fff;border:0;border-radius:999px;padding:6px 12px;font-weight:600}.top .saving{margin-left:auto;font-size:12px;opacity:.85}.toast{margin:8px 16px 0;cursor:pointer}.pinbox{border:1px solid var(--line);border-radius:10px;padding:10px;display:grid;gap:8px}.pinbox legend{font-size:13px;font-weight:600;padding:0 4px}.pinbox input{font:inherit;padding:9px 10px;border-radius:8px;border:1px solid var(--line);background:var(--bg);color:var(--text)}code.link{display:block;padding:8px 10px;background:var(--bg);border:1px dashed var(--line);border-radius:8px;font-size:13px;overflow-wrap:anywhere}a.button{display:inline-block;text-decoration:none;border-radius:10px;padding:8px 14px;border:1px solid var(--brand)}a.button.primary{background:var(--brand);color:#fff}.login a{color:var(--brand)}.brushbar{margin-bottom:8px}.brushes{flex-wrap:wrap;gap:6px;margin-bottom:4px}.brushes button{white-space:nowrap;border-width:2px;padding:6px 10px;font-size:13px}.brushes button.on{color:#fff}.grid th.fillable{cursor:pointer;text-decoration:underline dotted}.link-btn{background:none!important;border:0!important;color:var(--brand)!important;padding:0 4px!important;font-weight:600}.link-btn:disabled{opacity:.35}.pattern{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:8px}.pattern label{padding-left:6px}.pattern small{grid-column:1 / -1}.form input[type=color]{padding:2px;height:40px}.badge.pending{background:#fff1d6;color:#7a4f00}.badge.approved{background:#e3f4e1;color:#1b5e20}.badge.rejected{background:#fde7e4;color:#8c1d18}.badge.cancelled{background:var(--line);color:var(--muted)}.cover{display:grid;gap:2px;margin:8px 0;padding:8px 10px;background:var(--bg);border-radius:8px}label.note{display:grid;gap:4px;font-size:13px;font-weight:600;margin-top:8px}label.note input{font:inherit;font-weight:400;padding:9px 10px;border-radius:8px;border:1px solid var(--line);background:var(--bg);color:var(--text)}.chips button:disabled{opacity:.45}.banner.notify{background:var(--card);border:1px solid var(--line);border-left:4px solid var(--brand)}.banner.notify .actions{margin:6px 0 0}.pill{border:1px solid var(--brand);color:var(--brand);background:var(--card);border-radius:999px;padding:6px 12px;font-weight:600}.conv{cursor:pointer}.ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.unread{background:var(--brand);color:#fff;border-radius:999px;min-width:22px;padding:1px 7px;font-size:12px;font-weight:700;text-align:center}.chat-head{display:flex;align-items:center;gap:8px;margin-bottom:8px}.chat-head h2{margin:0}.chat-head button{border:0;background:none;color:var(--text);font-size:28px;line-height:1;padding:0 8px 4px 0}.chat-view{padding-bottom:150px}.pins{background:#fff8e1;border:1px solid #ffe082;border-radius:10px;padding:8px 10px;margin-bottom:10px;display:grid;gap:4px;font-size:14px;color:#3e2c00}.messages{display:flex;flex-direction:column;gap:6px}.bubble{position:relative;max-width:80%;align-self:flex-start;background:var(--card);border:1px solid var(--line);border-radius:14px 14px 14px 4px;padding:6px 10px}.bubble.mine{align-self:flex-end;background:#ffdad5;border-color:#ffb4a8;border-radius:14px 14px 4px;color:#3b0907}.bubble.pinned{border:2px solid #ffb300}.bubble .who{font-size:12px;font-weight:700;color:var(--brand)}.bubble .text{white-space:pre-wrap;overflow-wrap:anywhere}.bubble img{display:block;max-width:100%;max-height:260px;border-radius:10px;margin:2px 0 4px;cursor:zoom-in}.bubble .meta{font-size:11px;opacity:.65;text-align:right;display:flex;justify-content:flex-end;align-items:center;gap:4px}.bubble .dots{border:0;background:none;color:inherit;font-size:14px;padding:0 2px}.msg-menu{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px}.msg-menu button{border:1px solid var(--line);background:var(--card);color:var(--text);border-radius:8px;padding:4px 8px;font-size:13px}.composer{position:fixed;left:0;right:0;bottom:calc(60px + env(safe-area-inset-bottom,0px));max-width:720px;margin:0 auto;background:var(--bg);border-top:1px solid var(--line);padding:8px 12px;display:grid;gap:6px;z-index:3}.compose-row{display:flex;align-items:flex-end;gap:6px}.compose-row textarea{flex:1;font:inherit;resize:none;max-height:120px;min-height:40px;padding:9px 12px;border-radius:20px;border:1px solid var(--line);background:var(--card);color:var(--text);field-sizing:content}.compose-row .icon{border:0;background:none;font-size:24px;padding:4px}.compose-row .send{border-radius:50%;width:42px;height:42px;border:0;font-size:18px;flex:none}.compose-row .send:disabled{opacity:.45}.attach{display:flex;align-items:center;gap:8px}.attach img{height:64px;border-radius:8px}.viewer{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000e6;display:grid;place-items:center;z-index:10;padding:16px}.viewer img{max-width:100%;max-height:100%}@media(prefers-color-scheme:dark){.bubble.mine{background:#5c1a14;border-color:#7a2a22;color:#ffdad5}.pins{background:#3e2c00;border-color:#6b4f00;color:#ffe8a3}}.rotation{display:grid;gap:10px}.field-label{font-size:13px;font-weight:600;margin-bottom:4px}.grid tbody th .role{display:block;font-size:10.5px;font-weight:400;color:var(--muted);line-height:1.1}.bubble[role=button]{cursor:pointer}.bubble .who{font-size:12px;font-weight:700;color:var(--brand);margin-bottom:1px}.bubble.mine .who{color:#8c1d18}.bubble .who .role{font-weight:400;opacity:.75}.bubble.editing{outline:2px dashed var(--brand)}.bubble .dots{font-size:15px;padding:0 2px;opacity:.9}.sheet-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000059;z-index:20;display:flex;align-items:flex-end;justify-content:center}.sheet{width:100%;max-width:520px;background:var(--card);border-radius:16px 16px 0 0;padding:12px 12px calc(12px + env(safe-area-inset-bottom,0px));display:grid;gap:8px}.sheet button{font:inherit;text-align:left;padding:12px 14px;border-radius:10px;border:1px solid var(--line);background:var(--bg);color:var(--text)}.sheet-preview{font-size:13px;color:var(--muted);padding:4px 4px 8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border-bottom:1px solid var(--line)}.editing-bar{font-size:13px;font-weight:600;color:var(--brand);display:flex;align-items:center;gap:6px}@media(prefers-color-scheme:dark){.bubble.mine .who{color:#ffb4a8}}.notify-sheet{text-align:center;padding-top:20px}.notify-sheet .bell{font-size:40px}.notify-sheet h3{margin:4px 0 0}.notify-sheet p{margin:0}.notify-sheet button{text-align:center}.mention{font-weight:700;color:var(--brand)}.mention.me{background:#ffe082;color:#3e2c00;border-radius:4px;padding:0 2px}.bubble.mentions-me{border-left:4px solid #ffb300}.unread.at{background:#ffb300;color:#3e2c00;margin-right:4px}.reactions{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}.reactions button{border:1px solid var(--line);background:var(--bg);color:var(--text);border-radius:999px;padding:1px 8px;font-size:13px}.reactions button.mine{border-color:var(--brand);background:#ffdad5;color:#3b0907}.emoji-row{display:flex;justify-content:space-between;gap:4px}.emoji-row button{flex:1;font-size:24px;text-align:center!important;padding:8px 0!important}.emoji-row button.on{border-color:var(--brand);background:#ffdad5}.sheet .reacted{padding:0 4px}.mention-list{display:grid;gap:2px;max-height:220px;overflow-y:auto;background:var(--card);border:1px solid var(--line);border-radius:10px;padding:4px}.mention-list button{text-align:left;border:0;background:none;color:var(--text);padding:8px 10px;border-radius:8px;font:inherit}.mention-list button:hover,.mention-list button:focus{background:var(--bg)}@media(prefers-color-scheme:dark){.mention.me{background:#6b4f00;color:#ffe8a3}.reactions button.mine,.emoji-row button.on{background:#5c1a14;color:#ffdad5}}.grid .total td.short{color:#b3261e;background:#fde7e4}.grid .total td small{font-weight:400;opacity:.7}.pill-btn{border-radius:999px!important;padding:8px 16px!important;border:0;font-weight:600}
