:root{color-scheme:light;--surface: #fcfcfb;--page: #f9f9f7;--ink: #0b0b0b;--ink-2: #52514e;--muted: #898781;--grid: #e1e0d9;--border: rgba(11, 11, 11, .1);--accent: #2a78d6;--danger: #c0392b;--block-l: 62%;--block-s: 58%;--block-ink: #ffffff}:root[data-theme=dark]{color-scheme:dark;--surface: #1a1a19;--page: #0d0d0d;--ink: #ffffff;--ink-2: #c3c2b7;--muted: #898781;--grid: #2c2c2a;--border: rgba(255, 255, 255, .1);--accent: #3987e5;--danger: #e57373;--block-l: 42%;--block-s: 46%;--block-ink: #ffffff}*{box-sizing:border-box}body{margin:0;background:var(--page);color:var(--ink);font-family:system-ui,-apple-system,Segoe UI,sans-serif;font-size:14px}.wrap{padding:12px;max-width:900px;margin:0 auto}.muted{color:var(--muted)}.empty{text-align:center;padding:24px 8px;line-height:1.5}.error{color:var(--danger);background:color-mix(in srgb,var(--danger) 10%,transparent);padding:8px 10px;border-radius:8px}h2{font-size:13px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:16px 0 4px}button{font:inherit;color:var(--ink);cursor:pointer;background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:8px 12px}button.primary{background:var(--accent);color:#fff;border-color:transparent}button.link{background:none;border:none;color:var(--accent);padding:0 6px}button:disabled{opacity:.6;cursor:default}.tabs{display:flex;gap:6px;margin-bottom:12px}.tabs button{flex:1}.tabs button.on{background:var(--ink);color:var(--page);border-color:transparent}.weeknav{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:10px}.weeknav>div{text-align:center}.grid-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}.grid{display:grid;grid-template-columns:44px repeat(7,minmax(86px,1fr));grid-template-rows:auto calc(var(--span) * 1px * .9);min-width:640px;background:var(--surface);border:1px solid var(--border);border-radius:10px;overflow:hidden}.axis-head{border-right:1px solid var(--grid)}.day-head{display:flex;flex-direction:column;align-items:center;gap:1px;padding:6px 2px;border-left:1px solid var(--grid);border-bottom:1px solid var(--grid)}.day-head .day-name{font-size:11px;color:var(--muted)}.day-head .day-num{font-weight:600}.day-head.is-today .day-num{background:var(--accent);color:#fff;border-radius:999px;padding:0 7px}.axis{position:relative;border-right:1px solid var(--grid)}.axis-row{position:absolute;top:calc(var(--offset) * 1px * .9);right:4px;font-size:10px;color:var(--muted);transform:translateY(-50%)}.col{position:relative;border-left:1px solid var(--grid)}.col.is-today{background:color-mix(in srgb,var(--accent) 5%,transparent)}.line{position:absolute;left:0;right:0;top:calc(var(--offset) * 1px * .9);border-top:1px solid var(--grid)}.block{position:absolute;left:2px;right:2px;top:calc(var(--start) * 1px * .9);height:calc(var(--len) * 1px * .9);min-height:18px;background:hsl(var(--hue) var(--block-s) var(--block-l));color:var(--block-ink);border-radius:6px;padding:3px 5px;overflow:hidden;display:flex;flex-direction:column;gap:1px;font-size:11px;line-height:1.2}.block b{font-weight:600}.block span{opacity:.85;font-size:10px}.block.is-free{background:transparent;color:var(--ink);border:1px dashed hsl(var(--hue) var(--block-s) var(--block-l))}.stack{display:flex;flex-direction:column;gap:8px}.card{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:12px}.project{border-left:3px solid hsl(var(--hue) var(--block-s) var(--block-l))}.project b{display:block;margin-bottom:4px}.burn{margin-top:6px}.burn .bar{height:6px;border-radius:999px;background:var(--grid);overflow:hidden;margin-bottom:4px}.burn .bar span{display:block;height:100%;background:hsl(var(--hue) var(--block-s) var(--block-l))}.burn small{color:var(--muted)}.form{display:flex;flex-direction:column;gap:10px}.row{display:flex;gap:8px;align-items:center}.row.end{justify-content:flex-end}.field{display:flex;flex-direction:column;gap:4px;color:var(--ink-2)}input{font:inherit;color:var(--ink);background:var(--page);border:1px solid var(--border);border-radius:8px;padding:9px 10px;width:100%}input.emoji{width:56px;text-align:center}.segmented{display:flex;gap:0}.segmented button{flex:1;border-radius:0}.segmented button:first-child{border-radius:8px 0 0 8px}.segmented button:last-child{border-radius:0 8px 8px 0;border-left:none}.segmented button.on{background:var(--ink);color:var(--page);border-color:transparent}
