:root{--fh-page:#f6f8fb;--fh-surface:#fff;--fh-surface-subtle:#eef3f7;--fh-surface-elevated:#fff;--fh-border-subtle:#e4eaf0;--fh-border:#d3dde7;--fh-border-strong:#aab8c8;--fh-text-primary:#17212f;--fh-text-secondary:#536274;--fh-text-muted:#748195;--fh-text-inverse:#f7fbff;--fh-nav-bg:#0d213b;--fh-nav-bg-strong:#07172b;--fh-nav-surface:#132b49;--fh-nav-text:#f3f7fc;--fh-nav-text-muted:#bfd0e3;--fh-nav-active:#ffffff26;--fh-nav-hover:#ffffff1a;--fh-primary:#2f6fbd;--fh-primary-hover:#245c9f;--fh-accent:#2f7f7a;--fh-accent-subtle:#e4f2f1;--fh-success-bg:#e8f6ef;--fh-success-border:#9bd4b5;--fh-success-text:#1f6847;--fh-warning-bg:#fff3da;--fh-warning-border:#e8c16d;--fh-warning-text:#8a5a10;--fh-danger-bg:#fdeceb;--fh-danger-border:#eca7a3;--fh-danger-text:#a33b35;--fh-info-bg:#e7f0fb;--fh-info-border:#a7c6ec;--fh-info-text:#285b92;--fh-focus:#2f6fbd;--fh-disabled:#d8e0e9;--fh-overlay:#10233d70;--fh-space-1:4px;--fh-space-2:8px;--fh-space-3:12px;--fh-space-4:16px;--fh-space-5:24px;--fh-space-6:32px;--fh-space-7:48px;--fh-radius-sm:6px;--fh-radius-md:8px;--fh-radius-lg:12px;--fh-shadow-sm:0 1px 2px #10233d0f;--fh-shadow-md:0 16px 42px #10233d14;--fh-font-page-title:clamp(1.35rem, 2vw, 1.9rem);--fh-font-section-title:1.15rem;--fh-font-body:1rem;--fh-font-small:.88rem;--fh-font-caption:.76rem;--fh-person-1:#2f6fbd;--fh-person-2:#2f7f7a;--fh-person-3:#8f6ab7;--fh-person-4:#b76552;--fh-person-5:#c28d2d;--fh-person-6:#517a4c;--background:var(--fh-page);--surface:var(--fh-surface);--surface-muted:var(--fh-surface-subtle);--text:var(--fh-text-primary);--text-muted:var(--fh-text-muted);--muted:var(--fh-text-muted);--border:var(--fh-border);--accent:var(--fh-primary);--accent-soft:var(--fh-accent-subtle);--success:var(--fh-success-text);--warning:var(--fh-warning-text);--danger:var(--fh-danger-text);--focus:var(--fh-focus);--info:var(--fh-info-text);--shadow:var(--fh-shadow-md)}*{box-sizing:border-box}html{background:var(--background);min-width:320px;overflow-x:hidden}body{min-height:100vh;color:var(--text);background:var(--background);margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;overflow-x:hidden}a,button,button,input{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.68}:focus-visible{outline:3px solid var(--fh-focus);outline-offset:3px}@media (prefers-reduced-motion:no-preference){a,button,input,select,textarea,summary{transition:background-color .16s,border-color .16s,color .16s,box-shadow .16s}}.login-page{place-items:center;min-height:100vh;padding:clamp(20px,5vw,64px);display:grid}.login-panel{border:1px solid var(--border);background:var(--surface);width:min(100%,460px);box-shadow:var(--shadow);border-radius:8px;gap:28px;padding:clamp(24px,5vw,44px);display:grid}.login-panel h1{letter-spacing:0;margin:0;font-size:clamp(2rem,4vw,3.4rem);line-height:1.06}.login-copy,.system-note{color:var(--muted);margin:12px 0 0;line-height:1.55}.system-note{border-left:4px solid var(--warning);background:var(--surface-muted);padding:12px 14px}.login-form{gap:18px;display:grid}.field-group{gap:8px;display:grid}.field-group label{font-weight:600}.field-group input{border:1px solid var(--border);background:var(--surface);width:100%;min-height:46px;color:var(--text);border-radius:8px;padding:10px 12px}.password-row{grid-template-columns:minmax(0,1fr) auto;gap:8px;display:grid}.primary-button,.secondary-button{border-radius:var(--fh-radius-md);min-height:42px;padding:9px 14px;font-weight:600}.primary-button{border:1px solid var(--fh-primary);background:var(--fh-primary);color:var(--surface)}.primary-button:hover{background:var(--fh-primary-hover)}.secondary-button{border:1px solid var(--border);background:var(--surface);color:var(--text)}.form-error{color:var(--danger);background:#b0443e14;border:1px solid #b0443e40;border-radius:8px;margin:0;padding:10px 12px;line-height:1.45}.form-success{color:var(--success);background:#287b5514;border:1px solid #287b5540;border-radius:8px;margin:0;padding:10px 12px;line-height:1.45}.app-shell{grid-template-columns:minmax(264px,304px) minmax(0,1fr);min-height:100vh;padding-bottom:0;display:grid}.sidebar{gap:var(--fh-space-7);background-color:var(--fh-nav-bg);background:linear-gradient(180deg, var(--fh-nav-bg), var(--fh-nav-bg-strong));height:100vh;min-height:100vh;color:var(--fh-nav-text);border-right:1px solid #ffffff14;flex-direction:column;padding:28px 22px;display:flex;position:sticky;top:0}.wordmark{color:var(--fh-nav-text);align-items:center;gap:14px;font-size:1.1rem;font-weight:600;text-decoration:none;display:flex}.wordmark-mark{background:var(--fh-nav-surface);width:38px;height:38px;color:var(--fh-text-inverse);letter-spacing:0;border-radius:8px;place-items:center;font-size:.8rem;display:inline-grid;box-shadow:inset 0 0 0 1px #ffffff29}.login-panel .wordmark-mark{background:var(--fh-primary)}.nav-preview{justify-content:space-between;gap:var(--fh-space-6);flex-direction:column;flex:1;min-height:0;display:flex}.nav-section{gap:8px;display:grid}.nav-section-group{gap:var(--fh-space-2);display:grid}.nav-section-label{color:var(--fh-nav-text-muted);font-size:var(--fh-font-caption);margin:0;padding:0 12px;font-weight:600}.nav-item{min-width:0;min-height:44px;color:var(--fh-nav-text-muted);border-radius:8px;justify-content:space-between;align-items:center;gap:10px;padding:11px 12px;font-size:.96rem;font-weight:500;text-decoration:none;display:flex}.nav-item-main{align-items:center;gap:var(--fh-space-3);min-width:0;display:flex}.nav-item-main span:last-child{overflow-wrap:anywhere;min-width:0}.nav-item[aria-disabled=true]{cursor:not-allowed}.nav-item:hover{background:var(--fh-nav-hover);color:var(--fh-nav-text)}.nav-item.is-active{background:var(--fh-nav-active);color:var(--fh-nav-text);box-shadow:inset 3px 0 0 color-mix(in srgb, var(--fh-primary) 72%, white), inset 0 0 0 1px #ffffff14;font-weight:600}.nav-icon,.mobile-nav-icon{border-radius:var(--fh-radius-sm);color:currentColor;background:#ffffff1c;flex:none;place-items:center;width:28px;height:28px;font-size:.72rem;font-weight:600;display:inline-grid}.nav-item:hover .nav-icon,.nav-item.is-active .nav-icon{color:var(--fh-nav-text);background:#ffffff29}.nav-state{color:var(--fh-nav-text-muted);white-space:nowrap;border:1px solid #ffffff24;border-radius:999px;padding:2px 7px;font-size:.72rem}.workspace{flex-direction:column;min-width:0;display:flex}.topbar{z-index:8;border-bottom:1px solid var(--fh-border-subtle);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:#f6f8fbf0;justify-content:space-between;align-items:center;gap:24px;padding:18px clamp(20px,4vw,48px);display:flex;position:sticky;top:0}.topbar-context{gap:2px;min-width:0;display:grid}.topbar-family-brand{min-width:0;max-width:100%;color:var(--fh-text-secondary);font-size:var(--fh-font-small);align-items:center;gap:8px;font-weight:650;display:inline-flex}.topbar-family-brand img{border-radius:6px;flex:none;width:24px;height:24px}.topbar-family-brand span{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.topbar-actions{justify-content:flex-end;align-items:center;gap:12px;display:flex}.topbar-clock{color:var(--fh-text-secondary);font-variant-numeric:tabular-nums;font-size:var(--fh-font-small);white-space:nowrap;font-weight:650}.topbar h1,.intro h2,.section-heading h2{letter-spacing:0;margin:0}.topbar h1{font-size:var(--fh-font-page-title);font-weight:600}.topbar-note{color:var(--muted);margin:0;font-size:.95rem}.user-menu{color:var(--text);justify-content:flex-end;align-items:center;gap:12px;font-weight:600;display:flex;position:relative}.user-menu-trigger{border:1px solid var(--border);background:var(--surface);min-width:0;color:var(--text);border-radius:8px;align-items:center;gap:10px;padding:8px 10px;display:flex}.avatar-initials{background:color-mix(in srgb, var(--fh-person-1) 14%, white);width:36px;height:36px;color:var(--fh-person-1);border-radius:50%;flex:none;place-items:center;font-size:.82rem;font-weight:600;display:inline-grid}.user-menu-text{text-align:left;min-width:0;display:grid}.user-menu-text span{overflow-wrap:anywhere}.user-menu-role{color:var(--muted);font-size:.78rem;font-weight:500}.user-menu-popover{z-index:10;border:1px solid var(--border);background:var(--surface);min-width:190px;box-shadow:var(--shadow);border-radius:8px;gap:8px;padding:10px;display:grid;position:absolute;top:calc(100% + 8px);right:0}.user-menu-popover a{color:var(--text);border-radius:8px;padding:9px 10px;text-decoration:none}.user-menu-popover a:hover{background:var(--surface-muted)}.menu-meta,.family-context-name,.family-context-note,.context-line{color:var(--muted);margin:0;line-height:1.5}.menu-meta{font-size:.82rem}.family-switcher{gap:6px;margin-top:8px;display:grid}.family-switcher label{color:var(--muted);font-size:.78rem;font-weight:600}.family-switcher select{border:1px solid var(--border);background:var(--surface);max-width:min(100%,320px);min-height:38px;color:var(--text);border-radius:8px;padding:7px 10px}.content{gap:var(--fh-space-5);min-width:0;padding:clamp(20px,4vw,48px);display:grid}.dashboard-hero{border:1px solid var(--fh-border-subtle);border-radius:var(--fh-radius-lg);background:var(--fh-surface-elevated);box-shadow:var(--fh-shadow-sm);grid-template-columns:minmax(0,1fr) minmax(220px,300px);align-items:stretch;gap:20px;padding:clamp(20px,4vw,36px);display:grid}.dashboard-hero h2{letter-spacing:0;margin:0;font-size:clamp(1.9rem,4vw,3rem);font-weight:600;line-height:1.1}.dashboard-hero p{max-width:660px;color:var(--text-muted);margin:12px 0 0;line-height:1.55}.dashboard-context-card{border:1px solid var(--fh-border-subtle);border-radius:var(--fh-radius-md);background:var(--fh-surface-subtle);align-content:center;gap:8px;padding:18px;display:grid}.dashboard-context-card span{color:var(--text-muted);font-size:.78rem;font-weight:600}.dashboard-context-card strong{overflow-wrap:anywhere;font-size:1.15rem}.dashboard-grid{gap:var(--fh-space-4);grid-template-columns:repeat(4,minmax(0,1fr));display:grid}.dashboard-widget{border:1px solid var(--fh-border-subtle);border-radius:var(--fh-radius-md);background:var(--fh-surface);align-content:start;gap:16px;min-width:0;min-height:190px;padding:18px;display:grid}.dashboard-widget-info{border-top:4px solid var(--fh-info-border)}.dashboard-widget-warning{border-top:4px solid var(--fh-warning-border)}.dashboard-widget-critical{border-top:4px solid var(--fh-danger-border)}.dashboard-widget-header{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.dashboard-widget h3{letter-spacing:0;margin:0;font-size:1rem;font-weight:600}.dashboard-widget-body{min-width:0}.family-dashboard{gap:var(--fh-space-4);min-width:0;display:grid}.family-dashboard-main{gap:var(--fh-space-4);grid-template-columns:minmax(0,2fr) minmax(240px,1fr);align-items:start;display:grid}.dashboard-panel,.dashboard-module-card{border:1px solid var(--fh-border-subtle);border-radius:var(--fh-radius-md);background:var(--fh-surface);min-width:0}.dashboard-panel{align-content:start;gap:var(--fh-space-3);padding:var(--fh-space-4);display:grid}.dashboard-panel-header{justify-content:space-between;align-items:baseline;gap:var(--fh-space-3);display:flex}.dashboard-panel-header h3{letter-spacing:0;margin:0;font-size:1rem;font-weight:600}.dashboard-panel-header span,.dashboard-empty{color:var(--fh-text-muted);font-size:var(--fh-font-small)}.dashboard-empty{margin:0}.dashboard-day-list,.dashboard-day{gap:var(--fh-space-3);min-width:0;display:grid}.dashboard-day-heading{justify-content:space-between;align-items:baseline;gap:var(--fh-space-3);color:var(--fh-text-secondary);display:flex}.dashboard-day-heading strong{color:var(--fh-text-primary)}.dashboard-day-heading span{font-size:var(--fh-font-small)}.dashboard-event-list{gap:var(--fh-space-2);min-width:0;margin:0;padding:0;list-style:none;display:grid}.dashboard-event{gap:var(--fh-space-3);border:1px solid var(--fh-border-subtle);border-radius:var(--fh-radius-md);background:var(--fh-surface-subtle);grid-template-columns:10px minmax(0,1fr);min-width:0;padding:10px 12px;display:grid}.dashboard-event-marker{background:var(--fh-accent);border-radius:999px;width:10px;min-height:100%}.dashboard-event-main{gap:2px;min-width:0;display:grid}.dashboard-event-main strong,.dashboard-event-meta{overflow-wrap:anywhere}.dashboard-event-time,.dashboard-event-meta{color:var(--fh-text-muted);font-size:var(--fh-font-small)}.dashboard-event-time{font-weight:600}.dashboard-side-stack,.dashboard-module-row{align-content:start;gap:var(--fh-space-3);min-width:0;display:grid}.dashboard-module-row{grid-template-columns:repeat(3,minmax(0,1fr))}.dashboard-module-card{align-content:start;gap:var(--fh-space-2);color:var(--fh-text-primary);padding:14px var(--fh-space-4);text-decoration:none;display:grid}.dashboard-module-card:hover{border-color:var(--fh-border);background:var(--fh-surface-subtle)}.dashboard-module-card span{color:var(--fh-text-primary);font-size:1rem;font-weight:600}.dashboard-module-card strong{color:var(--fh-text-muted);font-size:var(--fh-font-small);font-weight:500}.status-badge{white-space:nowrap;border:1px solid;border-radius:999px;align-items:center;gap:6px;padding:4px 8px;font-size:.72rem;font-weight:600;display:inline-flex}.status-badge-dot{background:currentColor;border-radius:50%;width:7px;height:7px}.status-badge-default{color:var(--fh-success-text)}.status-badge-info{color:var(--fh-info-text)}.status-badge-warning{color:var(--fh-warning-text)}.status-badge-critical{color:var(--fh-danger-text)}.empty-state,.state-panel{color:var(--text-muted);gap:6px;line-height:1.5;display:grid}.empty-state p,.state-panel p{margin:0}.empty-state-title{color:var(--text);font-weight:600}.state-panel{border:1px solid var(--border);background:var(--surface-muted);border-radius:8px;grid-template-columns:auto minmax(0,1fr);align-items:center;padding:12px}.state-panel-error{color:var(--danger);border-color:#b0443e59}.state-indicator{background:currentColor;border-radius:50%;width:10px;height:10px}.quick-create{display:flex;position:relative}.quick-create-trigger{border:1px solid var(--fh-primary);border-radius:var(--fh-radius-md);background:var(--fh-primary);min-height:42px;color:var(--surface);align-items:center;gap:8px;padding:9px 14px;font-weight:600;display:inline-flex}.quick-create-trigger:hover{background:var(--fh-primary-hover)}.quick-create-trigger span:first-child{font-size:1.2rem;line-height:1}.quick-create-menu{z-index:12;border:1px solid var(--border);background:var(--surface);width:min(280px,86vw);box-shadow:var(--shadow);border-radius:8px;gap:8px;padding:10px;display:grid;position:absolute;top:calc(100% + 8px);right:0}.quick-create-note{color:var(--text-muted);margin:0;font-size:.82rem;line-height:1.45}.quick-create-item{border:1px solid var(--border);background:var(--surface-muted);min-height:42px;color:var(--text-muted);text-align:left;border-radius:8px;justify-content:space-between;align-items:center;gap:10px;padding:9px 10px;display:flex}.quick-create-item span:last-child{white-space:nowrap;font-size:.75rem;font-weight:600}.module-placeholder{border:1px solid var(--fh-border-subtle);border-radius:var(--fh-radius-md);background:var(--surface);gap:24px;max-width:820px;padding:clamp(22px,4vw,42px);display:grid}.module-placeholder h2{letter-spacing:0;margin:16px 0 0;font-size:clamp(1.8rem,4vw,3rem);font-weight:600;line-height:1.08}.module-placeholder p{color:var(--text-muted);line-height:1.55}.mobile-navigation{display:none}.intro{border:1px solid var(--border);background:var(--surface);min-width:0;max-width:920px;min-height:230px;box-shadow:var(--shadow);border-radius:8px;align-items:end;padding:clamp(24px,5vw,52px);display:grid}.intro h2{max-width:760px;font-size:clamp(2rem,5vw,4.8rem);line-height:1.03}.intro-copy{max-width:640px;color:var(--muted);overflow-wrap:anywhere;margin:18px 0 0;font-size:1.05rem;line-height:1.6}.eyebrow{color:var(--fh-primary);letter-spacing:0;margin:0 0 8px;font-size:.78rem;font-weight:600}.status-section{gap:16px;min-width:0;display:grid}.status-section-quiet{opacity:.86}.section-heading h2{font-size:var(--fh-font-section-title);font-weight:600}.status-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;display:grid}.status-card{border:1px solid var(--border);background:var(--surface);border-radius:8px;gap:14px;min-width:0;padding:20px;display:grid}.status-card-header{justify-content:space-between;align-items:center;gap:14px;display:flex}.status-card h3{margin:0;font-size:1.05rem;font-weight:600}.status-pill{white-space:nowrap;border:1px solid;border-radius:999px;padding:4px 10px;font-size:.78rem;font-weight:600}.status-pill.is-online{color:var(--success)}.status-pill.is-offline{color:var(--danger)}.status-pill.is-unknown{color:var(--warning)}.status-detail{color:var(--muted);overflow-wrap:anywhere;margin:0;line-height:1.5}.profile-section{gap:22px;max-width:760px;display:grid}.profile-facts{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:0;display:grid}.profile-facts div{border:1px solid var(--border);background:var(--surface);border-radius:8px;gap:4px;padding:14px;display:grid}.profile-facts dt{color:var(--muted);font-size:.78rem;font-weight:600}.profile-facts dd{overflow-wrap:anywhere;margin:0;font-weight:600}.profile-form{gap:18px;max-width:520px;display:grid}@media (max-width:900px){.app-shell{grid-template-columns:92px minmax(0,1fr)}.sidebar{width:92px;padding:16px 10px}.wordmark{justify-content:center}.wordmark span:last-child,.nav-state,.nav-section-label,.nav-item-main span:last-child{clip:rect(0, 0, 0, 0);width:1px;height:1px;position:absolute;overflow:hidden}.nav-item{justify-content:center;min-height:48px}.nav-item-main{justify-content:center}.dashboard-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.family-dashboard-main{grid-template-columns:minmax(0,1fr)}.dashboard-hero{grid-template-columns:1fr}}@media (max-width:620px){.app-shell{padding-bottom:calc(72px + env(safe-area-inset-bottom,0px));grid-template-columns:1fr}.sidebar{display:none}.topbar{align-items:flex-start;gap:var(--fh-space-3);flex-flow:wrap;padding:16px;position:static}.topbar-context{flex:190px}.topbar-actions{flex-direction:row;flex:0 auto;align-items:flex-start;width:auto}.topbar-clock{text-align:right;order:-1;width:100%}.quick-create,.quick-create-trigger{width:auto}.quick-create-trigger{justify-content:center;min-height:40px;padding:8px 12px}.quick-create-menu{width:100%;left:0;right:auto}.user-menu{display:none}.dashboard-module-card{gap:6px;min-height:58px;padding:12px 14px}.password-row,.status-grid,.dashboard-grid{grid-template-columns:1fr}.dashboard-module-row{grid-template-columns:minmax(0,1fr)}.content{gap:var(--fh-space-4);padding:18px 16px 22px}.dashboard-hero{grid-template-columns:1fr;padding:18px}.dashboard-hero h2{font-size:1.8rem}.login-panel .wordmark-mark{background:var(--fh-primary)}.profile-facts{grid-template-columns:1fr}.intro{min-height:210px;padding:24px}.intro h2{overflow-wrap:anywhere;max-width:18ch;font-size:1.8rem;line-height:1.12}.intro-copy{max-width:28ch;font-size:1rem}.mobile-navigation{z-index:20;border-top:1px solid var(--fh-border-subtle);background:color-mix(in srgb, var(--fh-surface) 96%, transparent);padding:8px max(8px, env(safe-area-inset-right,0px)) calc(8px + env(safe-area-inset-bottom,0px)) max(8px, env(safe-area-inset-left,0px));-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);grid-template-columns:repeat(5,minmax(0,1fr));gap:4px;display:grid;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -12px 28px #10233d14}.mobile-nav-item,.mobile-more summary{border-radius:var(--fh-radius-md);min-height:54px;color:var(--fh-text-muted);place-items:center;gap:2px;font-size:.72rem;font-weight:600;text-decoration:none;display:grid}.mobile-nav-icon{background:var(--fh-surface-subtle);width:24px;height:24px}.mobile-nav-item.is-active,.mobile-more.is-active summary{background:var(--fh-accent-subtle);color:var(--fh-text-primary);box-shadow:inset 0 -3px 0 var(--fh-primary)}.mobile-more{position:relative}.mobile-more summary{cursor:pointer;list-style:none}.mobile-more summary::-webkit-details-marker{display:none}.mobile-more-menu{border:1px solid var(--fh-border);border-radius:var(--fh-radius-md);background:var(--fh-surface);min-width:200px;box-shadow:var(--fh-shadow-md);gap:4px;padding:8px;display:grid;position:absolute;bottom:calc(100% + 10px);right:0}.mobile-more-menu a{border-radius:var(--fh-radius-sm);min-height:42px;color:var(--fh-text-primary);align-items:center;gap:10px;padding:8px 10px;text-decoration:none;display:flex}.mobile-more-menu .nav-icon,.mobile-more-menu a:hover{background:var(--fh-surface-subtle)}.nextjs-toast,[data-nextjs-toast],[data-nextjs-dev-tools-button]{right:12px!important;bottom:calc(86px + env(safe-area-inset-bottom,0px))!important;left:auto!important}}.calendar-page{gap:18px;min-width:0;display:grid}.calendar-toolbar,.calendar-layout,.calendar-surface,.calendar-filter-panel,.calendar-dialog,.calendar-form,.calendar-detail,.calendar-agenda{min-width:0}.calendar-toolbar{grid-template-columns:auto minmax(180px,1fr) auto auto auto 40px;align-items:center;gap:12px;display:grid}.calendar-period-controls,.calendar-view-tabs,.calendar-dialog-actions,.calendar-participation-actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.calendar-period-controls button,.calendar-view-tabs button,.calendar-dialog-header button,.calendar-dialog-actions button,.calendar-participation-actions button,.calendar-empty button,.calendar-add-inline,.calendar-create-trigger,.calendar-cell-create{border:1px solid var(--border);background:var(--surface);min-height:38px;color:var(--text);border-radius:8px;padding:8px 10px;font-weight:750}.calendar-view-tabs button.is-active,.calendar-participation-actions button.is-active{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}.calendar-sync-controls{justify-items:end;gap:2px;min-width:0;display:grid}.calendar-sync-trigger{border:1px solid var(--border);background:var(--surface);min-height:38px;color:var(--text);border-radius:8px;padding:8px 10px;font-weight:750}.calendar-sync-trigger:disabled{cursor:progress;opacity:.68}.calendar-sync-status{max-width:180px;color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:.72rem;overflow:hidden}.calendar-title-block{gap:2px;display:grid}.calendar-title-block p,.calendar-title-block h2{margin:0}.calendar-title-block p{color:var(--muted);text-transform:uppercase;font-size:.78rem;font-weight:800}.calendar-title-block h2{letter-spacing:0;font-size:1.35rem}.calendar-layout{grid-template-columns:minmax(190px,250px) minmax(0,1fr);align-items:start;gap:16px;display:grid}.calendar-filter-panel{border:1px solid var(--border);background:var(--surface);border-radius:8px;gap:14px;padding:14px;display:grid}.calendar-filter-group{border:0;gap:8px;margin:0;padding:0;display:grid}.calendar-filter-group legend{margin-bottom:4px;font-weight:850}.calendar-filter-group label,.calendar-checkbox,.calendar-form-participants label{min-width:0;color:var(--text-muted);align-items:center;gap:8px;line-height:1.35;display:flex}.calendar-filter-group span{overflow-wrap:anywhere}.calendar-surface{gap:12px;display:grid}.calendar-month-grid{border:1px solid var(--border);background:var(--surface);border-radius:8px;grid-template-columns:repeat(7,minmax(0,1fr));display:grid;overflow:hidden}.calendar-day-cell{border-right:1px solid var(--border);border-bottom:1px solid var(--border);align-content:start;gap:6px;min-height:128px;padding:8px;display:grid;position:relative}.calendar-day-cell.is-muted{background:var(--surface-muted);color:var(--text-muted)}.calendar-day-number{width:34px;min-height:32px;color:inherit;background:0 0;border:0;border-radius:8px;font-weight:850}.calendar-day-events,.calendar-column-events,.agenda-items{gap:6px;display:grid}.calendar-event,.calendar-busy{border:1px solid #2f6f733d;border-left:4px solid var(--calendar-event-color,var(--accent));background:var(--accent-soft);min-width:0;color:var(--text);text-align:left;border-radius:8px;gap:2px;padding:6px 8px;display:grid}.calendar-event-mobile-label,.calendar-mobile-day-list{display:none}.calendar-event-time,.calendar-event-meta,.calendar-event-extra,.calendar-busy span{color:var(--muted);font-size:.74rem;font-weight:500}.calendar-event-title,.calendar-busy strong{overflow-wrap:anywhere;min-width:0;font-weight:600}.calendar-event-extra{overflow-wrap:anywhere;line-height:1.35;display:block}.calendar-event.is-cancelled .calendar-event-title,.is-cancelled-text{text-decoration:line-through}.calendar-event.is-cancelled:after{content:"Abgesagt";color:var(--danger);font-size:.72rem;font-weight:850}.calendar-busy{border-left-color:var(--warning);background:var(--surface-muted)}.calendar-create-trigger{border-color:var(--fh-primary);background:var(--fh-primary);width:40px;min-height:40px;color:var(--fh-nav-text);justify-self:end;place-items:center;padding:0;font-size:1.35rem;line-height:1;display:inline-grid}.calendar-create-trigger:hover{background:var(--fh-primary-hover)}.calendar-day-cell-header{justify-content:space-between;align-items:center;gap:4px;min-width:0;display:flex}.calendar-cell-create{width:28px;min-height:28px;color:var(--fh-text-muted);background:0 0;border-color:#0000;flex:0 0 28px;padding:0;font-size:1rem;line-height:1}.calendar-cell-create:hover,.calendar-cell-create:focus-visible{border-color:var(--fh-border);background:var(--fh-surface-subtle);color:var(--fh-primary)}.calendar-week-grid{grid-template-columns:repeat(7,minmax(0,1fr));gap:10px;display:grid}.calendar-week-grid[data-view=day]{grid-template-columns:minmax(0,1fr)}.calendar-day-column,.agenda-day,.calendar-empty,.calendar-skeleton{border:1px solid var(--border);background:var(--surface);border-radius:8px;gap:10px;padding:12px;display:grid}.calendar-column-heading{color:var(--text);text-align:left;background:0 0;border:0;font-weight:850}.calendar-add-inline{width:100%}.calendar-agenda{gap:12px}.agenda-day h3{letter-spacing:0;margin:0;font-size:1rem}.calendar-empty,.calendar-skeleton{color:var(--text-muted)}.calendar-dialog-backdrop{z-index:30;background:#1c232059;place-items:center;padding:14px;display:grid;position:fixed;inset:0;overflow:auto}.calendar-dialog{border:1px solid var(--border);background:var(--surface);width:min(900px,100%);max-height:calc(100vh - 28px);box-shadow:var(--shadow);border-radius:8px;gap:12px;padding:clamp(14px,2.2vw,20px);display:grid;overflow:auto}.calendar-dialog-header{justify-content:space-between;align-items:center;gap:12px;display:flex}.calendar-dialog-header h2{letter-spacing:0;margin:0;font-size:1.16rem}.calendar-form{gap:12px;display:grid}.calendar-empty-setup{border:1px solid var(--border);background:var(--surface-muted);border-radius:8px;justify-items:start;gap:6px;padding:12px;display:grid}.calendar-empty-setup p,.calendar-setup-form p{color:var(--text-muted);margin:0}.calendar-setup-backdrop{z-index:40}.calendar-setup-dialog{width:min(480px,100%)}.calendar-setup-form{gap:14px;display:grid}.calendar-setup-form input{border:1px solid var(--border);background:var(--surface);width:100%;min-height:42px;color:var(--text);border-radius:8px;padding:8px 10px}.calendar-setup-actions{justify-content:flex-end;gap:8px;display:flex}.calendar-form-section,.calendar-detail-section{border:1px solid var(--border);background:var(--surface);border-radius:8px;gap:12px;min-width:0;padding:12px;display:grid}.calendar-form-section.is-muted{background:var(--surface-muted)}.calendar-advanced-options{align-content:start}.calendar-advanced-options summary{cursor:pointer;min-height:38px;color:var(--text);border-radius:8px;justify-content:space-between;align-items:center;gap:10px;font-size:.84rem;font-weight:850;list-style:none;display:flex}.calendar-advanced-options summary::-webkit-details-marker{display:none}.calendar-advanced-options summary:after{content:"+";border:1px solid var(--border);background:var(--surface);width:24px;height:24px;color:var(--muted);border-radius:999px;flex:none;place-items:center;font-weight:850;display:inline-grid}.calendar-advanced-options[open] summary:after{content:"-"}.calendar-advanced-options-body{gap:12px;min-width:0;padding-top:10px;display:grid}.calendar-form-section h3,.calendar-detail-section h3{letter-spacing:0;margin:0;font-size:.84rem}.calendar-form-section-primary{background:var(--accent-soft);border-color:#2f6f7347}.calendar-field,.calendar-form-participants{border:0;gap:6px;min-width:0;margin:0;padding:0;font-weight:750;display:grid}.calendar-time-grid,.calendar-assignment-grid,.calendar-details-grid,.calendar-options-grid,.calendar-recurrence-end{align-items:end;gap:9px;min-width:0;display:grid}.calendar-time-grid{grid-template-columns:minmax(148px,1fr) minmax(104px,.7fr) minmax(148px,1fr) minmax(104px,.7fr)}.calendar-assignment-grid{grid-template-columns:minmax(220px,1.25fr) minmax(160px,1fr) minmax(160px,1fr)}.calendar-details-grid{grid-template-columns:minmax(220px,1fr) minmax(92px,140px)}.calendar-options-grid{grid-template-columns:minmax(160px,240px)}.calendar-recurrence-end{border-left:4px solid var(--accent-soft);grid-template-columns:minmax(160px,220px) minmax(132px,180px) minmax(92px,140px);align-items:end;padding-left:10px}.calendar-field.is-full,.calendar-reminder-editor,.calendar-form-participants,.calendar-scope-group,.calendar-form-actions{grid-column:1/-1}.calendar-field.is-travel,.calendar-field.is-time,.calendar-field.is-count{max-width:150px}.calendar-field.is-all-day-placeholder{pointer-events:none;visibility:hidden}.calendar-checkbox,.calendar-form-participants label,.calendar-participant-list label,.calendar-scope-group label{width:fit-content;min-width:0;color:var(--text-muted);align-items:center;gap:8px;line-height:1.35;display:flex}.calendar-checkbox input,.calendar-form-participants input,.calendar-participant-list input,.calendar-scope-group input{flex:none;width:auto;min-height:auto;margin:0}.calendar-time-toggle,.calendar-recurrence-field{grid-column:span 2}.calendar-time-toggle{cursor:pointer;grid-column:1/span 2;gap:9px;min-height:44px}.calendar-time-toggle input{width:22px;height:22px}.calendar-recurrence-field{grid-column:3/span 2}.calendar-participant-list,.calendar-scope-group div{flex-wrap:wrap;gap:8px 14px;min-width:0;display:flex}.calendar-scope-group{background:#a56a1414;border:1px solid #a56a1452;border-radius:8px;gap:10px;margin:0;padding:14px;display:grid}.calendar-scope-group legend,.calendar-form-participants legend{font-weight:850}.calendar-reminder-editor{border:0;gap:8px;margin:0;padding:0;display:grid}.calendar-reminder-editor legend{font-weight:850}.calendar-reminder-editor p{color:var(--muted);margin:0;font-size:.84rem;line-height:1.35}.calendar-reminder-chips,.calendar-reminder-add{flex-wrap:wrap;align-items:center;gap:8px;min-width:0;display:flex}.calendar-reminder-chips button,.calendar-reminder-chips span,.calendar-reminder-add button{border:1px solid var(--border);background:var(--surface-muted);min-height:32px;color:var(--text);border-radius:8px;padding:6px 9px;font-weight:750}.calendar-reminder-chips span{color:var(--muted)}.calendar-reminder-add select,.calendar-reminder-add input{width:auto;max-width:100%}.calendar-reminder-add input{flex:0 120px}.calendar-form input,.calendar-form select,.calendar-form textarea{border:1px solid var(--border);background:var(--surface);width:100%;min-height:38px;color:var(--text);border-radius:8px;padding:7px 10px}.calendar-form textarea{resize:vertical;min-height:92px}.calendar-dialog-actions{grid-column:1/-1}.calendar-form-actions{border-top:1px solid var(--border);background:var(--surface);justify-content:flex-end;padding-top:10px;position:sticky;bottom:-1px}.calendar-dialog-actions-split{justify-content:space-between}.calendar-danger-actions{flex-wrap:wrap;gap:8px;display:flex}.calendar-detail-hero{background:var(--accent-soft);border:1px solid #2f6f7347;border-radius:8px;gap:4px;padding:16px;display:grid}.calendar-detail-hero p,.calendar-detail-hero h3{margin:0}.calendar-detail-hero p,.calendar-detail-hero span{color:var(--muted);font-size:.82rem;font-weight:800}.calendar-detail-hero h3{letter-spacing:0;font-size:1.25rem}.calendar-detail dl{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:0;display:grid}.calendar-detail-item.is-wide{grid-column:1/-1}.calendar-detail dt{color:var(--muted);text-transform:uppercase;font-size:.76rem;font-weight:850}.calendar-detail dd{overflow-wrap:anywhere;margin:3px 0 0}.calendar-toolbar{border:1px solid var(--fh-border-subtle);border-radius:var(--fh-radius-md);background:var(--fh-surface);grid-template-columns:auto minmax(180px,1fr) auto auto auto 40px;gap:10px;padding:7px 10px}.calendar-period-controls button{min-width:40px}.calendar-period-controls button[aria-label]{font-size:1.12rem}.calendar-title-block h2{font-size:1.22rem}.calendar-view-tabs{border:1px solid var(--fh-border);border-radius:var(--fh-radius-md);flex-wrap:nowrap;gap:0;display:inline-flex;overflow:hidden}.calendar-view-tabs button{border:0;border-right:1px solid var(--fh-border-subtle);border-radius:0}.calendar-view-tabs button:last-child{border-right:0}.calendar-view-tabs button.is-active{box-shadow:inset 0 -3px 0 var(--fh-primary)}.calendar-filter-popover{justify-self:end;position:relative}.calendar-filter-trigger{border:1px solid var(--fh-border);border-radius:var(--fh-radius-md);background:var(--fh-surface);min-height:38px;color:var(--fh-text-primary);padding:8px 12px;font-weight:750}.calendar-filter-trigger.is-active{border-color:var(--fh-primary);background:var(--fh-accent-soft)}.calendar-filter-panel{z-index:18;width:min(420px,100vw - 32px);max-height:min(680px,100vh - 180px);box-shadow:var(--fh-shadow-md);position:absolute;top:calc(100% + 8px);right:0;overflow:auto}.calendar-filter-panel-header{justify-content:space-between;align-items:center;gap:var(--fh-space-3);display:flex}.calendar-filter-panel-header button{border:1px solid var(--fh-border);border-radius:var(--fh-radius-sm);background:var(--fh-surface-subtle);min-height:34px;color:var(--fh-text-primary);padding:6px 10px;font-weight:700}.calendar-layout{grid-template-columns:minmax(0,1fr);align-items:stretch}.calendar-layout.has-day-panel{grid-template-columns:minmax(0,1fr)}.calendar-layout.has-day-panel .calendar-day-panel{display:none}.calendar-month-grid{grid-template-rows:auto repeat(6,minmax(112px,1fr));grid-template-columns:48px repeat(7,minmax(0,1fr));align-items:stretch;display:grid}.calendar-weekday-spacer,.calendar-weekday-heading,.calendar-week-number{border-right:1px solid var(--fh-border-subtle);border-bottom:1px solid var(--fh-border-subtle);background:var(--fh-surface-subtle);color:var(--fh-text-muted);font-size:.76rem;font-weight:750}.calendar-weekday-heading,.calendar-week-number{place-items:center;min-height:34px;display:grid}.calendar-month-week{grid-column:1/-1;grid-template-columns:48px repeat(7,minmax(0,1fr));min-height:112px;display:grid}.calendar-week-number{text-align:center;align-content:start;padding-top:10px}.calendar-day-cell{cursor:pointer;min-height:112px}.calendar-day-cell.is-weekend{background:color-mix(in srgb, var(--fh-surface-subtle) 58%, var(--fh-surface))}.calendar-day-cell.is-selected{outline:2px solid color-mix(in srgb, var(--fh-primary) 38%, transparent);outline-offset:-2px}.calendar-day-cell.is-today .calendar-day-number{background:var(--fh-primary);color:var(--fh-nav-text)}.calendar-day-cell.is-today.is-selected .calendar-day-number{box-shadow:0 0 0 3px color-mix(in srgb, var(--fh-primary) 18%, transparent)}.calendar-more{border-radius:var(--fh-radius-sm);min-height:28px;color:var(--fh-primary);text-align:left;background:0 0;border:0;padding:2px 4px;font-size:.78rem;font-weight:750}.calendar-day-panel,.calendar-panel-open{border:1px solid var(--fh-border-subtle);border-radius:var(--fh-radius-md);background:var(--fh-surface)}.calendar-day-panel{align-content:start;gap:var(--fh-space-3);min-height:100%;padding:var(--fh-space-4);display:grid}.calendar-day-panel-header{justify-content:space-between;align-items:flex-start;gap:var(--fh-space-3);display:flex}.calendar-day-panel-header h3,.calendar-day-panel-header span,.calendar-panel-detail h3,.calendar-panel-detail p{margin:0}.calendar-day-panel-header span,.calendar-panel-detail p,.calendar-panel-event-list span,.calendar-panel-event-list small,.calendar-panel-empty{color:var(--fh-text-muted);font-size:var(--fh-font-small)}.calendar-panel-back,.calendar-panel-open{border:1px solid var(--fh-border);border-radius:var(--fh-radius-sm);background:var(--fh-surface-subtle);min-height:36px;color:var(--fh-text-primary);padding:7px 10px;font-weight:700}.calendar-panel-close{width:32px;min-height:32px;color:var(--fh-text-muted);background:0 0;border:1px solid #0000;border-radius:999px;flex:none;place-items:center;padding:0;font-size:1.2rem;font-weight:700;line-height:1;display:inline-grid}.calendar-panel-close:hover{border-color:var(--fh-border-subtle);background:var(--fh-surface-subtle);color:var(--fh-text-primary)}.calendar-panel-open{align-self:start}.calendar-panel-event-list{gap:var(--fh-space-2);margin:0;padding:0;list-style:none;display:grid}.calendar-panel-event-list button{border:1px solid var(--fh-border-subtle);border-left:4px solid var(--fh-primary);border-radius:var(--fh-radius-md);background:var(--fh-surface-subtle);width:100%;min-width:0;color:var(--fh-text-primary);text-align:left;gap:2px;padding:9px 10px;display:grid}.calendar-panel-event-list strong,.calendar-panel-event-list small{overflow-wrap:anywhere}.calendar-panel-detail{gap:var(--fh-space-4);display:grid}.calendar-panel-detail h3{color:var(--fh-text-primary);overflow-wrap:anywhere;font-size:1.18rem;font-weight:750;line-height:1.3}.calendar-panel-primary-meta,.calendar-panel-location{justify-items:start;gap:4px;display:grid}.calendar-panel-time,.calendar-panel-location strong{color:var(--fh-text-primary);font-size:.94rem;font-weight:700}.calendar-panel-meta,.calendar-panel-location-address,.calendar-panel-category,.calendar-panel-status{color:var(--fh-text-muted);font-size:var(--fh-font-small)}.calendar-panel-category,.calendar-panel-status{font-weight:700}.calendar-panel-detail-actions{padding-top:var(--fh-space-2);justify-content:flex-end;display:flex}.calendar-panel-detail-actions .primary-button{width:auto}@media (max-width:1100px){.calendar-toolbar{grid-template-columns:auto minmax(140px,1fr) auto auto 40px}.calendar-view-tabs{grid-area:2/1/auto/-1;justify-self:end}.calendar-filter-panel{grid-template-columns:repeat(3,minmax(0,1fr))}.calendar-week-grid{grid-template-columns:minmax(0,1fr)}}@media (max-width:820px){.calendar-time-grid,.calendar-assignment-grid,.calendar-details-grid,.calendar-recurrence-end{grid-template-columns:repeat(2,minmax(0,1fr))}.calendar-field.is-travel,.calendar-field.is-time,.calendar-field.is-count{max-width:none}}@media (min-width:701px){.calendar-month-grid{grid-template-rows:34px repeat(6,140px)}.calendar-month-week{height:140px;min-height:140px}.calendar-day-cell{gap:2px;height:140px;min-height:0;padding:4px 5px;overflow:hidden}.calendar-day-cell-header{min-height:24px}.calendar-day-number{border-radius:999px;width:26px;min-height:24px;padding:0;font-size:.78rem;font-weight:600}.calendar-cell-create{background:0 0;border:0;flex-basis:24px;width:24px;min-height:24px;padding:0;font-size:1rem}.calendar-day-events{align-content:start;gap:1px;min-width:0;display:grid}.calendar-event.is-compact{border:0;border-left:3px solid var(--accent);background:color-mix(in srgb, var(--accent-soft) 55%, transparent);text-align:left;border-radius:3px;align-items:center;gap:4px;width:100%;min-width:0;height:19px;min-height:19px;padding:0 3px;line-height:1;display:flex;overflow:hidden}.calendar-event.is-compact .calendar-event-time{color:var(--fh-text-muted);white-space:nowrap;flex:none;font-size:.72rem;font-weight:500;line-height:19px}.calendar-event.is-compact .calendar-event-title{min-width:0;color:var(--fh-text-primary);text-overflow:ellipsis;white-space:nowrap;flex:auto;font-size:.76rem;font-weight:500;line-height:19px;overflow:hidden}.calendar-event.is-compact.is-cancelled:after{display:none}.calendar-more{height:19px;min-height:19px;padding:0 3px;font-size:.7rem;font-weight:600;line-height:19px}}@media (max-width:700px){.calendar-toolbar{grid-template-columns:minmax(0,1fr) auto;gap:8px;padding:10px}.calendar-title-block{grid-area:1/1/auto/-1}.calendar-create-trigger{display:none}.calendar-period-controls{grid-area:2/1}.calendar-filter-popover{grid-area:2/2}.calendar-sync-controls{grid-area:3/1/auto/-1;justify-content:space-between;align-items:center;gap:8px;min-width:0;display:flex}.calendar-sync-trigger{flex:auto;min-width:0;padding-inline:10px}.calendar-sync-status{text-align:right;flex:0 auto;max-width:45%}.calendar-view-tabs{grid-area:4/1/auto/-1;justify-self:stretch}.calendar-title-block h2{font-size:1.05rem}.calendar-day-cell-header{gap:2px}.calendar-cell-create{flex-basis:26px;width:26px;min-height:26px}.calendar-period-controls,.calendar-view-tabs{align-items:stretch}.calendar-period-controls button,.calendar-view-tabs button,.calendar-toolbar .primary-button{flex:1 1 0;min-width:0;padding-inline:6px}.calendar-filter-trigger{min-width:0;padding-inline:10px}.calendar-filter-panel{grid-template-columns:minmax(0,1fr);width:auto;max-height:calc(100vh - 220px);position:fixed;top:116px;left:12px;right:12px}.calendar-filter-panel,.calendar-form,.calendar-time-grid,.calendar-assignment-grid,.calendar-details-grid,.calendar-options-grid,.calendar-recurrence-end,.calendar-detail dl{grid-template-columns:minmax(0,1fr)}.calendar-time-toggle,.calendar-recurrence-field{grid-column:1}.calendar-form-actions,.calendar-dialog-actions-split{flex-direction:column;align-items:stretch}.calendar-form-actions{padding-bottom:env(safe-area-inset-bottom,0px);position:static;bottom:auto}.calendar-form-actions .primary-button,.calendar-danger-actions,.calendar-danger-actions button{width:100%}.calendar-month-grid{border:1px solid var(--fh-border-subtle);border-radius:var(--fh-radius-md);background:var(--fh-surface);grid-template-rows:auto repeat(6,minmax(48px,auto));grid-template-columns:repeat(7,minmax(0,1fr));gap:0;display:grid;overflow:hidden}.calendar-weekday-spacer,.calendar-week-number{display:none}.calendar-weekday-heading{border-right:1px solid var(--fh-border-subtle);border-bottom:1px solid var(--fh-border-subtle);min-height:30px;font-size:.7rem}.calendar-month-week{display:contents}.calendar-day-cell{border:0;border-right:1px solid var(--fh-border-subtle);border-bottom:1px solid var(--fh-border-subtle);background:var(--fh-surface);border-radius:0;gap:3px;min-height:52px;padding:5px 4px}.calendar-day-cell.is-selected{outline:2px solid var(--fh-primary);outline-offset:-2px;background:var(--fh-accent-subtle)}.calendar-day-cell-header{justify-content:center}.calendar-day-number{border-radius:999px;width:26px;min-height:24px;padding:0;font-size:.78rem}.calendar-cell-create{display:none}.calendar-day-events{justify-content:center;gap:3px;min-height:9px;display:flex}.calendar-event.is-compact{background:var(--calendar-event-color,var(--fh-primary));border:0;border-radius:999px;width:7px;min-width:7px;height:7px;min-height:7px;padding:0;overflow:hidden}.calendar-event.is-compact .calendar-event-time,.calendar-event.is-compact .calendar-event-title,.calendar-event.is-compact .calendar-event-meta,.calendar-event.is-compact .calendar-event-mobile-label{clip:rect(0, 0, 0, 0);width:1px;height:1px;position:absolute;overflow:hidden}.calendar-more{min-height:9px;padding:0;font-size:.62rem;line-height:1}.calendar-mobile-day-list{border:1px solid var(--fh-border-subtle);border-radius:var(--fh-radius-md);background:var(--fh-surface);gap:10px;padding:12px;display:grid}.calendar-mobile-day-list-header{gap:2px;display:grid}.calendar-mobile-day-list-header span{color:var(--fh-text-muted);font-size:var(--fh-font-caption);text-transform:uppercase;font-weight:750}.calendar-mobile-day-list-header h3{margin:0;font-size:1.05rem}.calendar-mobile-event-list,.calendar-week-grid,.calendar-column-events,.calendar-agenda,.agenda-items{gap:8px;display:grid}.calendar-week-grid{grid-template-columns:minmax(0,1fr)}.calendar-day-column,.agenda-day{gap:8px;padding:10px}.calendar-column-heading{border-bottom:1px solid var(--fh-border-subtle);min-height:34px;font-size:.92rem}.calendar-event:not(.is-compact),.calendar-busy{border-left-color:var(--calendar-event-color,var(--fh-primary));background:var(--fh-surface-subtle);width:100%;padding:10px 12px}.calendar-event:not(.is-compact) .calendar-event-time,.calendar-event:not(.is-compact) .calendar-event-title,.calendar-event:not(.is-compact) .calendar-event-meta{display:none}.calendar-event:not(.is-compact) .calendar-event-extra{color:var(--fh-text-secondary);font-size:.78rem;font-weight:450;display:block}.calendar-event-mobile-label{color:var(--fh-text-primary);overflow-wrap:anywhere;font-size:.94rem;font-weight:600;line-height:1.35;display:block}.calendar-add-inline{display:none}.calendar-layout,.calendar-layout.has-day-panel{grid-template-columns:minmax(0,1fr)}.calendar-day-panel,.calendar-panel-open{display:none}.calendar-dialog-backdrop{align-items:end;padding:0 0 72px}.calendar-dialog{border-radius:8px 8px 0 0;width:100%;max-height:calc(100vh - 80px);padding:14px}.calendar-form{gap:10px}.calendar-form-section,.calendar-detail-section{padding:11px}.calendar-start-date-field{order:2}.calendar-start-time-field{order:3}.calendar-end-date-field{order:4}.calendar-end-time-field{order:5}.calendar-time-toggle{order:1}.calendar-recurrence-field{order:6}.calendar-field.is-all-day-placeholder{display:none}.calendar-calendar-field{order:1}.calendar-owner-field{order:2}.calendar-category-field{order:3}.calendar-place-field{order:1}.calendar-travel-field{order:2}.calendar-address-field{order:3}.calendar-description-field{order:1}}.google-integration{gap:18px;display:grid}.google-integration-toolbar,.google-calendar-panel-header,.google-calendar-actions{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.google-integration-toolbar{justify-content:space-between}.google-integration-layout{grid-template-columns:minmax(220px,280px) minmax(0,1fr);align-items:start;gap:18px;display:grid}.google-connections-list,.google-calendar-panel,.google-calendar-list{gap:10px;display:grid}.google-connection-item{text-align:left;border:1px solid var(--border);background:var(--surface);width:100%;color:var(--text);border-radius:8px;gap:4px;padding:12px;display:grid}.google-connection-item.is-selected{border-color:var(--accent);box-shadow:0 0 0 2px color-mix(in srgb, var(--accent) 18%, transparent)}.google-connection-item small,.google-calendar-panel-header p,.google-calendar-row p,.google-calendar-row small{color:var(--muted)}.google-calendar-panel-header{justify-content:space-between}.google-calendar-panel-header h2,.google-calendar-row h3{margin:0}.google-calendar-row{border:1px solid var(--border);background:var(--surface);border-radius:8px;grid-template-columns:12px minmax(0,1fr) minmax(160px,220px);align-items:center;gap:12px;padding:12px;display:grid}.google-calendar-row.is-unavailable{opacity:.7}.google-calendar-color{border-radius:999px;width:12px;height:42px}.google-calendar-row h3{flex-wrap:wrap;align-items:center;gap:8px;font-size:1rem;display:flex}.google-calendar-row h3 span{background:var(--soft);color:var(--muted);border-radius:999px;padding:2px 7px;font-size:.75rem}.google-calendar-row select{width:100%}.danger-action{color:#b91c1c;border-color:#b91c1c}@media (max-width:820px){.google-integration-layout,.google-calendar-row{grid-template-columns:minmax(0,1fr)}.google-calendar-color{width:100%;height:5px}}.integration-settings,.waste-module,.waste-settings{gap:var(--fh-space-5);display:grid}.integration-settings>div:first-child h2,.integration-settings>div:first-child p,.waste-settings-intro h2,.waste-settings-intro p,.waste-setup-heading h2,.waste-setup-heading p,.waste-source-row h3,.waste-source-row p,.waste-pickup h3,.waste-pickup p,.waste-next h2,.waste-day h2{margin:0}.integration-settings>div:first-child,.integration-settings-row span:first-child,.waste-settings-intro>div,.waste-setup-heading>div,.waste-source-row>div,.waste-source-status,.waste-pickup>div{gap:var(--fh-space-1);display:grid}.integration-settings-list,.waste-source-list,.waste-timeline,.waste-pickup-list,.waste-mapping-list{gap:var(--fh-space-3);display:grid}.integration-settings-row{justify-content:space-between;align-items:center;gap:var(--fh-space-4);border:1px solid var(--fh-border);border-radius:var(--fh-radius-md);background:var(--fh-surface);min-height:68px;color:var(--fh-text-primary);padding:var(--fh-space-4);text-decoration:none;display:flex}.integration-settings-row:hover{border-color:var(--fh-primary);background:var(--fh-surface-subtle)}.integration-settings-row small,.integration-settings>div:first-child>p:last-child,.waste-settings-intro p,.waste-setup-heading p,.waste-source-row p,.waste-source-row small,.waste-source-row dt,.waste-pickup p,.waste-pickup small,.waste-empty-state small{color:var(--fh-text-muted)}.waste-module-toolbar,.waste-settings-intro{justify-content:space-between;align-items:center;gap:var(--fh-space-3);flex-wrap:wrap;display:flex}.waste-history-toggle{align-items:center;gap:var(--fh-space-2);min-height:44px;color:var(--fh-text-secondary);font-weight:600;display:inline-flex}.waste-history-toggle input{width:20px;height:20px;margin:0}.waste-loading,.waste-empty-state{border:1px solid var(--fh-border);border-radius:var(--fh-radius-md);background:var(--fh-surface);padding:var(--fh-space-5)}.waste-empty-state{justify-items:start;gap:var(--fh-space-3)}.waste-empty-state h2{color:var(--fh-text-primary);margin:0;font-size:1.05rem}.waste-next{gap:var(--fh-space-3);border-left:4px solid var(--fh-primary);border-radius:var(--fh-radius-md);background:var(--fh-surface-subtle);padding:var(--fh-space-5);display:grid}.waste-next h2,.waste-day h2{letter-spacing:0;font-size:1.05rem}.waste-timeline{padding-left:20px;position:relative}.waste-timeline:before{background:var(--fh-border);content:"";width:2px;position:absolute;top:6px;bottom:6px;left:5px}.waste-day{gap:var(--fh-space-3);border-bottom:1px solid var(--fh-border);padding:0 0 var(--fh-space-4);display:grid;position:relative}.waste-day:before{border:2px solid var(--fh-surface);background:var(--fh-text-muted);width:10px;height:10px;box-shadow:0 0 0 1px var(--fh-border);content:"";border-radius:50%;position:absolute;top:5px;left:-19px}.waste-day.is-next:before{background:var(--fh-primary)}.waste-pickup-list{grid-template-columns:repeat(auto-fit,minmax(210px,1fr))}.waste-pickup{gap:var(--fh-space-3);grid-template-columns:36px minmax(0,1fr);align-items:center;min-height:60px;display:grid}.waste-type-mark{border:1px solid var(--fh-border);background:var(--fh-surface);width:36px;height:36px;color:var(--fh-text-primary);border-radius:50%;place-items:center;font-weight:700;display:inline-grid}.waste-type-mark.is-restabfall{background:#e3e7eb}.waste-type-mark.is-papier{background:#dbeafe}.waste-type-mark.is-bio{background:#e7ead8}.waste-type-mark.is-gelber-sack{background:#fef3c7}.waste-setup,.waste-preview,.waste-source-row{border:1px solid var(--fh-border);border-radius:var(--fh-radius-md);background:var(--fh-surface);padding:var(--fh-space-5)}.waste-setup,.waste-preview{justify-items:start;gap:var(--fh-space-4);display:grid}.waste-setup-heading{gap:var(--fh-space-3);grid-template-columns:32px minmax(0,1fr);align-items:start;display:grid}.waste-setup-heading>span{background:var(--fh-primary);width:32px;height:32px;color:var(--fh-surface);border-radius:50%;place-items:center;font-weight:700;display:inline-grid}.waste-form-grid{gap:var(--fh-space-4);grid-template-columns:repeat(2,minmax(0,1fr));width:100%;display:grid}.waste-form-grid label,.waste-mapping-list label{gap:var(--fh-space-2);color:var(--fh-text-secondary);font-size:var(--fh-font-small);font-weight:600;display:grid}.waste-source-url{grid-column:1/-1}.waste-source-row{gap:var(--fh-space-4);grid-template-columns:minmax(150px,1.1fr) minmax(180px,1.2fr) minmax(230px,1.5fr) auto;align-items:center;display:grid}.waste-source-status{border-left:3px solid var(--fh-border);padding-left:var(--fh-space-3)}.waste-source-status.is-success{border-left-color:var(--fh-success-text)}.waste-source-status.is-failed,.waste-source-status.is-suspicious{border-left-color:var(--fh-warning-text)}.waste-source-row dl,.waste-source-row dl div{gap:var(--fh-space-2);margin:0;display:flex}.waste-source-row dl{column-gap:var(--fh-space-4);flex-wrap:wrap}.waste-source-row dd{margin:0}.waste-mapping-list{width:100%}.waste-mapping-list label{border-bottom:1px solid var(--fh-border);padding-bottom:var(--fh-space-3);grid-template-columns:minmax(180px,1fr) minmax(180px,260px);align-items:center}.waste-mapping-list label>span{gap:2px;display:grid}.waste-mapping-list small{color:var(--fh-text-muted);font-weight:400}.waste-file-action{cursor:pointer}.waste-file-action input{opacity:0;pointer-events:none;block-size:1px;inline-size:1px;position:absolute}@media (max-width:1024px){.waste-source-row{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:768px){.waste-form-grid,.waste-source-row,.waste-mapping-list label{grid-template-columns:minmax(0,1fr)}.waste-source-url{grid-column:auto}.waste-source-row .secondary-action,.waste-setup .primary-action,.waste-preview .primary-action{width:100%}}@media (max-width:390px){.waste-module-toolbar,.waste-settings-intro{flex-direction:column;align-items:stretch}.waste-module-toolbar .secondary-action,.waste-settings-intro .secondary-action{width:100%}.waste-next,.waste-setup,.waste-preview,.waste-source-row{padding:var(--fh-space-4)}.waste-pickup-list{grid-template-columns:minmax(0,1fr)}}.dashboard-timeline{gap:18px}.dashboard-timeline .dashboard-panel-header{align-items:center}.dashboard-text-link,.dashboard-more-link{color:var(--fh-accent);font-size:var(--fh-font-small);font-weight:600;text-decoration:none}.dashboard-text-link:hover,.dashboard-more-link:hover{text-decoration:underline}.dashboard-day-list{gap:20px}.dashboard-day{gap:8px}.dashboard-day-heading{border-bottom:1px solid var(--fh-border-subtle);justify-content:flex-start;align-items:baseline;gap:8px;padding-bottom:6px;display:flex}.dashboard-day-heading strong{font-size:var(--fh-font-small);letter-spacing:.035em;text-transform:uppercase;font-weight:650}.dashboard-day-heading>span{color:var(--fh-text-secondary);font-size:var(--fh-font-small);margin-left:0}.dashboard-event-list{gap:0}.dashboard-event{border:0;border-bottom:1px solid var(--fh-border-subtle);background:0 0;border-radius:0;grid-template-columns:4px 100px minmax(0,1fr) 20px;align-items:center;gap:12px;min-height:38px;padding:5px 2px;display:grid;position:relative}.dashboard-event:last-child{border-bottom:0}.dashboard-event:hover{background:var(--fh-surface-subtle)}.dashboard-event-marker{border-radius:999px;width:4px;height:24px;min-height:24px}.dashboard-event-time{white-space:nowrap;font-weight:550}.dashboard-event-time:after{content:":"}.dashboard-event-content{gap:2px;min-width:0;display:grid}.dashboard-event-main-link{min-width:0;color:inherit;text-decoration:none}.dashboard-event-main-link:before{z-index:1;content:"";position:absolute;inset:0}.dashboard-event-main-link:focus-visible{outline:none}.dashboard-event:has(.dashboard-event-main-link:focus-visible){outline-offset:2px;border-radius:6px;outline:2px solid}.dashboard-event-title{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:.94rem;font-weight:550;display:block;overflow:hidden}.dashboard-event-chevron-link{z-index:2;color:var(--fh-text-muted);justify-content:center;align-items:center;text-decoration:none;display:inline-flex;position:relative}.dashboard-event-chevron{width:18px;height:18px;transition:transform .12s}.dashboard-event:hover .dashboard-event-chevron{transform:translate(2px)}.dashboard-more-link{width:fit-content;margin-left:116px}.dashboard-event-location{z-index:2;grid-template-columns:22px minmax(0,1fr);justify-content:start;align-items:center;gap:5px;min-width:0;display:grid;position:relative}.dashboard-location-text{min-width:0;color:var(--fh-text-muted);text-overflow:ellipsis;white-space:nowrap;font-size:.76rem;font-weight:400;overflow:hidden}.dashboard-maps-link{z-index:2;color:#dc2626;border-radius:50%;justify-content:center;align-items:center;width:22px;height:22px;text-decoration:none;display:inline-flex;position:relative}.dashboard-maps-link svg{width:15px;height:15px}.dashboard-maps-link:hover{background:#dc26261a}.dashboard-waste-card{gap:14px}.dashboard-waste-content{gap:8px;display:grid}.dashboard-waste-eyebrow{color:var(--fh-text-muted);font-size:var(--fh-font-small)}.dashboard-waste-date{align-items:baseline;gap:8px;display:flex}.dashboard-waste-date strong{font-size:1rem}.dashboard-waste-date span,.dashboard-waste-source{color:var(--fh-text-muted);font-size:var(--fh-font-small)}.dashboard-waste-types{flex-wrap:wrap;gap:6px;display:flex}.dashboard-waste-type{background:var(--fh-surface-subtle);font-size:var(--fh-font-small);border-radius:999px;align-items:center;gap:6px;padding:4px 8px;display:inline-flex}.dashboard-waste-type-dot{background:var(--fh-accent);border-radius:999px;width:7px;height:7px}@media (max-width:1100px){.dashboard-event{grid-template-columns:4px 96px minmax(0,1fr) 20px}}@media (max-width:720px){.dashboard-day-heading{flex-wrap:wrap}.dashboard-event{grid-template-columns:4px 82px minmax(0,1fr) 18px;gap:8px}.dashboard-more-link{margin-left:95px}}.calendar-detail-actions{border-top:1px solid var(--fh-border-subtle);gap:12px;padding-top:12px;display:grid}.calendar-participation-actions{justify-content:space-between}.calendar-participation-buttons{flex-wrap:wrap;gap:8px;display:flex}.calendar-detail-actionbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 12px;display:flex}.calendar-detail-actionbar-primary,.calendar-detail-actionbar-danger{flex-wrap:wrap;gap:8px;display:flex}@media (max-width:700px){.calendar-participation-actions{flex-direction:column;align-items:stretch}.calendar-participation-buttons{grid-template-columns:repeat(3,minmax(0,1fr));width:100%;display:grid}.calendar-participation-buttons button{width:100%}.calendar-detail-actionbar{flex-direction:column;align-items:stretch}.calendar-detail-actionbar-primary,.calendar-detail-actionbar-danger{width:100%;display:grid}.calendar-detail-actionbar-primary{grid-template-columns:minmax(0,1fr)}.calendar-detail-actionbar-danger{grid-template-columns:repeat(2,minmax(0,1fr))}.calendar-detail-actionbar button{width:100%}}.family-admin-layout{grid-template-columns:minmax(260px,340px) minmax(0,1fr);align-items:start;gap:32px;display:grid}.family-admin-list,.family-admin-editor{gap:20px;display:grid}.family-admin-editor{max-width:620px}.family-admin-list-header{justify-content:space-between;align-items:flex-end;gap:16px;display:flex}.family-admin-list-header h2{font-size:var(--fh-font-section-title);margin:0}.family-member-list{gap:8px;display:grid}.family-member-row{border:1px solid var(--fh-border-subtle);border-radius:var(--fh-radius-md);background:var(--surface);width:100%;color:var(--text);text-align:left;cursor:pointer;grid-template-columns:42px minmax(0,1fr);align-items:center;gap:12px;padding:11px 12px;display:grid}.family-member-row:hover{border-color:var(--fh-primary)}.family-member-row.is-active{border-color:var(--fh-primary);background:var(--fh-surface-subtle)}.family-member-avatar{background:var(--fh-primary);width:42px;height:42px;color:var(--surface);border-radius:50%;justify-content:center;align-items:center;font-weight:700;display:flex}.family-member-row-text{gap:2px;min-width:0;display:grid}.family-member-row-text strong,.family-member-row-text span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.family-member-row-text span{color:var(--text-muted);font-size:var(--fh-font-small)}.family-admin-form-actions{flex-wrap:wrap;gap:10px;display:flex}@media (max-width:820px){.family-admin-layout{grid-template-columns:minmax(0,1fr)}.family-admin-editor{max-width:none}}.timetable-panel,.timetable-days{gap:24px;display:grid}.timetable-day{gap:10px;display:grid}.timetable-day h3{text-transform:capitalize;margin:0;font-size:1rem;font-weight:700}.timetable-table-wrap{border:1px solid var(--fh-border-subtle);background:var(--fh-surface);border-radius:12px;overflow-x:auto}.timetable-table{border-collapse:collapse;table-layout:fixed;width:100%;min-width:720px}.timetable-table th,.timetable-table td{border-right:1px solid var(--fh-border-subtle);border-bottom:1px solid var(--fh-border-subtle);text-align:left;vertical-align:top;padding:12px 14px}.timetable-table th:last-child,.timetable-table td:last-child{border-right:0}.timetable-table tbody tr:last-child td{border-bottom:0}.timetable-table th{background:var(--fh-surface-subtle);font-size:.8rem;font-weight:700}.timetable-table th:first-child,.timetable-table td:first-child{width:125px}.timetable-table td{min-height:58px;font-size:.9rem}.timetable-time{color:var(--fh-text-muted);white-space:nowrap;font-weight:600;font-size:.82rem!important}.timetable-detail{color:var(--fh-text-muted);margin-top:4px;font-size:.76rem;font-weight:400;display:block}@media (max-width:700px){.timetable-panel{gap:18px}.timetable-days{gap:20px}.timetable-table{min-width:640px}.timetable-table th,.timetable-table td{padding:10px}}.dashboard-timetable-wide{grid-column:1/-1}.dashboard-timetable-wrap{width:100%;overflow-x:auto}.dashboard-timetable-table{border-collapse:collapse;table-layout:fixed;width:100%}.dashboard-timetable-table th,.dashboard-timetable-table td{border-top:1px solid var(--border-color,#dfe5ec);text-align:left;vertical-align:top;padding:.65rem .75rem}.dashboard-timetable-table th:first-child,.dashboard-timetable-table td:first-child{width:7rem}.dashboard-timetable-table th{font-size:.8rem}.dashboard-timetable-hour{color:#64748b;white-space:nowrap}.dashboard-timetable-table td strong{display:block}.dashboard-timetable-detail{color:#718096;margin-top:.15rem;font-size:.78rem;display:block}@media (max-width:800px){.dashboard-timetable-table{min-width:680px}.dashboard-timetable-table th:first-child,.dashboard-timetable-table td:first-child{width:5rem}}
