:root{
  --bg:#f5f8f7;--surface:#fff;--surface-2:#f0f5f3;--line:#e1e9e6;--ink:#16231f;--muted:#60716c;--faint:#93a19d;
  --red:#c8161d;--green:#1f9e8c;--blue:#1e8fb0;--amber:#c8861c;--danger:#b91c1c;--shadow:0 10px 28px -18px rgba(20,40,36,.32)
}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--ink);background:var(--bg)}
a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}button{cursor:pointer}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}
.app-nav{position:sticky;top:0;z-index:1000;background:rgba(255,255,255,.97);border-bottom:1px solid var(--line);box-shadow:0 4px 16px -12px rgba(0,0,0,.4);backdrop-filter:blur(10px)}
.app-nav-inner{min-height:58px;display:flex;align-items:center;gap:12px;padding:8px clamp(10px,1.5vw,24px)}
.brand{display:flex;align-items:center;gap:9px;flex:0 0 auto}.brand-mark{width:35px;height:35px;border-radius:10px;background:var(--red);color:#fff;display:grid;place-items:center;font-weight:900;font-size:12px}.brand-copy small{display:block;color:var(--red);font-weight:800;font-size:9px;letter-spacing:.16em;text-transform:uppercase}.brand-copy strong{font-size:13px;white-space:nowrap}
.nav-scroll{display:flex;align-items:center;gap:4px;min-width:0;flex:1;overflow:auto;scrollbar-width:none}.nav-scroll::-webkit-scrollbar{display:none}.nav-link{flex:0 0 auto;padding:9px 11px;border-radius:9px;color:var(--muted);font-size:12px;font-weight:700}.nav-link:hover,.nav-link.active{background:var(--surface-2);color:var(--ink)}
.nav-user{display:flex;align-items:center;gap:10px;flex:0 0 auto}.nav-user-copy{display:none;text-align:right}.nav-user-copy strong,.nav-user-copy small{display:block;max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nav-user-copy strong{font-size:11px}.nav-user-copy small{color:var(--faint);font-size:9px}.btn-logout{border:1px solid var(--line);background:#fff;color:var(--muted);padding:8px 11px;border-radius:9px;font-weight:700;font-size:11px}.btn-logout:hover{border-color:var(--red);color:var(--red);background:#fff5f5}@media(min-width:1050px){.nav-user-copy{display:block}}
.page{width:100%;padding:clamp(12px,1.6vw,28px)}.page-narrow{max-width:1450px;margin:0 auto}.page-head{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;flex-wrap:wrap;margin-bottom:18px}.eyebrow{font-size:10px;text-transform:uppercase;letter-spacing:.13em;color:var(--faint);font-weight:800}.page-title{margin:3px 0 4px;font-size:clamp(21px,2.3vw,30px)}.page-subtitle{margin:0;color:var(--muted);font-size:13px;max-width:860px}
.card{background:linear-gradient(160deg,#fff,#f8fbfa);border:1px solid var(--line);border-radius:15px;padding:clamp(14px,1.5vw,20px);box-shadow:var(--shadow)}.card+.card{margin-top:15px}.card-title{font-size:14px;margin:0 0 4px}.card-note{font-size:12px;color:var(--muted);margin:0 0 14px}
.grid{display:grid;gap:14px}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}@media(max-width:980px){.grid-3,.grid-4{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:650px){.grid-2,.grid-3,.grid-4{grid-template-columns:1fr}}
.field label{display:block;font-size:11px;font-weight:800;color:var(--muted);margin-bottom:6px}.input,.select,.textarea{display:block;width:100%;border:1px solid var(--line);background:#fff;color:var(--ink);border-radius:9px;padding:10px 11px;outline:none}.input:focus,.select:focus,.textarea:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(30,143,176,.09)}.input[readonly]{background:#eef3f1;color:var(--muted)}.textarea{min-height:95px;resize:vertical}.help{font-size:10px;color:var(--faint);margin-top:5px}.error{font-size:11px;color:var(--danger);margin-top:5px}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;border:1px solid transparent;padding:9px 13px;border-radius:9px;font-weight:800;font-size:12px}.btn-primary{background:var(--red);color:#fff}.btn-secondary{background:#fff;border-color:var(--line);color:var(--muted)}.btn-success{background:var(--green);color:#fff}.btn-danger{background:#fff5f5;border-color:#f4b8ba;color:var(--red)}.btn-sm{padding:6px 9px;font-size:10px}.btn:disabled{opacity:.55;cursor:not-allowed}
.alert{border-radius:11px;padding:11px 13px;margin-bottom:15px;font-size:12px}.alert-success{background:#eaf8f4;border:1px solid #bde5da;color:#176c5e}.alert-error{background:#fff1f1;border:1px solid #f3b7ba;color:#9e171c}.alert-info{background:#edf8fb;border:1px solid #bddfe8;color:#236a7d}
.table-wrap{width:100%;overflow:auto;border:1px solid var(--line);border-radius:12px}.table{width:100%;border-collapse:collapse;min-width:760px;background:#fff}.table th,.table td{padding:10px 11px;border-bottom:1px solid #edf2f0;text-align:left;font-size:11px;vertical-align:middle}.table th{background:#eef3f1;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;font-size:9px;position:sticky;top:0}.table tr:hover td{background:#fafcfb}.text-right{text-align:right!important}.badge{display:inline-block;padding:3px 7px;border-radius:99px;font-size:9px;font-weight:800}.badge-active{background:#e7f7f2;color:#17735f}.badge-completed{background:#edf0ef;color:#64746f}.badge-planned{background:#fff6db;color:#8b6916}.badge-danger{background:#feecec;color:#a31b20}
.info-box{border:1px solid var(--line);background:#f7faf9;border-radius:10px;padding:10px}.info-box small{display:block;color:var(--faint);font-size:9px;text-transform:uppercase;font-weight:800;letter-spacing:.08em}.info-box strong{display:block;margin-top:4px;font-size:12px}.section{margin-bottom:16px}.section-title{font-size:15px;margin:0 0 4px}.section-desc{margin:0 0 14px;font-size:12px;color:var(--muted)}
.dashboard-frame-wrap{height:calc(100dvh - 58px);width:100%;overflow:hidden;background:#f5f8f7}.dashboard-frame{display:block;width:100%;height:100%;border:0;background:#f5f8f7}
.login-shell{min-height:100dvh;display:grid;grid-template-columns:minmax(0,1.2fr) minmax(330px,.8fr)}.login-hero{padding:clamp(30px,6vw,90px);display:flex;flex-direction:column;justify-content:center;background:linear-gradient(145deg,#12241f,#1f4a3f);color:#fff}.login-hero h1{font-size:clamp(34px,5vw,68px);line-height:1.02;margin:15px 0}.login-hero p{max-width:680px;color:#c7d9d3}.login-panel{display:flex;align-items:center;justify-content:center;padding:30px;background:#f5f8f7}.login-card{width:min(440px,100%)}@media(max-width:820px){.login-shell{grid-template-columns:1fr}.login-hero{min-height:38dvh}.login-panel{min-height:62dvh}}
.hole-card{display:grid;grid-template-columns:minmax(180px,.8fr) minmax(240px,1.2fr) auto;gap:14px;align-items:center;border:1px solid var(--line);border-radius:13px;padding:14px;background:#fff}.hole-card+.hole-card{margin-top:10px}@media(max-width:820px){.hole-card{grid-template-columns:1fr}.hole-card .actions{justify-content:flex-start}}.actions{display:flex;gap:7px;flex-wrap:wrap;justify-content:flex-end}
.sticky-actions{position:sticky;bottom:10px;display:flex;justify-content:flex-end;pointer-events:none;margin-top:16px}.sticky-actions>*{pointer-events:auto;box-shadow:0 8px 22px rgba(0,0,0,.16)}
.pwa-install{display:none}.pwa-install.show{display:inline-flex}
.pagination{display:flex;gap:5px;list-style:none;padding:0;margin:0;flex-wrap:wrap}.page-item .page-link{display:block;padding:7px 10px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--muted);font-size:11px}.page-item.active .page-link{background:var(--red);border-color:var(--red);color:#fff}.page-item.disabled .page-link{opacity:.45}
