:root{--navy:#102a43;--navy2:#163a5f;--blue:#1378be;--cyan:#20b7e8;--paper:#f5f7fb;--ink:#172033;--muted:#6b778c;--line:#dce3ec;--white:#fff;--danger:#c0392b;--shadow:0 14px 36px rgba(16,42,67,.09);font-family:Inter,"Segoe UI",Arial,sans-serif;color:var(--ink);background:var(--paper)}*{box-sizing:border-box}body{margin:0;background:var(--paper)}button,input,select,textarea{font:inherit;color:inherit}a{color:inherit;text-decoration:none}.topbar{height:70px;background:var(--navy);color:#fff;display:flex;align-items:center;padding:0 max(24px,calc((100vw - 1500px)/2));gap:42px;position:sticky;top:0;z-index:20;box-shadow:0 4px 18px #102a4330}.brand{display:flex;align-items:center;gap:11px}.brand span{display:flex;flex-direction:column}.brand small,.user small{opacity:.65;font-size:11px;margin-top:2px}.brand-mark{width:34px;height:34px;border-radius:11px;background:linear-gradient(145deg,#ffb81c,#f37735);display:grid!important;place-items:center;font-weight:900;color:#fff;box-shadow:inset 0 0 0 1px #fff4}.brand-mark.large{width:64px;height:64px;border-radius:20px;font-size:30px}.topbar nav{display:flex;align-self:stretch;gap:6px;flex:1}.topbar nav a{display:flex;align-items:center;padding:0 13px;border-bottom:3px solid transparent;font-size:14px;opacity:.82}.topbar nav a:hover{opacity:1;border-color:#27c4f4}.user{display:flex;gap:13px;align-items:center;text-align:right}.user>span{display:flex;flex-direction:column}.user form{margin:0}.icon-btn{border:0;background:#ffffff12;color:inherit;border-radius:10px;width:36px;height:36px;font-size:20px;cursor:pointer}.badge{background:#f86b57;border-radius:999px;padding:2px 6px;font-size:10px;margin-left:5px}.page{max-width:1500px;margin:auto;padding:32px 28px 70px}.hero,.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:22px}.hero h1,.page-head h1{font-size:clamp(26px,3vw,42px);margin:5px 0 7px;letter-spacing:-.035em;color:var(--navy)}.hero p,.page-head p{margin:0;color:var(--muted)}.eyebrow{font-weight:800;font-size:11px;letter-spacing:.14em;color:var(--blue)}.hero-actions,.inline{display:flex;gap:10px;align-items:center}.btn{border:1px solid var(--line);background:#fff;border-radius:10px;padding:10px 15px;font-weight:650;cursor:pointer;box-shadow:0 2px 5px #102a4309}.btn:hover{transform:translateY(-1px);box-shadow:0 5px 13px #102a4314}.btn.primary{background:var(--blue);border-color:var(--blue);color:#fff}.btn.danger{color:var(--danger);border-color:#efb7af}.btn.tiny{padding:6px 9px;border-radius:8px;font-size:12px}.card{background:#fff;border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow)}.toolbar{display:flex;align-items:end;gap:20px;padding:14px 17px;margin-bottom:16px}.toolbar label,.modal label{display:flex;flex-direction:column;gap:6px;color:var(--muted);font-size:12px;font-weight:700}.toolbar select,.toolbar input,.inline select,.modal input,.modal select,.modal textarea{border:1px solid var(--line);border-radius:9px;padding:9px 11px;background:#fff;min-height:38px}.toolbar.compact{align-items:end}.segmented{display:flex;border:1px solid var(--line);border-radius:10px;padding:3px;background:#f3f6f9}.segmented button{border:0;background:transparent;border-radius:7px;padding:7px 14px;cursor:pointer;font-size:13px;font-weight:700;color:var(--muted)}.segmented button.active{background:#fff;color:var(--navy);box-shadow:0 2px 7px #102a431c}.legend{display:flex;gap:6px;flex-wrap:wrap;margin:0 0 18px}.legend button{border:0;background:transparent;color:var(--muted);font-size:11px;display:flex;align-items:center;gap:5px;cursor:pointer}.legend i{width:9px;height:9px;background:var(--c);border-radius:3px}.year-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.month-card{background:#fff;border:1px solid var(--line);border-radius:14px;overflow:hidden;box-shadow:0 6px 18px #102a430a}.month-card header{display:flex;align-items:baseline;justify-content:space-between;background:var(--navy);color:#fff;padding:11px 15px}.month-card header h2{margin:0;font-size:16px}.month-card header span{font-size:11px;opacity:.6}.month-grid{display:grid;grid-template-columns:repeat(7,1fr)}.weekday{font-size:9px;font-weight:800;color:var(--muted);text-align:center;padding:7px 2px;background:#f4f7fa;border-bottom:1px solid var(--line)}.day{min-height:78px;border-right:1px solid #e8edf3;border-bottom:1px solid #e8edf3;padding:5px;position:relative;background:#fff;transition:.15s}.day:nth-child(7n+7),.day:nth-child(7n+8){background:#f0f2f5}.day.outside{background:#f7f8fa;color:#adb5c1}.day:hover{box-shadow:inset 0 0 0 2px #20b7e866}.day-num{font-size:10px;font-weight:800;display:block;text-align:right;margin-bottom:3px;color:#44546a}.event-chip{display:block;padding:3px 5px;border-radius:5px;margin-top:2px;font-size:9px;font-weight:700;line-height:1.25;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;background:var(--event-color);color:var(--event-text,#172033);border-left:3px solid color-mix(in srgb,var(--event-color),#000 25%)}.event-chip[draggable=true]{cursor:grab}.event-chip.draft{opacity:.55;border-style:dashed}.loading{grid-column:1/-1;text-align:center;padding:60px;color:var(--muted)}.modal{border:0;border-radius:18px;padding:0;width:min(700px,calc(100% - 24px));box-shadow:0 30px 90px #081c2e70}.modal::backdrop{background:#0b2034aa;backdrop-filter:blur(4px)}.modal.small{width:min(430px,calc(100% - 24px))}.modal form{padding:22px}.modal header,.panel>header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.modal h2,.panel h2{margin:3px 0 0;color:var(--navy)}.modal .icon-btn{color:var(--muted);background:#f3f5f8}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.form-grid .wide{grid-column:1/-1}.modal textarea{resize:vertical}.modal footer{display:flex;gap:9px;align-items:center;margin-top:20px}.modal footer span{flex:1}.alert{border-radius:9px;padding:10px 12px;margin:12px 0;font-size:13px}.alert.error{background:#fff0ee;color:#9d281d;border:1px solid #f5c2bc}.login-page{min-height:100vh;display:grid;place-items:center;padding:25px;background:radial-gradient(circle at 15% 15%,#d9f5ff,transparent 30%),linear-gradient(135deg,#eef4f8,#f8fafc)}.login-card{background:#fff;width:min(900px,100%);min-height:510px;display:grid;grid-template-columns:1fr 1fr;border-radius:24px;overflow:hidden;box-shadow:0 30px 90px #102a4327}.login-card section,.login-art{padding:60px;display:flex;flex-direction:column;justify-content:center}.login-card h1{font-size:38px;margin:6px 0 12px;color:var(--navy)}.muted,.security-note{color:var(--muted)}.security-note{margin-top:22px}.login-art{background:linear-gradient(145deg,#102a43,#174e75);color:#fff}.login-art p{font-size:22px;line-height:1.45}.mini-calendar{display:grid;grid-template-columns:repeat(4,1fr);gap:7px;margin-top:25px}.mini-calendar i{height:42px;border-radius:7px;background:#ffffff18}.mini-calendar .accent{background:#f7b731}.mini-calendar .green{background:#8fd14f}.page-head{align-items:center}.admin-grid{display:grid;grid-template-columns:2fr 1fr;gap:18px}.panel{padding:20px;margin-bottom:18px}.panel>header span{color:var(--muted);font-size:13px}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;font-size:13px}th{text-align:left;color:var(--muted);font-size:10px;text-transform:uppercase;letter-spacing:.08em;padding:10px;border-bottom:1px solid var(--line)}td{padding:11px 10px;border-bottom:1px solid #edf1f5;vertical-align:top}td strong,td small{display:block}td small{color:var(--muted);margin-top:3px}.pill{display:inline-block;background:#edf3f8;color:var(--navy2);padding:4px 8px;border-radius:999px;font-size:10px;font-weight:800}.pill.success{background:#e5f7da;color:#32630d}.pill.warning{background:#fff0cf;color:#7a4d00}.year-row,.notification{display:flex;align-items:center;justify-content:space-between;padding:13px 3px;border-bottom:1px solid #edf1f5}.year-row div,.notification div{display:flex;flex-direction:column}.year-row small,.notification time{color:var(--muted);font-size:11px;margin-top:3px}.hint{font-size:12px;color:var(--muted);line-height:1.5}.list{padding:6px 20px}.notification{justify-content:flex-start;gap:12px}.notification>i{width:9px;height:9px;border-radius:50%;background:#d5dde6}.notification.unread>i{background:var(--cyan);box-shadow:0 0 0 5px #20b7e81b}.notification div{flex:1}.empty-inline{text-align:center;color:var(--muted);padding:35px}.review-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.review-card{border:1px solid var(--line);border-radius:12px;padding:14px}.review-card time{float:right;font-size:12px;color:var(--muted)}.review-card h3{margin:16px 0 5px}.review-card small{color:var(--muted)}.review-card>div{display:flex;gap:7px;margin-top:16px}.review-card form{margin:0}.empty-state{text-align:center;padding:15vh 20px}.status-code{font-size:80px;font-weight:900;color:#d9e2ec}.empty-state h1{color:var(--navy)}details pre{max-width:500px;max-height:240px;overflow:auto;background:#f4f6f8;padding:10px;border-radius:8px;font-size:10px}
@media(max-width:900px){.topbar{padding:0 15px}.topbar nav a{font-size:0;padding:0 7px}.topbar nav a:first-letter{font-size:14px}.user>span{display:none}.page{padding:22px 14px}.year-grid,.admin-grid{grid-template-columns:1fr}.toolbar{overflow-x:auto;align-items:end}.view-switch{display:none}.login-card{grid-template-columns:1fr}.login-art{display:none}.review-grid{grid-template-columns:1fr 1fr}.hero{align-items:flex-start;flex-direction:column}.month-card .day{min-height:66px}}@media(max-width:560px){.form-grid{grid-template-columns:1fr}.form-grid .wide{grid-column:auto}.review-grid{grid-template-columns:1fr}.toolbar label:nth-of-type(3){display:none}.year-grid{display:block}.month-card{margin-bottom:14px}.login-card section{padding:35px 25px}.topbar{gap:15px}.brand small{display:none}}
