:root{--navy:#21578a;--blue:#16769a;--teal:#167e91;--pale:#eff5f7;--ink:#18374a;--muted:#5a7080;--border:#d6e2e8;--white:#fff;--red:#a12335;--gold:#ba9642;--link:#086481}
*{box-sizing:border-box}
body{margin:0;background:#f8fafb;color:var(--ink);font:15px/1.55 -apple-system,BlinkMacSystemFont,"Segoe UI",Arial,sans-serif}
a{color:var(--link)}
a:hover{text-decoration:none}
:focus-visible{outline:3px solid #f2c94c;outline-offset:2px}
.visually-hidden{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.shell{width:min(1390px,calc(100% - 38px));margin:auto}

/* Header */
.top{background:var(--navy);color:white;position:relative;z-index:2;box-shadow:0 2px 4px rgba(33,87,138,.35),0 6px 18px rgba(33,87,138,.25)}
.head-wrap{min-height:95px;display:flex;align-items:center;justify-content:space-between;gap:22px}
.brand{display:flex;align-items:center;gap:17px;color:white;text-decoration:none}
.logo-box{display:inline-flex;line-height:0}
.logo-box img{width:64px;height:55px;object-fit:contain;border-radius:3px}
.brand strong{font-size:23px;display:block;line-height:1.3}
.brand small{font-size:12px;color:#dce9f2;display:block}
.main-nav{display:flex;gap:20px;flex-wrap:wrap;align-items:center}
.main-nav a,.main-nav .nav-button{color:white;text-decoration:none;font-family:inherit;font-weight:600;font-size:13px;line-height:1.4;padding:4px 0;border-bottom:2px solid transparent}
.main-nav a:hover,.main-nav .nav-button:hover{border-bottom-color:#c4dbe6}
.main-nav a[aria-current="page"]{border-bottom-color:var(--gold)}
.nav-form{display:inline;margin:0}
.main-nav .nav-button{background:transparent;border-top:0;border-left:0;border-right:0;cursor:pointer}

.foot{margin:55px auto 24px;border-top:1px solid var(--border);padding-top:20px;display:flex;justify-content:space-between;font-size:13px;color:var(--muted)}
h1{font-size:30px;margin:0;color:var(--navy);line-height:1.3}
h2{font-size:21px;color:var(--navy);margin:0 0 12px}
h3{color:var(--navy)}
p{margin:6px 0 15px}
.muted{color:var(--muted)}
.toolbar{display:flex;justify-content:space-between;align-items:center;gap:15px;margin:28px 0 22px;flex-wrap:wrap}
.toolbar-actions{display:flex;gap:9px;flex-wrap:wrap}
.btn{border:1px solid var(--navy);background:var(--navy);color:white;border-radius:5px;padding:10px 16px;font:inherit;font-weight:600;text-decoration:none;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:5px;min-height:44px}
.btn:hover{background:#1a4670;color:white}
.btn.subtle{color:var(--navy);background:white;border-color:var(--border)}
.btn.subtle:hover{background:var(--pale)}
.btn.subtle[aria-current]{border-color:var(--navy)}
.btn.danger{background:var(--red);border-color:var(--red)}
.btn.small{min-height:34px;padding:6px 11px;font-size:13px}
.btn.full{width:100%}

/* Month grid */
.calendar-layout{display:grid;grid-template-columns:minmax(0,1fr) 236px;gap:20px;align-items:start}
.print-page .calendar-layout{grid-template-columns:minmax(0,1fr)}
.calendar-scroll{overflow-x:auto;border:1px solid var(--border);border-radius:7px;background:white;box-shadow:0 2px 10px #1234}
.month-grid{display:grid;grid-template-columns:repeat(7,minmax(110px,1fr));gap:1px;background:var(--border)}
.weekday{background:var(--navy);color:#fff;text-align:center;padding:9px 2px;font-size:12px;font-weight:700}
.day{min-height:118px;background:#fff;padding:7px;word-break:break-word}
.day.empty{background:#f1f6f8}
.day.today{background:#edf8fa;box-shadow:inset 0 0 0 2px var(--teal)}
.day-num{color:#3f6074;font-weight:700;display:block;text-align:right;padding:0 4px 6px}
.event{border-left:3px solid var(--teal);padding:4px 4px 4px 6px;background:#f0f7f8;margin-bottom:5px;font-size:12px;line-height:1.4;display:flex;gap:4px;align-items:flex-start;justify-content:space-between}
.event-text{flex:1;min-width:0}
.event a{font-weight:650}
.ics{flex:none;display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:4px;color:var(--link);margin:-2px -2px 0 0}
.ics:hover{background:#dcecef}
.ics svg{display:block}

/* Phone agenda (shown below 640px) */
.agenda{display:none}
.agenda-day{background:white;border:1px solid var(--border);border-radius:7px;padding:12px 14px;margin-bottom:10px}
.agenda-day.today{border-color:var(--teal);box-shadow:inset 0 0 0 1px var(--teal)}
.agenda-date{font-size:15px;margin:0 0 8px}
.agenda-day ul{list-style:none;margin:0;padding:0}
.agenda-day .event{font-size:14px;flex-wrap:wrap}
.agenda-range{flex-basis:100%;font-size:12px;color:var(--muted);font-weight:600}
.agenda-empty{background:white;border:1px solid var(--border);border-radius:7px;padding:14px}
.today-tag{display:inline-block;background:var(--teal);color:#fff;border-radius:10px;padding:0 8px;font-size:12px;vertical-align:1px}

/* Sidebar */
.side-card,.panel,.auth-card{background:white;padding:20px;border:1px solid var(--border);border-radius:7px;box-shadow:0 1px 9px #172e380d;margin-bottom:19px}
.side-card h2{font-size:16px}
.mini-title{margin-top:14px;font-weight:650}
.mini-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;text-align:center;font-size:11px}
.mini-head{color:var(--muted);font-weight:650;background:var(--pale)}
.mini-grid span{padding:2px 0}
.mini-grid .mini-today{background:var(--teal);color:#fff;border-radius:3px;font-weight:700}

/* Forms */
form{margin:0}
label{font-weight:600;display:block;margin:0 0 12px;color:var(--ink)}
input,textarea,select{font:inherit;color:var(--ink);border:1px solid #8fa6b2;background:white;border-radius:5px;padding:9px 10px;display:block;width:100%;margin-top:5px}
input[type=search]{-webkit-appearance:none;appearance:none}
textarea{min-height:90px;resize:vertical}
input:focus,select:focus,textarea:focus{outline:3px solid #b5dce8;outline-offset:1px}
label small{display:block;color:var(--muted);font-weight:400}
.auth-card{max-width:520px;margin:36px auto;padding:30px}
.auth-card h1{font-size:25px;margin-bottom:15px}
.auth-card form > label + input{margin-bottom:14px}
.alert{padding:13px 16px;background:#edf4f8;border-left:4px solid var(--teal);margin:16px 0;border-radius:3px}
.alert.error{border-color:var(--red);background:#fff0f1;color:#8e152a}
.alert.success{border-color:#267d54;background:#eef8f2}
.actions{display:flex;gap:9px;flex-wrap:wrap;align-items:center}
.filters{display:flex;gap:12px;flex-wrap:wrap;align-items:flex-end;margin-bottom:16px}
.filters label{margin:0}
.filters .grow{flex:1 1 260px}
.admin-nav{display:flex;gap:6px 18px;margin-bottom:24px;flex-wrap:wrap;border-bottom:1px solid var(--border);padding-bottom:12px}
.admin-nav a{font-weight:700;text-decoration:none;padding:4px 0;border-bottom:2px solid transparent}
.admin-nav a[aria-current="page"]{color:var(--navy);border-bottom-color:var(--gold)}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:15px}
.table-scroll{overflow-x:auto}
table.data{width:100%;border-collapse:collapse;background:white}
table.data th{background:#eaf1f4;color:var(--navy);text-align:left;font-size:13px;padding:12px;border-bottom:1px solid var(--border)}
table.data td{padding:12px;border-bottom:1px solid var(--border);vertical-align:top;font-size:13px}
table.data tr:hover td{background:#fafcfd}
table.data td .actions{gap:5px 12px}
.nowrap{white-space:nowrap}
.table-link{font-weight:700}
.small{font-size:12px}
.badge{display:inline-block;padding:3px 8px;border-radius:12px;background:#e2eef3;color:#175570;font-size:12px;font-weight:700}
.badge.off{background:#fbe6e9;color:#9d2438}
.badge.note{background:#fff4dc;color:#7a5600}
.inline{display:inline}
.link-button{border:0;background:none;color:var(--link);padding:0;cursor:pointer;text-decoration:underline;font:inherit;font-weight:700}
.danger-link,.link-button.danger-link{color:#a12537}
.field-error{display:block;color:var(--red);font-size:12px;margin-top:4px}
.help{color:var(--muted);font-size:12px}
.pagination{display:flex;gap:8px;margin:14px 0;align-items:center}
.description-cell{max-width:540px;white-space:pre-wrap;overflow-wrap:anywhere}
.wide{max-width:1040px;margin:28px 0}
.audit-json{white-space:pre-wrap;overflow-wrap:anywhere;max-width:36rem;max-height:22rem;overflow:auto;font-size:.82rem;text-align:left}
.form-foot{margin-top:16px}
.toolbar.flush{margin:0 0 15px}
.print-tip{background:#fff;border:1px dashed var(--border);border-radius:5px;padding:10px 14px;color:var(--muted);font-size:13px}

@media(max-width:1000px){
 .calendar-layout{grid-template-columns:1fr}
 .sidebar{display:grid;grid-template-columns:1fr 1fr;gap:12px}
 .month-grid{min-width:790px}
}
@media(max-width:640px){
 .head-wrap{display:block;padding:14px 0}
 .main-nav{padding-top:12px;gap:16px}
 .main-nav a,.main-nav .nav-button{font-size:14px;padding:8px 0}
 .logo-box img{width:48px;height:41px}
 .brand strong{font-size:18px}
 .brand small{display:none}
 h1{font-size:25px}
 .calendar-scroll{display:none}
 .agenda{display:block}
 .sidebar{display:block}
 .mini-months{display:none}
 .form-grid{grid-template-columns:1fr}
 .toolbar-actions{width:100%}
 .toolbar-actions .btn{flex:1 1 auto;padding:8px 9px;font-size:13px}
 .shell{width:calc(100% - 24px)}
 .panel{padding:14px}
 .wide{margin:20px 0}
}
@page{size:letter landscape;margin:.35in}
@media print{
 body{background:white;color:black;font-size:11px}
 .top,.foot,.toolbar-actions,.sidebar,.admin-nav,.print-tip,.agenda,.ics{display:none!important}
 .shell{width:100%}
 .toolbar{margin:0 0 8px}
 .toolbar h1{font-size:20px;color:#000}
 .toolbar .muted{display:none}
 .calendar-layout{display:block}
 .calendar-scroll{display:block!important;overflow:visible;box-shadow:none;border:1px solid #000;border-radius:0}
 .month-grid{grid-template-columns:repeat(7,minmax(0,1fr))!important;min-width:0!important;background:#000}
 .weekday{background:#fff;color:#000;border-bottom:1px solid #000;padding:3px 2px}
 .day{min-height:80px;padding:3px;break-inside:avoid}
 .day.today{background:#fff;box-shadow:none}
 .day.empty{background:#fff}
 .day-num{color:#000;padding:0 2px 2px}
 .event{font-size:10px;line-height:1.3;background:#fff;border-left:2px solid #000;padding:1px 3px;margin-bottom:2px;display:block}
 a{color:black;text-decoration:none}
}
