:root{--bg:#f5f3ec;--card:#fff;--text:#1e2b25;--muted:#66736c;--line:#d9ded8;--accent:#265f46;--accent2:#e7efe9;--danger:#9e3434;--shadow:0 8px 30px rgba(30,43,37,.08)}
*{box-sizing:border-box}body{margin:0;font-family:Inter,system-ui,-apple-system,Segoe UI,sans-serif;background:var(--bg);color:var(--text)}a{color:inherit}.topbar{display:flex;justify-content:space-between;align-items:center;padding:16px clamp(18px,5vw,64px);background:#163c2d;color:#fff;position:sticky;top:0;z-index:10}.brand{text-decoration:none;font-weight:800;letter-spacing:.2px}.topbar nav{display:flex;gap:18px;align-items:center;flex-wrap:wrap}.topbar nav a{text-decoration:none;opacity:.9}.user{opacity:.65}.container{max-width:1180px;margin:0 auto;padding:34px 20px 80px}.hero{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:22px}.hero h1{margin:0 0 5px;font-size:clamp(28px,4vw,44px)}.muted{color:var(--muted)}.small{font-size:13px}.card{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:22px;box-shadow:var(--shadow);margin-bottom:22px}.auth-card{max-width:440px;margin:10vh auto}.stack{display:grid;gap:16px}label{display:grid;gap:7px;font-weight:650;font-size:14px}input{width:100%;padding:11px 12px;border:1px solid #bcc6bf;border-radius:9px;font:inherit;background:#fff}button,.button{border:0;border-radius:9px;background:var(--accent);color:#fff;padding:11px 15px;font:inherit;font-weight:700;cursor:pointer;text-decoration:none;display:inline-block}.secondary{background:var(--accent2);color:var(--accent)}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.full{grid-column:1/-1}.actions{display:flex;gap:10px;align-items:center}.compact{gap:6px}.inline{display:inline}.link-button{border:0;background:transparent;padding:0;font-weight:600}.danger-text{color:var(--danger);margin-left:10px}.text-link{color:var(--accent);font-weight:700}.flash{padding:12px 15px;border-radius:10px;margin-bottom:14px}.flash.success{background:#e5f3ea}.flash.danger{background:#f9e3e3;color:#782727}.badge{display:inline-block;padding:4px 8px;border-radius:99px;font-size:12px;background:#edf0ee}.badge.approved{background:#dff1e6;color:#205f3b}.badge.pending,.badge.change_pending,.badge.cancel_pending{background:#fff0c9;color:#785300}.badge.rejected,.badge.cancelled{background:#f0dddd;color:#7c3030}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse}th,td{text-align:left;border-bottom:1px solid #e6e9e6;padding:12px 10px;vertical-align:top}th{font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:#6e7973}.calendar-toolbar{display:flex;justify-content:space-between;align-items:center}.calendar-toolbar h2{margin:0}.weekdays,.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:5px}.weekdays{margin:18px 0 7px;color:var(--muted);font-size:12px;text-align:center;font-weight:700}.day{min-height:118px;border:1px solid #e0e4e1;border-radius:10px;padding:7px;background:#fff}.day.out{opacity:.36}.day.today{outline:2px solid var(--accent)}.day-num{font-size:12px;font-weight:800;margin-bottom:6px}.event{display:block;font-size:11px;padding:5px 6px;margin:3px 0;border-radius:7px;background:#dff1e6;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.event.pending,.event.change_pending,.event.cancel_pending{background:#fff0c9}.event.external{background:#e8e4f5}.sync-card code{display:block;background:#f1f3f1;padding:10px;border-radius:8px;overflow-wrap:anywhere}.upload-form{display:flex;gap:10px;align-items:center}.upload-form input{max-width:420px}
@media(max-width:760px){.topbar{align-items:flex-start;gap:12px;flex-direction:column}.topbar nav{gap:12px}.form-grid{grid-template-columns:1fr}.full{grid-column:auto}.hero{align-items:flex-start;flex-direction:column}.day{min-height:85px;padding:4px}.event{font-size:9px}.card{padding:15px}.upload-form{display:grid}.actions{flex-wrap:wrap}}
