:root{--ink: #101c18;--muted: #5a6f66;--line: #d4e0d9;--bg: #e8efea;--panel: #ffffff;--accent: #0d6b4a;--accent-soft: #d9efe6;--warn: #c45c26;--warn-soft: #f7e6db;--danger: #b42318;--danger-soft: #f8d9d6;--draft: #5a6f66;--shadow: 0 20px 50px rgba(16, 28, 24, .08);--side: 220px;font-family:Manrope,system-ui,sans-serif;color:var(--ink);background:var(--bg)}*{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}body{background:radial-gradient(1000px 480px at -5% -15%,#d4ebe0 0%,transparent 55%),radial-gradient(800px 400px at 110% 0%,#f1e0d2 0%,transparent 45%),linear-gradient(180deg,#f4f8f5,var(--bg))}a{color:inherit;text-decoration:none}button,input,textarea,select{font:inherit;color:inherit}h1,h2,h3{font-family:Fraunces,Georgia,serif;letter-spacing:-.02em;margin:0}.auth{min-height:100vh;display:grid;place-items:center;padding:24px}.auth-card{width:min(420px,100%);background:var(--panel);border:1px solid var(--line);box-shadow:var(--shadow);padding:36px 32px}.auth-card h1{font-size:2.4rem;margin-bottom:8px}.auth-card p{color:var(--muted);margin:0 0 24px}.field{display:grid;gap:6px;margin-bottom:14px}.field label{font-size:.75rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.field input,.field textarea,.field select,.inp{border:1px solid var(--line);background:#fbfcfb;padding:11px 13px;outline:none;width:100%}.field input:focus,.field textarea:focus,.field select:focus,.inp:focus{border-color:var(--accent);box-shadow:0 0 0 3px #0d6b4a1f}.btn{border:0;background:var(--accent);color:#fff;padding:11px 16px;cursor:pointer;font-weight:600;white-space:nowrap}.btn:hover{filter:brightness(1.06)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn.secondary{background:#e4eee8;color:var(--ink)}.btn.danger{background:var(--danger)}.btn.ghost{background:transparent;border:1px solid var(--line);color:var(--ink)}.btn.sm{padding:7px 11px;font-size:.88rem}.error{color:var(--danger);font-size:.9rem;margin:8px 0}.ok-msg{color:var(--accent);font-size:.9rem}.muted{color:var(--muted)}.shell{display:grid;grid-template-columns:var(--side) 1fr;min-height:100vh}.side{border-right:1px solid var(--line);background:#ffffffc7;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);padding:22px 14px;display:flex;flex-direction:column;gap:16px;position:sticky;top:0;height:100vh}.brand{font-family:Fraunces,Georgia,serif;font-size:1.45rem;padding:0 8px}.brand small{display:block;font-family:Manrope,sans-serif;font-size:.72rem;color:var(--muted);font-weight:500;margin-top:4px;word-break:break-all}.nav{display:grid;gap:2px;flex:1;overflow:auto}.nav a,.nav button{text-align:left;padding:9px 12px;border:0;background:transparent;cursor:pointer;color:var(--muted);border-radius:8px}.nav a.active,.nav a:hover,.nav button:hover{background:var(--accent-soft);color:var(--ink)}.main{padding:24px 28px 56px;min-width:0}.top{display:flex;justify-content:space-between;align-items:end;gap:14px;margin-bottom:20px;flex-wrap:wrap}.top p{margin:6px 0 0;color:var(--muted);max-width:40rem}.row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.grid{display:grid;gap:14px}.grid.cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid.cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.card{background:var(--panel);border:1px solid var(--line);padding:16px}.card h3{margin-bottom:8px}.badge{display:inline-block;padding:2px 8px;font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.03em;background:#e7efe9;border-radius:4px}.badge.ok{background:var(--accent-soft);color:var(--accent)}.badge.warn{background:var(--warn-soft);color:var(--warn)}.badge.bad{background:var(--danger-soft);color:var(--danger)}.badge.draft{background:#e8ecea;color:var(--draft)}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:10px 8px;border-bottom:1px solid var(--line);vertical-align:top;font-size:.92rem}th{color:var(--muted);font-size:.72rem;text-transform:uppercase;letter-spacing:.05em}.cal-toolbar{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.cal-month{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}.cal-head{font-size:.72rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);padding:4px 6px}.cal-cell{min-height:118px;background:var(--panel);border:1px solid var(--line);padding:8px;cursor:pointer;transition:border-color .15s,box-shadow .15s}.cal-cell:hover{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.cal-cell.out{opacity:.4;background:transparent}.cal-cell.today{border-color:var(--accent);background:#f3faf6}.cal-cell strong{font-size:.82rem;color:var(--muted)}.cal-item{margin-top:5px;padding:5px 6px;background:var(--accent-soft);font-size:.74rem;line-height:1.25;border-left:3px solid var(--accent);cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cal-item.warn{background:var(--warn-soft);border-left-color:var(--warn)}.cal-item.draft{background:#eef1f0;border-left-color:var(--draft)}.cal-item.bad{background:var(--danger-soft);border-left-color:var(--danger)}.cal-more{font-size:.72rem;color:var(--muted);margin-top:4px}.week{display:grid;grid-template-columns:56px repeat(7,minmax(0,1fr));gap:6px}.week-day{min-height:420px;background:var(--panel);border:1px solid var(--line);padding:8px}.week-day.today{border-color:var(--accent);background:#f3faf6}.week-day header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;font-size:.85rem}.week-add{width:100%;margin-top:8px;border:1px dashed var(--line);background:transparent;padding:8px;cursor:pointer;color:var(--muted);font-size:.8rem}.week-add:hover{border-color:var(--accent);color:var(--accent)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#101c1866;display:grid;place-items:center;padding:16px;z-index:40}.modal{width:min(680px,100%);background:var(--panel);border:1px solid var(--line);box-shadow:var(--shadow);padding:22px;max-height:92vh;overflow:auto}.modal h2{margin-bottom:6px}.filters{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px}.chip{border:1px solid var(--line);background:var(--panel);padding:6px 12px;cursor:pointer;font-size:.85rem}.chip.on{background:var(--accent-soft);border-color:var(--accent);font-weight:600}.stat{font-family:Fraunces,Georgia,serif;font-size:2rem;line-height:1}.empty{padding:28px;text-align:center;color:var(--muted);border:1px dashed var(--line);background:#ffffff80}.holst-wrap canvas{width:100%;max-width:480px;border:1px solid var(--line);background:#15241e;display:block}@media(max-width:960px){.shell{grid-template-columns:1fr}.side{position:relative;height:auto;border-right:0;border-bottom:1px solid var(--line)}.nav{display:flex;flex-wrap:wrap;gap:4px}.grid.cols-2,.grid.cols-3{grid-template-columns:1fr}.cal-month{grid-template-columns:repeat(2,1fr)}.week{grid-template-columns:1fr}}
