
.nfh2-login,.nfh2-admin,.nfh2-cal{--g:#17864b;--r:#d43a42;--ink:#17211d;--mut:#6d7771;--line:#e3e9e5;--soft:#f5f8f6;color:var(--ink);box-sizing:border-box}.nfh2-login *,.nfh2-admin *,.nfh2-cal *{box-sizing:border-box}
.nfh2-login{max-width:500px;margin:60px auto;padding:28px;border:1px solid var(--line);border-radius:24px}.nfh2-login>span,.nfh2-admin header span,.nfh2-cal-head>div>span{font-size:10px;font-weight:900;letter-spacing:.14em;color:var(--g)}.nfh2-login h1,.nfh2-admin h1{font-size:clamp(38px,5vw,56px)!important;letter-spacing:-.05em!important;margin:5px 0!important}.nfh2-login p,.nfh2-admin header p,.nfh2-cal-head p{color:var(--mut);font-size:12px}.nfh2-login form{display:grid;gap:10px;margin-top:20px}.nfh2-login label,.nfh2-edit label,.nfh2-manual label{font-size:9px;color:var(--mut)}.nfh2-login input,.nfh2-edit input,.nfh2-edit textarea,.nfh2-manual input,.nfh2-manual textarea{display:block;width:100%;border:1px solid var(--line);border-radius:11px;padding:10px;margin-top:4px;font:inherit}.nfh2-login button,.nfh2-edit button,.nfh2-manual button{border:0;border-radius:999px;background:var(--ink);color:#fff;padding:10px 14px;font-weight:800;cursor:pointer}.nfh2-error{background:#fbeaec;color:#b72c33;padding:10px;border-radius:10px}.nfh2-success{background:#e8f5ed;color:#126b47;padding:10px;border-radius:10px}
.nfh2-admin{max-width:1180px;margin:0 auto;padding:28px 22px 75px}.nfh2-admin header{display:flex;justify-content:space-between;align-items:end;padding-bottom:26px;border-bottom:1px solid var(--line)}.nfh2-admin header a{font-size:10px;color:var(--mut);text-decoration:none}.nfh2-stats{display:grid;grid-template-columns:repeat(3,1fr);border:1px solid var(--line);border-radius:20px;overflow:hidden;margin:24px 0}.nfh2-stats div{padding:18px;border-right:1px solid var(--line)}.nfh2-stats div:last-child{border:0}.nfh2-stats b,.nfh2-stats span{display:block}.nfh2-stats b{font-size:28px}.nfh2-stats span{font-size:10px;color:var(--mut)}
.nfh2-admin-grid{display:grid;grid-template-columns:minmax(0,1fr) 380px;gap:28px;align-items:start}.nfh2-list{border-top:1px solid var(--line)}.nfh2-row{display:grid;grid-template-columns:105px 1fr auto auto;gap:12px;align-items:center;padding:14px 2px;border-bottom:1px solid var(--line);text-decoration:none!important;color:var(--ink)!important}.nfh2-row time small,.nfh2-row div small{display:block;font-size:9px;color:var(--mut)}.nfh2-row div b{font-size:13px}.nfh2-row>span{font-size:9px;font-weight:800;border-radius:999px;padding:5px 8px}.nfh2-row>span.requested{background:#fff4dc;color:#9a6b0b}.nfh2-row>span.confirmed{background:#e8f5ed;color:#126b47}.nfh2-row>span.declined{background:#fbeaec;color:#b72c33}.nfh2-row em{font-style:normal;font-size:9px;color:var(--g)}
.nfh2-admin aside{position:sticky;top:20px}.nfh2-editor{border:1px solid var(--line);border-radius:22px;padding:18px}.nfh2-editor-head{display:flex;justify-content:space-between}.nfh2-editor-head span{font-size:9px;color:var(--g);font-weight:900;letter-spacing:.12em}.nfh2-editor-head h2{font-size:22px!important;margin:4px 0 12px!important}.nfh2-editor-head a{text-decoration:none;color:var(--mut);font-size:20px}.nfh2-decision{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:10px 0 15px}.nfh2-decision button{width:100%;border:0;border-radius:11px;padding:10px;font-weight:850;cursor:pointer}.nfh2-decision .yes{background:var(--g);color:#fff}.nfh2-decision .no{background:#fbeaec;color:#b72c33}.nfh2-edit{display:grid;grid-template-columns:1fr 1fr;gap:10px}.nfh2-edit label:last-of-type{grid-column:1/-1}.nfh2-edit button{grid-column:1/-1}
.nfh2-manual{margin-top:40px;padding-top:30px;border-top:1px solid var(--line)}.nfh2-manual-grid{display:grid;grid-template-columns:330px 1fr;gap:24px}.nfh2-manual-grid>form{display:grid;gap:9px}.nfh2-manual-grid>form>div{display:grid;grid-template-columns:1fr 1fr;gap:8px}.nfh2-manual-grid>div article{display:flex;justify-content:space-between;align-items:center;padding:11px 0;border-bottom:1px solid var(--line)}.nfh2-manual-grid article b,.nfh2-manual-grid article span{display:block}.nfh2-manual-grid article b{font-size:12px}.nfh2-manual-grid article span{font-size:9px;color:var(--mut)}.nfh2-manual-grid article button{border:1px solid #efc6c8;background:#fff;color:#b72c33;border-radius:999px;padding:6px 8px;font-size:9px}
.nfh2-cal-head{display:flex;justify-content:space-between;align-items:end;gap:25px;margin-bottom:18px}.nfh2-cal-head h2{font-size:clamp(30px,4vw,44px)!important;letter-spacing:-.04em!important;margin:4px 0!important}.nfh2-legend{display:flex;gap:12px;font-size:10px;color:var(--mut)}.nfh2-legend span{display:flex;align-items:center;gap:5px}.nfh2-legend i{width:11px;height:11px;border-radius:3px}.nfh2-legend .free{background:#dff4e7}.nfh2-legend .busy{background:#f7d9dc}.nfh2-months{display:grid;grid-template-columns:1fr 1fr;gap:16px}.nfh2-months>section{border:1px solid var(--line);border-radius:20px;padding:16px}.nfh2-months h3{font-size:17px!important;margin:0 0 12px!important}.nfh2-week,.nfh2-days{display:grid;grid-template-columns:repeat(7,1fr);gap:5px}.nfh2-week span{text-align:center;font-size:8px;color:#89918d;font-weight:800}.nfh2-days .day,.nfh2-days>span.empty{aspect-ratio:1;border-radius:9px}.nfh2-days .day{display:grid;place-items:center;border:0;font:inherit}.nfh2-days .free{background:#dff4e7;color:#126b47;cursor:pointer}.nfh2-days .free:hover{background:#c7ebd4}.nfh2-days .busy{background:#f7d9dc;color:#b72c33;cursor:not-allowed}.nfh2-days .day b{font-size:11px}
@media(max-width:850px){.nfh2-admin-grid,.nfh2-manual-grid,.nfh2-months{grid-template-columns:1fr}.nfh2-admin aside{position:static}.nfh2-months>section:nth-child(2){display:none}}@media(max-width:600px){.nfh2-admin{padding:15px 14px 55px}.nfh2-stats{grid-template-columns:1fr 1fr}.nfh2-row{grid-template-columns:80px 1fr auto}.nfh2-row em{grid-column:2}.nfh2-edit{grid-template-columns:1fr}.nfh2-edit label:last-of-type,.nfh2-edit button{grid-column:auto}}

/* v2.1 calendar-only house administration */
.nfh2-calendar-admin{max-width:1180px!important}
.nfh2-admin-legend{display:flex;align-items:center;gap:14px;margin:24px 0 18px;padding:12px 14px;border:1px solid var(--line);border-radius:14px;background:#fbfdfc}
.nfh2-admin-legend span{display:flex;align-items:center;gap:6px;font-size:10px;font-weight:750}
.nfh2-admin-legend i{width:12px;height:12px;border-radius:3px}.nfh2-admin-legend i.free{background:#dff4e7}.nfh2-admin-legend i.busy{background:#f7d9dc}.nfh2-admin-legend small{margin-left:auto;color:var(--mut);font-size:9px}
.nfh2-admin-months{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.nfh2-admin-months>section{border:1px solid var(--line);border-radius:22px;padding:18px;background:#fff}
.nfh2-admin-months h2{font-size:20px!important;margin:0 0 13px!important;letter-spacing:-.025em!important}
.nfh2-day-form{margin:0}
.nfh2-admin-days .day{width:100%;height:100%;min-height:48px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;border:0;border-radius:10px;cursor:pointer}
.nfh2-admin-days .day b{font-size:12px}.nfh2-admin-days .day small{font-size:7px;text-transform:uppercase;font-weight:800;opacity:.75}
.nfh2-admin-days .free{background:#dff4e7;color:#126b47}.nfh2-admin-days .busy{background:#f7d9dc;color:#b72c33}
.nfh2-admin-days .day:hover{transform:translateY(-1px);filter:brightness(.98)}
@media(max-width:800px){.nfh2-admin-months{grid-template-columns:1fr}.nfh2-admin-legend{align-items:flex-start;flex-wrap:wrap}.nfh2-admin-legend small{width:100%;margin-left:0}}

/* v2.2 unlimited month navigation */
.nfh2-calendar-nav{display:flex;justify-content:space-between;align-items:center;gap:10px;margin:22px 0 10px}
.nfh2-calendar-nav a{display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--line);border-radius:999px;padding:9px 13px;background:#fff;color:var(--g)!important;text-decoration:none!important;font-size:10px;font-weight:800}
.nfh2-calendar-nav a.today{background:var(--ink);border-color:var(--ink);color:#fff!important}
@media(max-width:620px){.nfh2-calendar-nav{display:grid;grid-template-columns:1fr 1fr}.nfh2-calendar-nav a.today{grid-column:1/-1;grid-row:1}.nfh2-calendar-nav a{padding:8px 9px;font-size:9px}}

/* v2.3 AJAX calendar editing */
.nfh2-admin-days .day.is-saving{opacity:.55;pointer-events:none;transform:none!important}
.nfh2-save-state{position:fixed;right:20px;bottom:20px;z-index:9999;min-height:0;padding:0;border-radius:999px;font-size:10px;font-weight:800;box-shadow:0 10px 30px rgba(0,0,0,.1);transition:.18s ease}
.nfh2-save-state.is-saving,.nfh2-save-state.is-ok,.nfh2-save-state.is-error{padding:9px 13px}
.nfh2-save-state.is-saving{background:#17211d;color:#fff}.nfh2-save-state.is-ok{background:#e7f5ed;color:#126b47}.nfh2-save-state.is-error{background:#fbeaec;color:#b72c33}

/* v2.4 public calendar navigation + view switch */
.nfh2-public-controls{display:flex;justify-content:space-between;align-items:center;gap:14px;margin:16px 0}.nfh2-public-nav,.nfh2-view-switch{display:flex;flex-wrap:wrap;gap:7px}.nfh2-public-controls button{border:1px solid var(--line);background:#fff;color:var(--ink);border-radius:999px;padding:8px 11px;font-size:9px;font-weight:800;cursor:pointer}.nfh2-view-switch button.is-active,.nfh2-public-nav button:nth-child(2){background:var(--ink);border-color:var(--ink);color:#fff}.nfh2-public-window{display:grid;gap:16px}.nfh2-public-month{border:1px solid var(--line);border-radius:20px;padding:16px;background:#fff}.nfh2-public-month h3{font-size:17px!important;margin:0 0 12px!important}
@media(max-width:760px){.nfh2-public-controls{align-items:flex-start;flex-direction:column}.nfh2-public-window{grid-template-columns:1fr!important}.nfh2-view-switch button[data-view="4"]{display:none}}

/* v2.5 cleaned public availability calendar */
.nfh2-public-calendar{--g:#17864b;--r:#b72c33;--ink:#17211d;--mut:#6d7771;--line:#e3e9e5;--free:#dff4e7;--busy:#f7d9dc;width:100%;color:var(--ink)}
.nfh2-public-calendar *{box-sizing:border-box}
.nfh2-public-head{display:flex;justify-content:space-between;align-items:flex-end;gap:28px;margin-bottom:18px}
.nfh2-public-head>div:first-child>span{font-size:10px;font-weight:900;letter-spacing:.14em;color:var(--g)}
.nfh2-public-head h2{font-size:clamp(30px,4vw,44px)!important;letter-spacing:-.04em!important;margin:4px 0!important}
.nfh2-public-head p{margin:0;color:var(--mut);font-size:12px}
.nfh2-public-legend{display:flex;gap:13px;flex:none;font-size:10px;color:var(--mut)}
.nfh2-public-legend span{display:flex;align-items:center;gap:5px}
.nfh2-public-legend i{width:11px;height:11px;border-radius:3px}.nfh2-public-legend i.free{background:var(--free)}.nfh2-public-legend i.busy{background:var(--busy)}
.nfh2-public-toolbar{display:flex;justify-content:space-between;align-items:center;gap:15px;margin:16px 0}
.nfh2-public-nav,.nfh2-public-views{display:flex;align-items:center;gap:6px}
.nfh2-public-toolbar button{display:inline-flex;align-items:center;justify-content:center;min-height:34px;border:1px solid var(--line);border-radius:999px;background:#fff;color:var(--ink);padding:0 11px;font-size:10px;font-weight:800;cursor:pointer}
.nfh2-public-toolbar button:hover:not(:disabled){border-color:#bdcbc3}
.nfh2-public-toolbar button:disabled{opacity:.32;cursor:not-allowed}
.nfh2-public-nav button:first-child,.nfh2-public-nav button:last-of-type{width:34px;padding:0;font-size:16px}
.nfh2-public-nav .today{background:var(--ink);border-color:var(--ink);color:#fff}
.nfh2-public-nav strong{margin-left:7px;font-size:12px;letter-spacing:-.01em}
.nfh2-public-views>span{font-size:9px;color:var(--mut);margin-right:3px}
.nfh2-public-views button.is-active{background:var(--g);border-color:var(--g);color:#fff}
.nfh2-public-window{display:grid;gap:14px}
.nfh2-public-window[data-view="1"]{grid-template-columns:1fr}
.nfh2-public-window[data-view="2"]{grid-template-columns:repeat(2,minmax(0,1fr))}
.nfh2-public-window[data-view="4"]{grid-template-columns:repeat(2,minmax(0,1fr))}
.nfh2-public-month{min-width:0;border:1px solid var(--line);border-radius:20px;padding:16px;background:#fff}
.nfh2-public-month[hidden]{display:none!important}
.nfh2-public-month h3{font-size:17px!important;margin:0 0 12px!important;letter-spacing:-.02em!important}
.nfh2-public-week,.nfh2-public-days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px}
.nfh2-public-week{margin-bottom:5px}.nfh2-public-week span{text-align:center;font-size:8px;font-weight:850;color:#89918d}
.nfh2-public-days>.empty,.nfh2-public-day{aspect-ratio:1;border-radius:9px}
.nfh2-public-day{display:grid;place-items:center;width:100%;border:0;font:inherit}
button.nfh2-public-day{cursor:pointer}
.nfh2-public-day.free{background:var(--free);color:#126b47}.nfh2-public-day.busy{background:var(--busy);color:var(--r)}
button.nfh2-public-day.free:hover{background:#c8ebd5;transform:translateY(-1px)}
.nfh2-public-day b{font-size:11px}
.nfh2-public-hint{margin:12px 0 0;color:var(--mut);font-size:9px}
@media(max-width:760px){
 .nfh2-public-head{display:block}.nfh2-public-legend{margin-top:10px}
 .nfh2-public-toolbar{align-items:flex-start;flex-direction:column}
 .nfh2-public-nav{width:100%;flex-wrap:wrap}
 .nfh2-public-nav strong{width:100%;order:4;margin:4px 0 0}
 .nfh2-public-views{width:100%}
 .nfh2-public-window[data-view="2"],.nfh2-public-window[data-view="4"]{grid-template-columns:1fr}
}

/* v2.5.1 compact single-month public view */
.nfh2-public-window[data-view="1"]{
  max-width:620px;
  margin-inline:auto;
}
.nfh2-public-window[data-view="1"] .nfh2-public-month{
  padding:14px;
}
.nfh2-public-window[data-view="1"] .nfh2-public-month h3{
  font-size:16px!important;
  margin-bottom:10px!important;
}
.nfh2-public-window[data-view="1"] .nfh2-public-week,
.nfh2-public-window[data-view="1"] .nfh2-public-days{
  gap:4px;
}
.nfh2-public-window[data-view="1"] .nfh2-public-day,
.nfh2-public-window[data-view="1"] .nfh2-public-days>.empty{
  aspect-ratio:auto;
  min-height:46px;
}
.nfh2-public-window[data-view="1"] .nfh2-public-day b{
  font-size:10px;
}
@media(max-width:760px){
  .nfh2-public-window[data-view="1"]{
    max-width:100%;
  }
  .nfh2-public-window[data-view="1"] .nfh2-public-day,
  .nfh2-public-window[data-view="1"] .nfh2-public-days>.empty{
    min-height:40px;
  }
}
