:root{--ink:#1b2733;--paper:#f4f6f5;--line:#d5dcd9;--accent:#0e6b5c;--warn:#b5440f;--on:#0e6b5c;font-family:Segoe UI,system-ui,sans-serif;color:var(--ink)}body{margin:0;background:var(--paper)}header{display:flex;justify-content:space-between;align-items:center;padding:.8rem 1.5rem;background:var(--ink);color:#fff}header h1{margin:0;font-size:1.25rem;letter-spacing:.01em}header a{color:#cfe9e3}main{max-width:1100px;margin:0 auto;padding:1.5rem}h2{margin:1.5rem 0 .6rem}.muted{color:#5d6b73}.bar{display:flex;flex-wrap:wrap;gap:.6rem;align-items:center;margin-bottom:1rem}button,.btn,input,select{font:inherit;padding:.4rem .7rem;border:1px solid var(--line);border-radius:6px;background:#fff;color:inherit}button,.btn{cursor:pointer;text-decoration:none;display:inline-block}button:hover,.btn:hover{border-color:var(--accent)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.primary{background:var(--accent);border-color:var(--accent);color:#fff}.danger{color:var(--warn)}a[aria-disabled=true]{opacity:.4;pointer-events:none}table{width:100%;border-collapse:collapse;background:#fff;border:1px solid var(--line)}th,td{text-align:left;padding:.45rem .6rem;border-bottom:1px solid var(--line)}td input{width:100%;box-sizing:border-box;border-color:transparent}td input:hover,td input:focus{border-color:var(--line)}.actions{white-space:nowrap;display:flex;gap:.3rem}.conflicts{list-style:none;padding:0;margin:0}.conflicts li{display:flex;gap:1rem;padding:.55rem .8rem;background:#fff;border-left:4px solid var(--warn);margin-bottom:.4rem}.conflicts strong{min-width:11rem}.cal-head{display:flex;align-items:center;gap:.8rem}.cal-head h2{margin:0}.year{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:1rem}.month{background:#fff;border:1px solid var(--line);padding:.6rem .8rem}.month h3{margin:0 0 .4rem;font-size:1rem}.grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;text-align:center}.grid b{font-size:.7rem;color:#5d6b73;font-weight:600}.grid button{padding:.25rem 0;border:0;background:transparent;border-radius:4px;font-size:.85rem}.grid button.we{color:#8a979d}.grid button.on{background:var(--on);color:#fff;font-weight:600}@media (prefers-reduced-motion:no-preference){button,.btn{transition:border-color .15s}}@media (max-width:760px){thead{display:none}td{display:block}.actions{flex-wrap:wrap}}
