/* =============================================================
   VERA PORTAL — DASHBOARD SHELL (Übersicht/Dokumente/Nachrichten/
   Kalender/Admin-Seiten)
============================================================= */
.dash-layout{
  display:flex;align-items:flex-start;gap:0;
  min-height:calc(100vh - var(--nav-height));
  padding-top:var(--nav-height);
  background:var(--color-bg);
}
.dash-sidebar{
  width:240px;flex-shrink:0;background:var(--color-navy-deep);height:calc(100vh - var(--nav-height));
  padding:32px 0;position:sticky;top:var(--nav-height);overflow-y:auto;
}
.dash-sidebar-header{padding:0 28px 24px;border-bottom:1px solid rgba(255,255,255,.12);margin-bottom:18px;position:relative;}
.dash-sidebar-name{color:var(--color-white);font-family:var(--font-heading);font-size:1.15rem;margin-bottom:10px;}
.dash-sidebar .status-badge{margin:0;font-size:.72rem;padding:4px 12px;}
.dash-nav{display:flex;flex-direction:column;}
.dash-nav-link{
  display:flex;align-items:center;justify-content:space-between;gap:8px;
  padding:12px 28px;color:rgba(255,255,255,.75);font-size:.92rem;font-weight:500;
  border-left:3px solid transparent;transition:color .2s,border-color .2s,background .2s;
}
.dash-nav-link:hover{color:var(--color-white);background:rgba(255,255,255,.04);}
.dash-nav-link.active{color:var(--color-gold);border-left-color:var(--color-gold);background:rgba(255,255,255,.05);}
.dash-nav-label{overflow:hidden;text-overflow:ellipsis;}
.dash-nav-badge{
  background:var(--color-gold);color:var(--color-white);font-size:.68rem;font-weight:700;
  line-height:1;padding:3px 8px;border-radius:50px;flex-shrink:0;
}
.announcement-new-badge{
  background:var(--color-gold);color:var(--color-white);font-size:.68rem;font-weight:700;
  line-height:1;padding:3px 8px;border-radius:50px;margin-left:8px;vertical-align:2px;
}
.dash-nav-section-label{
  display:block;margin:18px 28px 6px;color:rgba(255,255,255,.4);font-size:.7rem;font-weight:700;
  letter-spacing:.12em;text-transform:uppercase;
}
.dash-logout-btn{
  display:block;width:calc(100% - 56px);margin:24px 28px 0;padding:10px 0;text-align:center;
  border:1.5px solid rgba(255,255,255,.25);border-radius:50px;color:rgba(255,255,255,.75);
  font-size:.85rem;font-weight:600;transition:border-color .2s,color .2s;
}
.dash-logout-btn:hover{border-color:var(--color-gold);color:var(--color-gold);}

/* Ausloggen zusätzlich oben rechtsbündig (Desktop) -- der Button in
   der Sidebar bleibt für Mobile bestehen (dort wird die Sidebar zum
   Bottom-Sheet, siehe @media max-width:900px weiter unten, das diesen
   hier ausblendet und den Sidebar-Button stattdessen zeigt). */
.dash-top-actions{
  position:fixed;top:calc(var(--nav-height) + 14px);left:272px;right:24px;z-index:900;
  display:flex;align-items:flex-start;justify-content:flex-end;gap:10px;flex-wrap:wrap;
  pointer-events:none;
}
.dash-top-actions > *{pointer-events:auto;}
.dash-top-search-group{display:flex;align-items:center;gap:10px;margin-right:auto;min-width:280px;}
#dashAdminQuickbar{order:10;}
#dashPortalEditorTop{order:20;}
#dashContentEditorTop{order:30;}
#dashEmailModeTop{order:40;}
#dashLogoutTop{order:50;}
.dash-logout-top{
  padding:10px 22px;border-radius:50px;border:1.5px solid var(--color-blue-light);
  color:var(--color-navy);font-size:.85rem;font-weight:600;background:var(--color-white);
  box-shadow:var(--shadow-card);transition:border-color .2s,color .2s;
}
.dash-logout-top:hover{border-color:var(--color-gold);color:var(--color-gold);}
.dash-content-editor-top{
  display:inline-flex;align-items:center;min-height:38px;padding:8px 14px;border-radius:50px;
  border:1.5px solid rgba(201,168,76,.75);background:var(--color-gold);color:var(--color-navy);
  font-size:.78rem;font-weight:800;box-shadow:var(--shadow-card);white-space:nowrap;
}
.dash-content-editor-top:hover{filter:brightness(.98);transform:translateY(-1px);}
.dash-email-mode-top{
  display:flex;flex-direction:column;align-items:flex-end;gap:4px;max-width:270px;
}
.dash-email-mode-switch{
  display:inline-flex;align-items:center;gap:7px;min-height:38px;padding:6px 10px 6px 7px;
  border:1.5px solid var(--color-blue-light);border-radius:50px;background:var(--color-white);
  box-shadow:var(--shadow-card);cursor:pointer;touch-action:manipulation;
}
.dash-email-mode-switch input{position:absolute;opacity:0;pointer-events:none;}
.dash-email-mode-track{
  position:relative;width:38px;height:22px;flex:0 0 38px;border-radius:50px;background:#C94B3F;
  border:1px solid rgba(138,32,22,.3);transition:background .2s,border-color .2s;
}
.dash-email-mode-track::after{
  content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;
  background:var(--color-white);box-shadow:0 1px 4px rgba(13,36,64,.25);transition:transform .2s;
}
.dash-email-mode-switch input:checked + .dash-email-mode-track{
  background:#2E9D55;border-color:rgba(30,107,55,.35);
}
.dash-email-mode-switch input:checked + .dash-email-mode-track::after{transform:translateX(16px);}
.dash-email-mode-switch strong{
  color:var(--color-navy);font-size:.76rem;font-weight:800;letter-spacing:.02em;white-space:nowrap;
}
.dash-email-mode-top.is-test .dash-email-mode-switch strong{color:#9F2E24;}
.dash-email-mode-top.is-live .dash-email-mode-switch strong{color:#1E6B37;}
.dash-email-mode-top p{
  margin:0;padding:5px 9px;border-radius:9px;background:rgba(255,255,255,.94);
  border:1px solid var(--color-blue-light);box-shadow:var(--shadow-card);
  color:var(--color-gray-text);font-size:.7rem;line-height:1.25;text-align:right;
}
@media (min-width:901px){
  .dash-sidebar .dash-logout-btn{display:none;}
}
@media (max-width:900px){
  .dash-top-actions{
    top:var(--nav-height);left:0;right:0;display:grid;grid-template-columns:1fr auto;
    align-items:start;gap:8px;padding:10px 14px 12px;background:rgba(247,249,251,.97);
    -webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);
    border-bottom:1px solid var(--color-blue-light);box-shadow:0 8px 18px rgba(13,36,64,.08);
  }
  .dash-top-search-group{grid-column:1 / -1;width:100%;min-width:0;margin-right:0;}
  .dash-content-editor-top,.dash-logout-top,.dash-email-mode-switch{min-height:44px;}
  .dash-email-mode-top{align-items:flex-start;max-width:none;}
  .dash-email-mode-top p{display:none;}
}

@media (min-width:901px) and (max-width:1100px){
  .dash-top-actions{left:260px;gap:8px;}
  .admin-quickbar-search input{width:min(360px,30vw);}
  .dash-content-editor-top,.dash-logout-top{padding-left:12px;padding-right:12px;font-size:.76rem;}
  .portal-preview-editor-shell{grid-template-columns:1fr;}
  .portal-preview-editor-shell .homepage-edit-panel{position:static;}
  .portal-preview-frame{height:68vh;min-height:560px;}
}

.dash-content{flex:1;min-width:0;padding:48px 56px;}
@media (min-width:901px){
  body:has(.dash-top-actions) .dash-content{padding-top:92px;}
}
.dash-content h1{font-size:1.7rem;margin-bottom:8px;}
.dash-content > .dash-lead{color:var(--color-gray-text);margin-bottom:32px;}

.dash-card{
  background:var(--color-white);border:1px solid var(--color-blue-light);border-radius:var(--radius);
  box-shadow:var(--shadow-card);padding:30px 32px;margin-bottom:32px;
}
.dash-card h2{font-size:1.1rem;margin-bottom:18px;}
.dash-card-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:18px;}
.dash-card-head h2{margin-bottom:0;}

/* "Ihre Rollen" auf der Portal-Uebersicht: eine Person kann mehreren
   Kategorien gleichzeitig angehoeren (z.B. Mieter UND Eigentuemer),
   darum mehrere kleine Pillen statt eines einzelnen Werts -- der
   Status-Row-Wert wird dafuer selbst zum wrap-faehigen Flex-Container. */
.status-row .value#dashCategory{display:flex;flex-wrap:wrap;gap:6px;justify-content:flex-end;}
.role-badge{
  display:inline-block;padding:3px 12px;border-radius:50px;font-size:.78rem;font-weight:600;
  background:var(--color-blue-light);color:var(--color-navy);white-space:nowrap;
}

.site-services-editor{display:flex;flex-direction:column;gap:12px;}
.portal-ui-editor{display:flex;flex-direction:column;gap:10px;}
.portal-ui-group{font-size:.9rem;color:var(--color-navy);margin:10px 0 2px;}
.portal-ui-row{
  display:grid;grid-template-columns:120px minmax(0,1fr) auto;gap:12px;align-items:center;
  padding:12px 14px;border:1px solid var(--color-blue-light);border-radius:12px;background:var(--color-bg);
}
.portal-ui-fields{display:grid;grid-template-columns:minmax(160px,.8fr) minmax(220px,1.2fr);gap:10px;}
.portal-ui-fields input{
  width:100%;min-height:40px;border:1px solid var(--color-blue-light);border-radius:8px;
  background:var(--color-white);padding:9px 11px;font-family:inherit;font-size:.86rem;color:var(--color-navy);
}
.portal-module-palette{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px;}
.portal-module-row{
  display:grid;grid-template-columns:38px 120px minmax(0,1fr) auto;gap:12px;align-items:start;
  padding:12px 14px;border:1px solid var(--color-blue-light);border-radius:12px;background:var(--color-bg);
}
.portal-module-row.is-dragging{opacity:.55;border-color:var(--color-gold);}
.portal-module-handle{
  min-height:42px;display:flex;align-items:center;justify-content:center;border:1px dashed var(--color-blue-light);
  border-radius:10px;color:var(--color-gold);font-weight:900;cursor:grab;background:var(--color-white);
}
.portal-module-fields{display:grid;gap:10px;}
.portal-module-meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.portal-module-meta code{
  font-size:.72rem;color:var(--color-gray-text);background:var(--color-white);border:1px solid var(--color-blue-light);
  border-radius:999px;padding:3px 8px;
}
.portal-module-fields input,.portal-module-fields textarea{
  width:100%;min-height:40px;border:1px solid var(--color-blue-light);border-radius:8px;
  background:var(--color-white);padding:9px 11px;font-family:inherit;font-size:.86rem;color:var(--color-navy);
}
.portal-module-fields textarea{resize:vertical;line-height:1.35;}
.portal-module-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end;}
.portal-module-actions .dash-btn-sm{min-height:42px;}
.portal-preview-edit-mode [data-nav-key],
.portal-preview-edit-mode [data-dashboard-module]{
  outline:2px dashed rgba(201,168,76,.55);outline-offset:3px;cursor:pointer;
}
.portal-preview-edit-mode [data-nav-key]:hover,
.portal-preview-edit-mode [data-dashboard-module]:hover{
  outline-color:var(--color-gold);box-shadow:0 0 0 4px rgba(201,168,76,.12);
}
.portal-preview-edit-mode .portal-preview-hidden-item{opacity:.42;filter:saturate(.35);}
.homepage-editor-shell{
  display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:18px;align-items:start;
}
.homepage-preview-card,.homepage-edit-panel{
  background:var(--color-white);border:1px solid var(--color-blue-light);border-radius:var(--radius);
  box-shadow:var(--shadow-card);padding:18px;
}
.homepage-preview-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:12px;}
.homepage-preview-head h2,.homepage-edit-panel h2{font-size:1.05rem;margin-bottom:4px;}
.homepage-preview-frame{
  display:block;width:100%;height:calc(100vh - var(--nav-height) - 180px);min-height:620px;
  border:1px solid var(--color-blue-light);border-radius:12px;background:var(--color-white);
}
.portal-preview-frame{min-height:720px;}
.homepage-edit-panel{position:sticky;top:calc(var(--nav-height) + 20px);}
.homepage-edit-form{display:flex;flex-direction:column;gap:12px;margin-top:14px;}
.homepage-edit-form label{display:flex;flex-direction:column;gap:6px;color:var(--color-navy);font-size:.82rem;font-weight:800;}
.homepage-edit-form input[type="text"],.homepage-edit-form textarea{
  width:100%;border:1px solid var(--color-blue-light);border-radius:8px;background:var(--color-bg);
  padding:10px 12px;font-family:inherit;font-size:.9rem;color:var(--color-navy);
}
.homepage-edit-form textarea{resize:vertical;line-height:1.4;}
.site-content-editor{display:flex;flex-direction:column;gap:12px;}
.site-content-row{
  display:grid;grid-template-columns:220px minmax(0,1fr) auto;gap:10px;align-items:start;
  padding:14px;border:1px solid var(--color-blue-light);border-radius:12px;background:var(--color-bg);
}
.site-content-row label{font-size:.82rem;font-weight:800;color:var(--color-navy);padding-top:10px;}
.site-content-row textarea{
  width:100%;min-height:44px;border:1px solid var(--color-blue-light);border-radius:8px;background:var(--color-white);
  padding:10px 12px;font-family:inherit;font-size:.88rem;color:var(--color-navy);resize:vertical;
}
.site-content-row .dash-btn-sm{white-space:nowrap;}
.site-service-row{
  display:grid;grid-template-columns:120px minmax(0,1fr);gap:12px;align-items:start;
  padding:14px;border:1px solid var(--color-blue-light);border-radius:12px;background:var(--color-bg);
}
.site-service-toggle{
  display:inline-flex;align-items:center;gap:8px;color:var(--color-navy);font-size:.84rem;font-weight:700;
  padding-top:10px;white-space:nowrap;
}
.site-service-toggle input{width:auto;accent-color:var(--color-gold);}
.site-service-fields{display:grid;grid-template-columns:minmax(160px,.7fr) minmax(220px,1.3fr) minmax(130px,.45fr);gap:10px;}
.site-service-fields input,.site-service-fields textarea{
  width:100%;min-height:40px;border:1px solid var(--color-blue-light);border-radius:8px;
  background:var(--color-white);padding:9px 11px;font-family:inherit;font-size:.86rem;color:var(--color-navy);
}
.site-service-fields textarea{resize:vertical;line-height:1.35;}

.dash-stat-row{display:flex;gap:20px;flex-wrap:wrap;margin-bottom:32px;}
.dash-stat{
  flex:1;min-width:180px;background:var(--color-white);border:1px solid var(--color-blue-light);
  border-radius:var(--radius);box-shadow:var(--shadow-card);padding:24px 26px;
  display:block;text-decoration:none;transition:box-shadow .15s,transform .15s;
}
.dash-stat.is-link:hover, .dash-stat.is-link:focus-visible{
  box-shadow:0 6px 16px rgba(21,42,64,.14);transform:translateY(-2px);
}
.dash-stat .num{font-family:var(--font-heading);font-size:2.1rem;color:var(--color-gold);font-weight:700;line-height:1;}
.dash-stat .label{margin-top:8px;color:var(--color-gray-text);font-size:.85rem;}
.dash-stat.danger{border-color:#F0C6C0;}
.dash-stat.danger .num{color:#A32E22;}

.dash-table-wrap{overflow-x:auto;}
.dash-table-wrap{-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain;}
.dash-table{width:100%;border-collapse:collapse;}

/* Karten-Ansicht für #receivedTable ("meine offenen Rechnungen") auf
   Mobile — die einzige Tabelle im Portal, die praktisch jeder Mieter/
   Eigentümer regelmässig auf dem Handy ansieht. Alle anderen Tabellen
   (Admin-Back-Office) bleiben bei der scrollbaren Standard-Tabelle
   (.dash-table-wrap), da deren Nutzung eher Desktop/Tablet-quer ist.
   Nutzt data-label-Attribute (siehe renderInvoiceRow) statt <th>, die
   auf dieser Breite ausgeblendet werden. */
@media (max-width:640px){
  #receivedTable tr:has(th){display:none;}
  #receivedTable, #receivedTable tbody, #receivedTable tr{display:block;width:100%;}
  #receivedTable tr{
    border:1px solid var(--color-blue-light);border-radius:8px;background:var(--color-bg);
    margin-bottom:10px;padding:10px 12px;
  }
  #receivedTable tr:has(.dash-empty){border:none;background:none;padding:0;}
  #receivedTable td{
    display:flex;justify-content:space-between;align-items:center;gap:12px;
    padding:6px 0;border-bottom:none;font-size:.85rem;
  }
  #receivedTable td[data-label]::before{
    content:attr(data-label);font-weight:600;color:var(--color-gray-text);font-size:.74rem;
    text-transform:uppercase;letter-spacing:.03em;
  }
}
.dash-table th{
  text-align:left;font-size:.78rem;text-transform:uppercase;letter-spacing:.05em;color:var(--color-gray-text);
  opacity:.6;padding:10px 14px;border-bottom:2px solid var(--color-blue-light);
}
.dash-table td{padding:14px;border-bottom:1px solid var(--color-blue-light);font-size:.92rem;vertical-align:middle;}
.dash-table tr:last-child td{border-bottom:none;}
.dash-table a{color:var(--color-blue-mid);font-weight:600;}
.dash-table a:hover{color:var(--color-gold);}
.dash-table tr.dash-row-link{cursor:pointer;}
.dash-table tr.dash-row-link:hover td{background:var(--color-bg);}
.dash-quality-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;}
.dash-quality-item{
  display:flex;flex-direction:column;gap:6px;min-height:148px;padding:14px;border:1px solid var(--color-blue-light);
  border-radius:14px;background:linear-gradient(135deg,rgba(255,255,255,.96),rgba(222,235,247,.58));
  color:var(--color-navy);text-decoration:none;
}
.dash-quality-item:hover,.dash-quality-item:focus-visible{border-color:var(--color-gold);box-shadow:0 0 0 3px rgba(201,168,76,.16);outline:none;}
.dash-quality-item strong{font-size:.95rem;}
.dash-quality-item span{font-size:.82rem;color:var(--color-gray-text);line-height:1.35;}
.dash-quality-item small{font-size:.78rem;color:var(--color-navy);line-height:1.35;}
.dash-quality-priority{
  align-self:flex-start;padding:4px 8px;border-radius:999px;background:var(--color-blue-light);
  color:var(--color-navy)!important;font-size:.68rem!important;font-weight:900;text-transform:uppercase;letter-spacing:.05em;
}
.dash-quality-item.high .dash-quality-priority{background:rgba(190,60,45,.12);color:#9b2f23!important;}
.dash-quality-item.medium .dash-quality-priority{background:rgba(201,168,76,.18);color:var(--color-navy)!important;}
.dash-quality-empty{
  grid-column:1 / -1;display:flex;align-items:center;justify-content:space-between;gap:14px;padding:16px;
  border:1px solid var(--color-blue-light);border-radius:14px;background:rgba(222,235,247,.5);color:var(--color-navy);
}
.dash-quality-empty span{color:var(--color-gray-text);}
.dash-row-clickable{cursor:pointer;transition:background .15s;}
.dash-row-clickable:hover{background:var(--color-bg);}

.dash-btn-row{display:flex;gap:8px;flex-wrap:wrap;}
.dash-btn-sm{
  min-height:38px;padding:7px 16px;border-radius:50px;font-size:.8rem;font-weight:600;border:1.5px solid var(--color-blue-light);
  color:var(--color-navy);transition:border-color .2s,color .2s;
  touch-action:manipulation;
}
.dash-btn-sm:hover{border-color:var(--color-gold);color:var(--color-gold);}
.dash-btn-sm.danger{border-color:#F0C6C0;color:#A32E22;}
.dash-btn-sm.danger:hover{border-color:#A32E22;}

.email-mode-card{border-color:rgba(201,168,76,.45);background:linear-gradient(135deg,#fff 0%,#fff 62%,rgba(201,168,76,.08) 100%);}
.email-mode-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:16px;}
.email-mode-head h2{margin-bottom:4px;}
.email-mode-toggle{
  display:flex;align-items:center;gap:14px;padding:14px;border:1px solid var(--color-blue-light);
  border-radius:12px;background:rgba(255,255,255,.75);cursor:pointer;touch-action:manipulation;
}
.email-mode-toggle input{position:absolute;opacity:0;pointer-events:none;}
.email-mode-toggle-ui{
  position:relative;width:58px;height:32px;flex:0 0 58px;border-radius:50px;background:#D8F0DE;
  border:1px solid rgba(30,107,55,.25);transition:background .2s,border-color .2s;
}
.email-mode-toggle-ui::after{
  content:"";position:absolute;top:3px;left:3px;width:24px;height:24px;border-radius:50%;background:var(--color-white);
  box-shadow:0 2px 6px rgba(13,36,64,.2);transition:transform .2s;
}
.email-mode-toggle input:checked + .email-mode-toggle-ui{background:#FBEBC2;border-color:rgba(138,99,0,.35);}
.email-mode-toggle input:checked + .email-mode-toggle-ui::after{transform:translateX(26px);}
.email-mode-toggle strong{display:block;color:var(--color-navy);font-size:.94rem;margin-bottom:3px;}
.email-mode-toggle small{display:block;color:var(--color-gray-text);line-height:1.45;}
.email-mode-toggle input:focus-visible + .email-mode-toggle-ui{box-shadow:0 0 0 3px rgba(201,168,76,.25);}
.email-mode-toggle:has(input:disabled){opacity:.65;cursor:not-allowed;}

.dash-empty{color:var(--color-gray-text);opacity:.7;font-size:.92rem;padding:16px 0;}

.dash-search-input{
  display:block;width:100%;max-width:340px;min-height:42px;margin-bottom:14px;padding:10px 14px;
  border:1px solid var(--color-blue-light);border-radius:8px;background:var(--color-bg);
  font-family:inherit;font-size:.9rem;transition:border-color .2s;
}
.dash-search-input:focus{border-color:var(--color-gold);outline:none;}

/* Dokumente */
.doc-list{display:flex;flex-direction:column;gap:14px;}
.doc-row{
  display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;
  background:var(--color-white);border:1px solid var(--color-blue-light);border-radius:var(--radius);
  padding:18px 22px;box-shadow:var(--shadow-card);
}
.doc-info{display:flex;flex-direction:column;gap:4px;}
.doc-info strong{color:var(--color-navy);}
.doc-meta{font-size:.8rem;color:var(--color-gray-text);opacity:.75;}
.doc-access-badge{
  display:inline-flex;align-self:flex-start;width:max-content;padding:4px 8px;border-radius:999px;
  background:var(--color-blue-light);color:var(--color-navy);font-size:.68rem;font-weight:900;
  text-transform:uppercase;letter-spacing:.04em;
}
.doc-access-badge.shared{background:rgba(201,168,76,.18);}
.doc-access-badge.scoped{background:rgba(31,106,85,.12);color:#1F6A55;}
.fall-verlauf{
  display:flex;flex-direction:column;gap:4px;margin:0 0 10px;padding:10px 12px;
  background:var(--color-bg);border-radius:8px;border-left:3px solid var(--color-gold);
}
.fall-verlauf a{font-size:.84rem;color:var(--color-navy);text-decoration:none;}
.fall-verlauf a:hover{color:var(--color-gold);text-decoration:underline;}
.fill-form{display:flex;gap:10px;align-items:flex-start;flex-wrap:wrap;}
.fill-form textarea{
  min-width:220px;flex:1;padding:10px 12px;border:1px solid var(--color-blue-light);border-radius:8px;
  background:var(--color-bg);font-family:inherit;font-size:.88rem;min-height:44px;resize:vertical;
}

/* Dokumente — Ordner-Ablagesystem (Admin) */
.filemgr-shell{position:relative;min-height:360px;}
.filemgr-shell.is-upload-drag::after{
  content:"Dateien hier ablegen zum Hochladen";position:absolute;inset:18px;z-index:4;
  display:flex;align-items:center;justify-content:center;border:2px dashed var(--color-gold);
  border-radius:var(--radius);background:rgba(255,255,255,.86);color:var(--color-navy);
  font-weight:800;font-size:1rem;pointer-events:none;
}
.filemgr-toolbar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;margin-bottom:10px;}
.filemgr-toolbar-left{display:flex;align-items:center;gap:8px;flex-wrap:wrap;min-width:0;}
.filemgr-nav-btn:disabled{opacity:.45;cursor:not-allowed;}
.filemgr-breadcrumb{font-size:.9rem;color:var(--color-navy);display:flex;align-items:center;gap:4px;flex-wrap:wrap;}
.filemgr-breadcrumb-item{cursor:pointer;padding:3px 8px;border-radius:6px;color:var(--color-navy);}
.filemgr-breadcrumb-item:hover{background:var(--color-bg);color:var(--color-gold);}
.filemgr-breadcrumb-item.drag-over{background:rgba(201,168,76,.25);outline:1px dashed var(--color-gold);}
.filemgr-breadcrumb-sep{color:var(--color-gray-text);opacity:.6;}
.filemgr-toolbar-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
.filemgr-subbar{
  display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;
  margin:-2px 0 14px;padding:10px 12px;border:1px solid var(--color-blue-light);
  border-radius:10px;background:var(--color-bg);
}
.filemgr-subbar p{margin:0;}
.filemgr-dropzone{min-height:220px;border-radius:12px;transition:background .2s,box-shadow .2s;}
.filemgr-dropzone.drag-over{background:rgba(201,168,76,.08);box-shadow:inset 0 0 0 2px rgba(201,168,76,.35);}
.filemgr-confirm-label{display:inline-flex;align-items:center;gap:6px;font-size:.78rem;color:var(--color-gray-text);font-weight:400;}
.filemgr-confirm-label input{width:auto;}
.filemgr-choice-group{
  display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:8px 0;
}
.filemgr-choice{
  display:flex;align-items:center;gap:8px;min-height:44px;padding:10px 12px;
  border:1px solid var(--color-blue-light);border-radius:12px;background:var(--color-bg);
  color:var(--color-navy);font-size:.84rem;font-weight:800;cursor:pointer;touch-action:manipulation;
}
.filemgr-choice:has(input:checked){border-color:var(--color-gold);background:rgba(201,168,76,.12);}
.filemgr-choice input{width:auto;accent-color:var(--color-gold);flex-shrink:0;}
.filemgr-upload-modal{max-width:460px;}
.filemgr-path-preview{
  padding:11px 13px;border:1px solid var(--color-blue-light);border-radius:10px;background:var(--color-bg);
  color:var(--color-gray-text);font-size:.84rem;line-height:1.45;word-break:break-word;
}
.filemgr-path-preview strong{color:var(--color-navy);}
#uploadScopeForm input[type="file"]{width:100%;}
#uploadScopeForm select[hidden],#uploadScopeForm input[hidden],#uploadScopeForm label[hidden],
#folderScopeForm select[hidden],#folderScopeForm input[hidden],#folderScopeForm label[hidden]{display:none!important;}
.auth-form-label{display:flex;flex-direction:column;gap:6px;font-size:.82rem;font-weight:800;color:var(--color-navy);margin:10px 0;}
.auth-form-label select{
  min-height:42px;border:1px solid var(--color-blue-light);border-radius:8px;background:var(--color-bg);
  padding:9px 11px;font-family:inherit;font-size:.9rem;color:var(--color-navy);
}

.filemgr-browser{
  display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:14px;min-height:520px;
}
.filemgr-columns{
  display:flex;min-width:0;overflow-x:auto;border:1px solid var(--color-blue-light);
  border-radius:14px;background:linear-gradient(90deg,#fff 0%,#fff 60%,rgba(222,235,247,.34) 100%);
  box-shadow:var(--shadow-card);-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain;
}
.filemgr-column{
  flex:0 0 310px;min-width:260px;border-right:1px solid var(--color-blue-light);
  padding:12px;background:rgba(255,255,255,.78);
}
.filemgr-column:last-child{border-right:none;}
.filemgr-column h3{font-size:.78rem;text-transform:uppercase;letter-spacing:.06em;color:var(--color-gray-text);margin-bottom:10px;}
.filemgr-column-list{display:flex;flex-direction:column;gap:4px;}
.filemgr-column-item{
  width:100%;min-height:42px;display:grid;grid-template-columns:24px minmax(0,1fr) 16px;align-items:center;gap:8px;
  border:none;border-radius:8px;background:transparent;color:var(--color-navy);padding:8px 10px;text-align:left;
  font-size:.9rem;font-weight:650;cursor:pointer;touch-action:manipulation;
}
.filemgr-column-item span:nth-child(2){overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.filemgr-column-item:hover,.filemgr-column-item.active{background:#0B6BD3;color:#fff;}
.filemgr-column-item.folder{grid-template-columns:24px minmax(0,1fr) 30px 16px;}
.filemgr-column-item.file{grid-template-columns:24px minmax(0,1fr) 0;}
.filemgr-column-icon{font-size:1.05rem;}
.filemgr-column-action{
  width:30px;height:30px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;
  font-size:1rem;line-height:1;font-weight:900;opacity:.78;
}
.filemgr-column-action:hover{background:rgba(255,255,255,.18);opacity:1;}
.filemgr-column-item:not(.active) .filemgr-column-action:hover{background:var(--color-blue-light);color:var(--color-navy);}
.filemgr-column-chevron{opacity:.7;text-align:right;}
.filemgr-preview-column{
  flex:1 1 560px;min-width:420px;padding:12px;border-left:1px solid var(--color-blue-light);
  background:rgba(255,255,255,.48);display:flex;flex-direction:column;gap:10px;
}
.filemgr-preview-head{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:24px;}
.filemgr-preview-head strong{
  font-size:.78rem;text-transform:uppercase;letter-spacing:.06em;color:var(--color-gray-text);
}
.filemgr-preview-head span{
  min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.82rem;color:var(--color-gray-text);
}
.filemgr-preview-stage{
  flex:1;min-height:420px;border:1px solid var(--color-blue-light);border-radius:12px;background:var(--color-white);
  overflow:hidden;display:flex;align-items:center;justify-content:center;
}
.filemgr-preview-frame{width:100%;height:100%;min-height:420px;border:0;background:var(--color-white);}
.filemgr-preview-image{max-width:100%;max-height:100%;object-fit:contain;display:block;}
.filemgr-preview-loading,.filemgr-preview-fallback{
  min-height:260px;padding:22px;text-align:center;color:var(--color-gray-text);
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;
}
.filemgr-preview-fallback span{font-size:3rem;}
.filemgr-detail{
  border:1px solid var(--color-blue-light);border-radius:14px;background:var(--color-white);
  box-shadow:var(--shadow-card);padding:18px;min-width:0;
}
.filemgr-detail-empty{
  height:100%;min-height:260px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;
  text-align:center;color:var(--color-gray-text);
}
.filemgr-detail-icon,.filemgr-detail-preview{
  width:160px;height:130px;border-radius:16px;background:var(--color-bg);border:1px solid var(--color-blue-light);
  display:flex;align-items:center;justify-content:center;font-size:3.6rem;margin:0 auto 18px;
}
.filemgr-detail-preview.folder{font-size:4rem;color:var(--color-gold);}
.filemgr-detail h2{font-size:1.05rem;margin-bottom:5px;word-break:break-word;}
.filemgr-detail-info{
  display:flex;justify-content:space-between;gap:12px;border-top:1px solid var(--color-blue-light);
  padding:10px 0;font-size:.86rem;color:var(--color-gray-text);
}
.filemgr-detail-info strong{color:var(--color-navy);}
.filemgr-detail-actions{display:flex;flex-direction:column;gap:8px;margin-top:14px;}
.filemgr-detail-actions .dash-btn-sm,.filemgr-detail-actions .btn{width:100%;text-align:center;justify-content:center;}

.filemgr-folder-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px;margin-bottom:16px;}
.filemgr-folder-tile{
  padding:14px 10px;border:1px solid var(--color-blue-light);border-radius:var(--radius);
  background:var(--color-white);box-shadow:var(--shadow-card);cursor:pointer;text-align:center;
  transition:border-color .2s,background .2s,transform .2s;overflow:hidden;
}
.filemgr-folder-tile:hover{border-color:var(--color-gold);transform:translateY(-1px);}
.filemgr-folder-tile:focus-visible{outline:3px solid rgba(201,168,76,.28);outline-offset:2px;}
.filemgr-folder-tile.drag-over{background:rgba(201,168,76,.18);border-color:var(--color-gold);}
.filemgr-tile-main{min-height:86px;display:flex;flex-direction:column;align-items:center;justify-content:center;}
.filemgr-folder-icon{font-size:1.8rem;display:block;margin-bottom:6px;}
.filemgr-folder-name{font-size:.85rem;color:var(--color-navy);font-weight:600;display:block;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.filemgr-folder-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:4px;margin-top:8px;}
.filemgr-folder-actions button{font-size:.65rem;padding:3px 7px;border:1px solid var(--color-blue-light);
  border-radius:20px;background:none;color:var(--color-gray-text);cursor:pointer;white-space:nowrap;max-width:100%;
  overflow:hidden;text-overflow:ellipsis;}
.filemgr-folder-actions button:hover{border-color:var(--color-gold);color:var(--color-gold);}
.filemgr-folder-actions button.danger:hover{border-color:#A32E22;color:#A32E22;}

.filemgr-file-list{display:flex;flex-direction:column;gap:8px;}
.filemgr-file-row{
  display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;
  background:var(--color-white);border:1px solid var(--color-blue-light);border-radius:8px;
  padding:12px 16px;cursor:grab;transition:border-color .2s,background .2s,transform .2s;
}
.filemgr-file-row:hover{border-color:var(--color-gold);background:rgba(255,255,255,.92);transform:translateY(-1px);}
.filemgr-file-row:active{cursor:grabbing;}
.filemgr-file-info{display:flex;align-items:center;gap:10px;min-width:0;}
.filemgr-file-icon{font-size:1.2rem;flex-shrink:0;}
.filemgr-file-title{font-weight:600;color:var(--color-navy);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.filemgr-file-meta{font-size:.76rem;color:var(--color-gray-text);opacity:.8;margin-left:6px;}

.share-modal-backdrop{
  position:fixed;inset:0;background:rgba(20,30,45,.55);z-index:3000;
  display:flex;align-items:center;justify-content:center;padding:20px;overflow-y:auto;
}
.share-modal-backdrop[hidden]{display:none;}
/* Modal-Box selbst wird nie höher als der Viewport (max-height) --
   nur der Inhalt (.modal-scroll-body) scrollt innen, damit der
   Schliessen-Button (Kind von .share-modal, nicht von
   .modal-scroll-body) beim Scrollen nie aus dem sichtbaren Bereich
   verschwindet. */
.share-modal{
  background:var(--color-white);border-radius:var(--radius);padding:28px;width:100%;max-width:380px;
  box-shadow:var(--shadow-card);position:relative;max-height:85vh;display:flex;flex-direction:column;overflow:hidden;
}
.share-modal h3{margin-bottom:6px;color:var(--color-navy);flex-shrink:0;}
.modal-scroll-body{overflow-y:auto;flex:1;min-height:0;}
.share-modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:14px;}

/* Modals als Vollbild-Screens auf Mobile — fühlt sich wie ein
   eigener App-Screen an statt wie ein beengtes Popup. Das
   .modal-scroll-body-Scrollprinzip (nur der Inhalt scrollt, der
   Schliessen-Button bleibt fix sichtbar) bleibt unverändert, nur die
   äusseren Masse ändern sich. */
@media (max-width:640px){
  .share-modal-backdrop{padding:0;}
  .share-modal,.obj-modal{
    max-width:100%;width:100%;height:100vh;height:100dvh;max-height:100%;border-radius:0;
    padding:calc(22px + env(safe-area-inset-top)) 20px calc(22px + env(safe-area-inset-bottom));
  }
  .obj-modal-close{top:calc(14px + env(safe-area-inset-top));right:14px;width:40px;height:40px;}
  .modal-scroll-body{padding-bottom:env(safe-area-inset-bottom);}
}

/* Fingerfreundlichere Tap-Ziele + iOS-Zoom-Fix: Safari zoomt beim
   Fokussieren eines Inputs mit Schriftgrösse <16px automatisch hinein
   — das betrifft nur diese vier Stellen (alle übrigen Formulare sind
   bereits bei 1rem/16px, siehe .auth-form input,select,textarea). */
@media (max-width:640px){
  .dash-btn-sm{min-height:44px;display:inline-flex;align-items:center;justify-content:center;}
  .dash-btn-sm[hidden]{display:none;}
  .dash-btn-row{gap:10px;}
  .dash-btn-row .dash-btn-sm,.dash-btn-row .btn{flex:1 1 150px;}
  .cal-jump-search input,
  .admin-quickbar-search input,
  .obj-send-tab-panel input,.obj-send-tab-panel select,
  .msg-location-picker select{font-size:16px;}
}

/* Objekte — Spalten-Ansicht */
.obj-modal{max-width:720px;}
/* Breitere Variante fuer Formulare mit vielen Feldern (z.B. Kontakt
   anlegen/bearbeiten mit Kategorien, 3 Telefon-/E-Mail-Feldern usw.) --
   width:100% des gepolsterten Flex-Backdrops sorgt dafuer, dass sie auf
   Tablet-Breite trotzdem nie ueber den Viewport hinausragt, ganz ohne
   eigene Breakpoints. Auf Mobile greift wie bei allen .obj-modal-
   Dialogen die Vollbild-Regel weiter unten. */
.obj-modal-wide{max-width:860px;}
.obj-modal-close{
  position:absolute;top:16px;right:16px;width:30px;height:30px;border-radius:50%;border:1px solid var(--color-blue-light);
  background:var(--color-white);cursor:pointer;font-size:.9rem;color:var(--color-gray-text);flex-shrink:0;z-index:1;
}
.obj-modal-close:hover{border-color:var(--color-gold);color:var(--color-gold);}
.obj-columns-wrap{overflow-x:auto;padding-bottom:8px;}
.obj-columns{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;}
.obj-flow-guide{
  display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:18px 0 20px;
}
.obj-flow-guide div{
  display:grid;grid-template-columns:auto minmax(0,1fr);gap:4px 10px;align-items:start;
  padding:12px 14px;border:1px solid var(--color-blue-light);border-radius:14px;background:var(--color-white);
  box-shadow:0 8px 22px rgba(13,36,64,.05);
}
.obj-flow-guide span{
  grid-row:1 / span 2;width:28px;height:28px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;
  background:var(--color-gold);color:var(--color-navy-deep);font-weight:900;font-size:.8rem;
}
.obj-flow-guide strong{color:var(--color-navy);font-size:.86rem;line-height:1.25;}
.obj-flow-guide small{color:var(--color-gray-text);font-size:.74rem;line-height:1.35;}
.obj-hierarchy{display:grid;grid-template-columns:minmax(240px,.85fr) minmax(280px,1fr) minmax(300px,1fr) minmax(320px,1.05fr);gap:16px;align-items:stretch;}
.obj-pane{
  background:var(--color-white);border:1px solid var(--color-blue-light);border-radius:var(--radius);
  box-shadow:var(--shadow-card);padding:16px;min-height:520px;min-width:0;
}
.obj-pane-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:12px;}
.obj-pane-head strong{display:block;color:var(--color-navy);font-size:1rem;}
.obj-pane-head span{display:block;color:var(--color-gray-text);font-size:.78rem;margin-top:3px;}
.obj-pane-list{display:flex;flex-direction:column;gap:8px;max-height:calc(100vh - 310px);overflow:auto;padding-right:2px;}
.obj-hierarchy-row{text-align:left;position:relative;}
.obj-hierarchy-row.active{border-color:var(--color-gold);background:rgba(201,168,76,.12);}
.obj-row-pill{
  display:inline-flex;align-items:center;width:max-content;margin-top:7px;padding:3px 8px;border-radius:999px;
  background:var(--color-blue-light);color:var(--color-navy);font-size:.68rem;font-weight:800;
}
.obj-contact-badges{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px;}
.obj-contact-badges .status-badge{margin:0;}
.obj-registration-panel{
  display:flex;align-items:center;justify-content:space-between;gap:14px;
  margin:0 0 14px;padding:14px;border:1px solid var(--color-blue-light);
  border-radius:14px;background:rgba(255,255,255,.72);
}
.obj-registration-panel strong{display:block;color:var(--color-navy);font-size:1rem;margin-top:2px;}
.obj-registration-panel .status-badge{white-space:nowrap;}
.obj-unit-group{display:flex;flex-direction:column;gap:6px;}
.obj-unit-group h3{font-size:.75rem;text-transform:uppercase;letter-spacing:.06em;color:var(--color-gray-text);margin:12px 0 2px;}
.obj-unit-group:first-child h3{margin-top:0;}
.obj-detail-card{display:flex;flex-direction:column;gap:12px;}
.obj-detail-card h2{font-size:1.35rem;margin:0;color:var(--color-navy);word-break:break-word;}
.obj-step-label{font-size:.72rem;text-transform:uppercase;letter-spacing:.08em;color:var(--color-gold);font-weight:900;}
.obj-detail-stats{display:flex;flex-wrap:wrap;gap:8px;margin:4px 0;}
.obj-detail-stats span{
  display:inline-flex;padding:6px 10px;border-radius:999px;background:var(--color-blue-light);
  color:var(--color-navy);font-size:.78rem;font-weight:800;
}
.obj-dossier-card{
  display:flex;flex-direction:column;gap:12px;padding:14px;border:1px solid var(--color-blue-light);
  border-radius:14px;background:linear-gradient(135deg,rgba(255,255,255,.95),rgba(222,235,247,.55));
}
.obj-dossier-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;}
.obj-dossier-head strong{display:block;color:var(--color-navy);font-size:1rem;margin-top:2px;word-break:break-word;}
.obj-dossier-head > span{
  flex:0 0 auto;padding:6px 10px;border-radius:999px;background:rgba(201,168,76,.14);
  color:var(--color-navy);font-size:.76rem;font-weight:900;
}
.obj-dossier-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;}
.obj-dossier-stats div{
  padding:9px 10px;border:1px solid rgba(210,225,239,.9);border-radius:12px;background:rgba(255,255,255,.72);
}
.obj-dossier-stats strong{display:block;color:var(--color-gold);font-family:var(--font-heading);font-size:1.15rem;line-height:1;}
.obj-dossier-stats span{display:block;color:var(--color-navy);font-size:.72rem;font-weight:800;margin-top:4px;}
.obj-dossier-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;}
.obj-dossier-actions a{
  display:flex;align-items:center;justify-content:center;min-height:38px;padding:8px 10px;border:1px solid var(--color-blue-light);
  border-radius:999px;background:var(--color-white);color:var(--color-navy);font-size:.78rem;font-weight:900;text-decoration:none;text-align:center;
}
.obj-dossier-actions a:hover,.obj-dossier-actions a:focus-visible{border-color:var(--color-gold);box-shadow:0 0 0 3px rgba(201,168,76,.16);outline:none;}
.obj-detail-info{display:flex;flex-direction:column;border:1px solid var(--color-blue-light);border-radius:10px;overflow:hidden;}
.obj-detail-info div{display:flex;justify-content:space-between;gap:12px;padding:10px 12px;border-bottom:1px solid var(--color-blue-light);font-size:.86rem;}
.obj-detail-info div:last-child{border-bottom:none;}
.obj-detail-info strong{color:var(--color-navy);}
.obj-detail-info span{color:var(--color-gray-text);text-align:right;word-break:break-word;}
.obj-privacy-note{padding:12px;border-radius:10px;background:rgba(201,168,76,.11);font-size:.84rem;color:var(--color-navy);line-height:1.45;}
.obj-next-steps{
  display:flex;flex-direction:column;gap:8px;padding:12px;border:1px solid var(--color-blue-light);
  border-radius:12px;background:linear-gradient(135deg,rgba(222,235,247,.65),rgba(255,255,255,.9));
}
.obj-next-steps > strong{font-size:.85rem;color:var(--color-navy);}
.obj-next-step{
  width:100%;display:flex;gap:9px;align-items:flex-start;padding:7px 6px;border:0;border-radius:9px;
  background:transparent;color:var(--color-gray-text);font:inherit;font-size:.82rem;text-align:left;cursor:pointer;
}
.obj-next-step:hover,.obj-next-step:focus-visible{background:rgba(201,168,76,.13);outline:none;}
.obj-next-step span{font-weight:900;color:var(--color-gold);line-height:1.2;}
.obj-next-step b{display:block;color:var(--color-navy);font-size:.82rem;}
.obj-next-step small{display:block;color:var(--color-gray-text);margin-top:1px;}
.obj-next-step.done{opacity:.72;}
.obj-next-step.done span{color:#1F6A55;}
.obj-context-action,.obj-guided-empty{
  display:flex;flex-direction:column;gap:8px;padding:12px;border:1px dashed var(--color-blue-light);
  border-radius:12px;background:rgba(255,255,255,.72);
}
.obj-context-action strong,.obj-guided-empty strong{color:var(--color-navy);font-size:.9rem;}
.obj-context-action span,.obj-guided-empty span{color:var(--color-gray-text);font-size:.78rem;line-height:1.4;}
.obj-quick-types{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;}
.obj-quick-type{
  display:flex;align-items:center;gap:8px;min-height:44px;padding:9px 10px;border:1px solid var(--color-blue-light);
  border-radius:10px;background:var(--color-bg);color:var(--color-navy);text-align:left;font:inherit;font-size:.78rem;font-weight:800;cursor:pointer;
}
.obj-quick-type:hover,.obj-quick-type:focus-visible{border-color:var(--color-gold);background:var(--color-white);outline:none;}
.obj-quick-type span{
  width:24px;height:24px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;
  background:rgba(201,168,76,.18);color:var(--color-gold);font-weight:900;flex-shrink:0;
}
.obj-empty-state{height:100%;min-height:360px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:10px;color:var(--color-gray-text);}
.obj-hidden-select{position:absolute!important;width:1px!important;height:1px!important;opacity:0!important;pointer-events:none!important;}
.obj-helper-text{margin:0 0 8px;color:var(--color-gray-text);font-size:.78rem;line-height:1.4;}
.obj-unit-type-picker{
  display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:2px 0 8px;
}
.obj-unit-type-picker.compact{grid-template-columns:repeat(3,minmax(0,1fr));}
.obj-type-card{
  display:grid;grid-template-columns:auto minmax(0,1fr);gap:8px;align-items:center;min-height:58px;
  padding:10px;border:1px solid var(--color-blue-light);border-radius:12px;background:var(--color-bg);
  color:var(--color-navy);font:inherit;text-align:left;cursor:pointer;transition:border-color .2s,background .2s,box-shadow .2s;
}
.obj-type-card:hover,.obj-type-card:focus-visible{border-color:var(--color-gold);background:var(--color-white);outline:none;}
.obj-type-card.active{border-color:var(--color-gold);background:rgba(201,168,76,.13);box-shadow:0 0 0 1px rgba(201,168,76,.3);}
.obj-type-card .obj-type-icon{
  width:30px;height:30px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;
  background:var(--color-white);color:var(--color-gold);font-weight:900;box-shadow:inset 0 0 0 1px var(--color-blue-light);
}
.obj-type-card strong{display:block;font-size:.84rem;line-height:1.15;}
.obj-type-card small{display:block;margin-top:2px;color:var(--color-gray-text);font-size:.7rem;line-height:1.25;}
.obj-type-card.compact{min-height:50px;padding:8px;}
.obj-type-card.compact small{display:none;}
.obj-assignment-panel{
  margin-top:22px;padding:16px;border:1px solid var(--color-blue-light);border-radius:12px;background:var(--color-bg);
}
.obj-assignment-panel h3{font-size:1rem;margin-bottom:4px;}
.obj-assignment-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:14px;}
.obj-assignment-grid section{background:var(--color-white);border:1px solid var(--color-blue-light);border-radius:10px;padding:12px;min-width:0;}
.obj-assignment-grid h4{font-size:.85rem;color:var(--color-navy);margin-bottom:8px;}
.obj-assignment-inline{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;margin-top:8px;}
.obj-assignment-inline input,.obj-assignment-inline select{min-width:0;}
.obj-assignment-row{
  display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 0;border-bottom:1px solid var(--color-blue-light);
}
.obj-assignment-row:last-child{border-bottom:none;}
.obj-assignment-row span{min-width:0;}
.obj-assignment-row strong{display:block;font-size:.82rem;color:var(--color-navy);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.obj-assignment-row small{display:block;font-size:.72rem;color:var(--color-gray-text);margin-top:2px;}
.obj-private-doc-form{display:flex;flex-direction:column;gap:8px;margin:10px 0;}
.obj-private-doc-form input,.obj-private-doc-form select{
  width:100%;min-width:0;border:1px solid var(--color-blue-light);border-radius:8px;
  background:var(--color-bg);padding:9px 10px;font-family:inherit;font-size:.85rem;color:var(--color-navy);
}
.obj-column{
  min-width:0;background:var(--color-white);border:1px solid var(--color-blue-light);
  border-radius:var(--radius);box-shadow:var(--shadow-card);padding:14px;display:flex;flex-direction:column;
  max-height:70vh;
}
.obj-column-header{display:flex;align-items:center;gap:8px;margin-bottom:10px;font-weight:600;color:var(--color-navy);}
.obj-column-header span:first-child{flex:1;font-size:.92rem;}
.obj-column-count{
  background:var(--color-bg);color:var(--color-gray-text);font-size:.72rem;font-weight:700;
  padding:2px 8px;border-radius:20px;
}
.obj-add-btn{
  width:28px;height:28px;border-radius:50%;border:1px solid var(--color-blue-light);background:none;
  color:var(--color-navy);cursor:pointer;font-size:.85rem;line-height:1;flex-shrink:0;
}
.obj-add-btn:hover{border-color:var(--color-gold);color:var(--color-gold);}
.obj-column-search{margin-bottom:10px;font-size:.8rem;padding:8px 12px;}
.obj-column-list{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:6px;}
.obj-row{
  display:block;width:100%;text-align:left;padding:9px 10px;border:1px solid var(--color-blue-light);
  border-radius:8px;background:var(--color-bg);cursor:pointer;transition:border-color .2s,background .2s;
}
.obj-row:hover{border-color:var(--color-gold);background:var(--color-white);}
.obj-row strong{display:block;font-size:.85rem;color:var(--color-navy);}
.obj-row-meta{display:block;font-size:.74rem;color:var(--color-gray-text);margin-top:2px;}
.obj-action-row{
  border-style:dashed;background:rgba(201,168,76,.08);
}
.obj-action-row strong{color:var(--color-gold);}
.obj-archive-group{padding-bottom:8px;border-bottom:1px solid var(--color-blue-light);margin-bottom:4px;}
.obj-archive-row{background:linear-gradient(135deg,rgba(222,235,247,.72),rgba(255,255,255,.92));}
.obj-archive-row strong{font-size:.82rem;}
.obj-archive-hint{margin:0;color:var(--color-gray-text);font-size:.84rem;line-height:1.45;}
.obj-subfolder-tags{display:flex;flex-wrap:wrap;gap:7px;}
.obj-subfolder-tags span{
  display:inline-flex;padding:6px 9px;border-radius:999px;background:var(--color-blue-light);
  color:var(--color-navy);font-size:.74rem;font-weight:700;
}
.obj-archive-docs{
  display:flex;flex-direction:column;gap:7px;padding:12px;border:1px solid var(--color-blue-light);
  border-radius:12px;background:var(--color-bg);
}
.obj-archive-docs > strong{font-size:.85rem;color:var(--color-navy);}
.obj-archive-upload-form,.obj-existing-doc-form{
  padding:12px;border:1px dashed var(--color-blue-light);border-radius:12px;background:rgba(255,255,255,.72);
}
.obj-existing-doc-form{margin-top:10px;}
.auth-form select[multiple]{
  min-height:118px;padding:8px;border-radius:12px;line-height:1.4;
}

.obj-listing-checklist{
  display:flex;flex-wrap:wrap;gap:6px 14px;padding:10px 12px;
  background:var(--color-bg);border-radius:8px;margin:4px 0 12px;font-size:.78rem;
}
.obj-listing-checklist-title{font-weight:700;color:var(--color-navy);width:100%;}
.obj-listing-check-item{color:var(--color-gray-text);}
.obj-listing-check-item.ok{color:#2B9274;font-weight:600;}
.obj-modal-section-label{
  display:block;margin:18px 0 4px;font-size:.72rem;font-weight:700;letter-spacing:.06em;
  text-transform:uppercase;color:var(--color-gray-text);
}
.obj-modal-section-label:first-child{margin-top:0;}

.obj-send-section{margin-top:16px;}
.obj-send-panel{
  margin-top:10px;padding:14px;border:1px solid var(--color-blue-light);border-radius:8px;background:var(--color-bg);
}
.obj-send-panel[hidden]{display:none;}
.obj-send-tabs{display:flex;gap:8px;margin-bottom:10px;}
.obj-send-tab-btn{opacity:.6;}
.obj-send-tab-btn.active{opacity:1;border-color:var(--color-gold);color:var(--color-gold);}
.obj-send-tab-panel[hidden]{display:none;}
.obj-send-tab-panel input,.obj-send-tab-panel textarea,.obj-send-tab-panel select{
  width:100%;margin-bottom:8px;padding:8px 12px;border:1px solid var(--color-blue-light);border-radius:6px;
  font-family:inherit;font-size:.85rem;background:var(--color-white);
}

@media (max-width:1100px){
  .obj-flow-guide{grid-template-columns:repeat(2,minmax(0,1fr));}
  .obj-columns{grid-template-columns:repeat(2,1fr);}
  .obj-hierarchy{grid-template-columns:1fr 1fr;}
  .obj-pane-detail{grid-column:auto;min-height:auto;}
  .obj-unit-type-picker.compact{grid-template-columns:repeat(2,minmax(0,1fr));}
}
@media (max-width:520px){
  .obj-flow-guide{grid-template-columns:1fr;gap:8px;margin:14px 0;}
  .obj-flow-guide div{padding:10px 12px;}
  .obj-columns{grid-template-columns:1fr;}
  .obj-hierarchy{grid-template-columns:1fr;}
  .obj-pane{min-height:auto;padding:12px;}
  .obj-pane-list{max-height:none;}
  .obj-assignment-grid{grid-template-columns:1fr;}
  .obj-assignment-inline{grid-template-columns:1fr;}
  .obj-unit-type-picker,.obj-unit-type-picker.compact{grid-template-columns:1fr;}
  .obj-quick-types{grid-template-columns:1fr;}
  .obj-type-card{min-height:52px;}
}

/* Für Sie freigegebene Dokumente (Nutzer) */
.doc-confirmed-badge{color:#1F6A55;font-size:.78rem;font-weight:600;}

.archive-control-card{display:flex;flex-direction:column;gap:10px;}
.archive-toolbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;}
.archive-toolbar input{flex:1;min-width:240px;}
.archive-grid{display:grid;grid-template-columns:1fr;gap:18px;}
.archive-section{margin:0;}
.archive-section-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px;}
.archive-section-head h2{margin:0;}
.archive-table td strong{color:var(--color-navy);}
.archive-restore-btn{white-space:nowrap;}
.audit-control-card{display:flex;flex-direction:column;gap:10px;}
.audit-toolbar{display:grid;grid-template-columns:minmax(220px,1fr) minmax(180px,240px) minmax(160px,220px) auto auto;gap:12px;align-items:center;}
.audit-toolbar input,.audit-toolbar select{min-width:0;}
.audit-summary{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:12px;}
.audit-table td strong{display:block;color:var(--color-navy);}
.audit-table td small{display:block;color:var(--color-gray-text);font-size:.72rem;max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.audit-detail-modal{max-width:820px;}
.audit-detail-summary{
  display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:14px 0 16px;
}
.audit-detail-summary div{
  padding:10px 12px;border:1px solid var(--color-blue-light);border-radius:10px;background:var(--color-bg);
}
.audit-detail-summary span{
  display:block;margin-bottom:3px;font-size:.68rem;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--color-gray-text);
}
.audit-detail-summary strong{display:block;color:var(--color-navy);font-size:.86rem;word-break:break-word;}
.audit-detail-changes{
  margin-bottom:14px;padding:12px;border:1px solid var(--color-blue-light);border-radius:10px;background:#fff;
}
.audit-detail-changes .doc-meta{margin-top:4px;word-break:break-word;}
.audit-detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;}
.audit-detail-block{
  min-width:0;border:1px solid var(--color-blue-light);border-radius:10px;background:var(--color-bg);overflow:hidden;
}
.audit-detail-block > strong{
  display:block;padding:10px 12px;border-bottom:1px solid var(--color-blue-light);color:var(--color-navy);font-size:.82rem;
}
.audit-detail-block pre{
  margin:0;max-height:320px;overflow:auto;padding:12px;font-size:.76rem;line-height:1.45;color:var(--color-gray-text);
  white-space:pre-wrap;word-break:break-word;
}

@media (max-width:900px){
  .archive-control-card,.audit-control-card{padding:22px 18px;}
  .archive-toolbar{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;}
  .archive-toolbar input{min-width:0;}
  .audit-toolbar{grid-template-columns:1fr 1fr;}
  .audit-toolbar input{grid-column:1 / -1;}
  .audit-toolbar button{grid-column:1 / -1;justify-content:center;}
  .archive-section{padding:22px 18px;}
  .archive-section-head h2{font-size:1rem;}
  .audit-summary{gap:8px;}
  .audit-detail-grid{grid-template-columns:1fr;}
}

@media (max-width:640px){
  .archive-toolbar{display:flex;flex-direction:column;align-items:stretch;}
  .archive-toolbar input,.archive-toolbar button{width:100%;min-width:0;}
  .archive-section-head{align-items:flex-start;}
  .archive-section .dash-table-wrap{overflow:visible;}
  .archive-table{min-width:0!important;}
  .archive-table tbody,.archive-table tr,.archive-table td{display:block;width:100%;}
  .archive-table tr:first-child{display:none;}
  .archive-table tr{
    border:1px solid var(--color-blue-light);border-radius:16px;margin:0 0 12px;padding:12px;
    background:#fff;box-shadow:0 4px 12px rgba(13,36,64,.05);
  }
  .archive-table td{border:0!important;padding:7px 0!important;white-space:normal!important;}
  .archive-table td[data-label]::before{
    content:attr(data-label);display:block;font-size:.72rem;font-weight:700;
    color:var(--color-gray-text);text-transform:uppercase;letter-spacing:.06em;margin-bottom:3px;
  }
  .archive-restore-btn{width:100%;justify-content:center;margin-top:4px;}
  .audit-toolbar{display:flex;flex-direction:column;align-items:stretch;}
  .audit-toolbar input,.audit-toolbar select,.audit-toolbar button{width:100%;min-width:0;}
  .audit-table{min-width:0!important;}
  .audit-table tbody,.audit-table tr,.audit-table td{display:block;width:100%;}
  .audit-table tr:first-child{display:none;}
  .audit-table tr{
    border:1px solid var(--color-blue-light);border-radius:16px;margin:0 0 12px;padding:12px;
    background:#fff;box-shadow:0 4px 12px rgba(13,36,64,.05);
  }
  .audit-table td{border:0!important;padding:7px 0!important;white-space:normal!important;}
  .audit-table td[data-label]::before{
    content:attr(data-label);display:block;font-size:.72rem;font-weight:700;
    color:var(--color-gray-text);text-transform:uppercase;letter-spacing:.06em;margin-bottom:3px;
  }
  .audit-table td small{max-width:100%;white-space:normal;overflow-wrap:anywhere;}
  .audit-detail-summary{grid-template-columns:1fr;}
  .audit-detail-block pre{max-height:260px;font-size:.72rem;}
}

/* Termine — Wochenübersicht (Admin) */
.cal-week-nav{display:flex;align-items:center;gap:12px;margin-bottom:16px;flex-wrap:wrap;}
.cal-week-label{font-weight:600;color:var(--color-navy);flex-grow:1;text-align:center;font-size:.95rem;}
.cal-jump-search{position:relative;margin-left:auto;}
.cal-jump-search input{
  width:240px;min-height:40px;padding:8px 14px;border:1px solid var(--color-blue-light);border-radius:50px;
  font-size:.82rem;font-family:var(--font-body);background:var(--color-white);
}
.cal-jump-search input:focus{outline:none;border-color:var(--color-gold);}
.cal-jump-results{
  position:absolute;top:calc(100% + 6px);right:0;width:280px;max-height:260px;overflow-y:auto;
  background:var(--color-white);border:1px solid var(--color-blue-light);border-radius:8px;
  box-shadow:var(--shadow-card);z-index:50;
}
.cal-jump-result-item{
  display:block;width:100%;text-align:left;padding:9px 14px;border-bottom:1px solid var(--color-blue-light);
  font-size:.82rem;color:var(--color-navy);cursor:pointer;background:none;
}
.cal-jump-result-item:last-child{border-bottom:none;}
.cal-jump-result-item:hover{background:var(--color-bg);}
.cal-jump-result-title{font-weight:600;display:block;}
.cal-jump-result-meta{color:var(--color-gray-text);font-size:.76rem;}
.cal-jump-no-results{padding:12px 14px;font-size:.82rem;color:var(--color-gray-text);}
@keyframes calJumpHighlight{
  0%,100%{box-shadow:0 0 0 0 rgba(201,168,76,0);}
  50%{box-shadow:0 0 0 4px rgba(201,168,76,.65);}
}
.cal-jump-highlight{animation:calJumpHighlight 1s ease-in-out 3;z-index:5;}
.cal-grid-wrap{overflow-x:auto;border:1px solid var(--color-blue-light);border-radius:var(--radius);}
.cal-grid-wrap{-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain;}
.cal-grid{display:flex;min-width:760px;}
.cal-time-col{width:56px;flex-shrink:0;position:sticky;left:0;background:var(--color-white);z-index:2;border-right:1px solid var(--color-blue-light);}
.cal-corner{height:52px;border-bottom:1px solid var(--color-blue-light);}
.cal-hour-label{
  height:48px;box-sizing:border-box;display:flex;align-items:flex-start;justify-content:flex-end;
  padding:2px 8px 0 0;font-size:.7rem;color:var(--color-gray-text);border-bottom:1px solid var(--color-blue-light);
}
.cal-day-col{flex:1;min-width:100px;border-right:1px solid var(--color-blue-light);}
/* Auf schmalen Screens (wo .cal-grid ohnehin horizontal scrollen muss,
   da min-width:760px) macht scroll-snap (egal ob mandatory oder
   proximity) auf echten Touch-Geraeten Taps auf die Stundenfelder
   unzuverlaessig -- iOS/Android werten die minimale, unvermeidliche
   Fingerbewegung beim Antippen als Scroll-Geste, sobald der Finger
   innerhalb eines Snap-Containers steht, und unterdruecken danach
   den Click komplett. In Playwright (perfekt stillstehender
   synthetischer Tap) unsichtbar, auf einem echten Gerät aber
   reproduzierbar ("Popup öffnet sich gar nicht"). Deshalb bewusst
   KEIN Snap mehr -- normales, zuverlässiges Scrollen ohne die
   Wisch-Politur, aber Taps funktionieren garantiert. */
@media (max-width:900px){
  .cal-day-col{min-width:78vw;}
}
.cal-day-col:last-child{border-right:none;}
.cal-day-head{
  height:52px;box-sizing:border-box;display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:2px;font-size:.78rem;font-weight:600;color:var(--color-navy);border-bottom:1px solid var(--color-blue-light);
  background:var(--color-bg);text-transform:uppercase;letter-spacing:.03em;
}
.cal-day-head.today{color:var(--color-gold);}
.cal-day-body{position:relative;}
.cal-hour-slot{height:48px;box-sizing:border-box;border-bottom:1px solid var(--color-blue-light);transition:background .15s;cursor:pointer;position:relative;}
.cal-hour-slot:hover{background:rgba(201,168,76,.1);}
.cal-hour-add-btn{
  position:absolute;top:2px;right:2px;width:24px;height:24px;line-height:20px;padding:0;
  border-radius:50%;border:1px solid var(--color-blue-light);background:var(--color-white);
  color:var(--color-blue-mid);font-size:.8rem;font-weight:700;cursor:pointer;z-index:3;
  opacity:.58;transition:opacity .15s;
}
.cal-hour-slot:hover .cal-hour-add-btn, .cal-hour-add-btn:focus-visible{opacity:1;}
.cal-hour-add-btn:hover{background:var(--color-gold);border-color:var(--color-gold);color:var(--color-navy-deep);}
.cal-event{
  position:absolute;border-radius:6px;font-size:.72rem;line-height:1.25;
  overflow:hidden;padding:3px 6px;cursor:pointer;border:1px solid transparent;z-index:1;
  touch-action:manipulation;
}
.cal-event.pending{background:rgba(201,168,76,.2);border-color:var(--color-gold);color:#7a5f16;}
.cal-event.confirmed{background:rgba(46,109,164,.16);border-color:var(--color-blue-mid);color:var(--color-navy);}
.cal-event.blocked{
  background:repeating-linear-gradient(45deg,rgba(24,24,24,.07) 0 6px,transparent 6px 12px);
  border-color:var(--color-blue-light);color:var(--color-gray-text);
}
/* Termine mit Teilnehmern: "appt-mine" (Julia nimmt teil, blockiert
   ihre Zeit) solide wie ein bestätigter Termin, nur in Teal statt Blau
   zur Unterscheidung; "appt-other" (Julia nimmt nicht teil, rein
   informativ) bewusst blass/gestrichelt, damit auf einen Blick klar
   ist, dass dieser Slot für Website-Anfragen weiterhin frei bleibt. */
.cal-event.appt-mine{background:rgba(43,146,116,.18);border-color:#2B9274;color:#1F6A55;}
.cal-event.appt-other{background:rgba(43,146,116,.07);border-style:dashed;border-color:rgba(43,146,116,.5);color:#3E8571;}
.cal-event-title{font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;}
.cal-event-time{opacity:.85;display:block;}
/* Shared popover, positioned via JS (position:fixed) instead of being
   nested inside each event — nesting it there meant it lived inside
   .cal-grid-wrap's horizontal scroll container, which (per the CSS
   overflow spec) silently forces overflow-y:auto too as soon as
   overflow-x is non-visible, clipping the popover's own vertical
   overflow. A single fixed-position element sidesteps that entirely. */
.cal-event-detail{
  position:fixed;box-sizing:border-box;width:380px;z-index:2000;max-height:calc(100vh - 32px);overflow-y:auto;
  background:var(--color-navy-deep);color:var(--color-white);border-radius:10px;padding:14px 18px;
  box-shadow:0 12px 28px rgba(13,36,64,.35);font-size:.8rem;line-height:1.38;
  overscroll-behavior:contain;-webkit-overflow-scrolling:touch;
  opacity:0;visibility:hidden;transform:translateY(4px);pointer-events:none;
  transition:opacity .15s var(--ease),transform .15s var(--ease),visibility .15s;
}
.cal-event-detail.show{opacity:1;visibility:visible;transform:translateY(0);pointer-events:auto;}
.cal-event-detail p{margin:0 0 6px;color:rgba(255,255,255,.92);}
.cal-event-detail p:last-of-type{margin-bottom:0;}
.cal-event-detail strong{color:var(--color-gold-light);}
.cal-event-detail-actions{display:flex;gap:6px;flex-wrap:wrap;margin-top:10px;}
.cal-event-detail-actions button{
  min-height:36px;padding:6px 12px;border-radius:50px;font-size:.72rem;font-weight:600;border:1px solid rgba(255,255,255,.3);
  color:var(--color-white);transition:border-color .2s,background .2s;
  touch-action:manipulation;
}
.cal-event-detail-actions button:hover{border-color:var(--color-gold);background:rgba(255,255,255,.08);}
.cal-event-detail-actions button.cal-confirm-btn{background:var(--color-gold);color:var(--color-navy-deep);border-color:var(--color-gold);}
.cal-event-detail-actions button.cal-confirm-btn:hover{background:var(--color-gold-light);}
.cal-event-detail-actions button.cal-slot-new-btn{background:var(--color-gold);color:var(--color-navy-deep);border-color:var(--color-gold);}
.cal-event-detail-actions button.cal-slot-new-btn:hover{background:var(--color-gold-light);}
.cal-event-detail-actions button.cal-delete-btn{border-color:rgba(240,120,110,.6);color:#F5B8B2;}
.cal-event-detail-actions button.cal-delete-btn:hover{border-color:#F0786E;background:rgba(240,120,110,.12);}
.cal-event-detail-actions button.cal-delete-appt-btn{border-color:rgba(240,120,110,.6);color:#F5B8B2;}
.cal-event-detail-actions button.cal-delete-appt-btn:hover{border-color:#F0786E;background:rgba(240,120,110,.12);}
.cal-checkbox-label{display:flex;align-items:center;gap:8px;font-size:.78rem;color:rgba(255,255,255,.9);}
.cal-checkbox-label input{width:auto;min-width:18px;min-height:18px;accent-color:var(--color-gold);}
.obj-category-checks{
  display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px 16px;padding:12px 14px;
  background:var(--color-bg);border-radius:8px;margin-bottom:4px;
}
.obj-category-checks .cal-checkbox-label{color:var(--color-gray-text);font-size:.85rem;}
.obj-address-block{
  display:flex;flex-direction:column;gap:10px;padding:12px 14px;border:1px solid var(--color-blue-light);
  border-radius:8px;background:rgba(255,255,255,.55);
}
.obj-address-title{font-size:.78rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--color-navy);}
.obj-address-type-checks{
  display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:8px 14px;
}
.obj-address-type-checks .cal-checkbox-label{
  align-items:flex-start;color:var(--color-gray-text);font-size:.82rem;line-height:1.35;
}
.obj-address-type-checks .cal-checkbox-label input{margin-top:2px;flex-shrink:0;}
.cal-picker-label{font-size:.72rem;color:rgba(255,255,255,.7);margin-top:2px;}
.cal-participant-rows{display:flex;flex-direction:column;gap:7px;}
.cal-participant-row{
  display:grid;grid-template-columns:minmax(0,1fr) auto;gap:7px 10px;align-items:center;
  padding:8px;border:1px solid rgba(255,255,255,.12);border-radius:8px;background:rgba(255,255,255,.035);
}
.cal-participant-row select{min-width:0;}
.cal-participant-row .na-participant-category{grid-column:1;grid-row:1;}
.cal-participant-row .na-participant-select{grid-column:1;grid-row:2;}
.cal-participant-row .cal-remove-participant-btn{grid-column:2;grid-row:1 / span 2;align-self:center;}
.cal-add-participant-btn,.cal-remove-participant-btn{
  min-height:38px;padding:7px 12px;border-radius:50px;font-size:.72rem;font-weight:600;
  border:1px solid rgba(255,255,255,.28);color:var(--color-white);background:rgba(255,255,255,.04);
  transition:border-color .2s,background .2s;touch-action:manipulation;
}
.cal-add-participant-btn{align-self:flex-start;border-color:rgba(212,175,55,.75);color:var(--color-gold);}
.cal-add-participant-btn:hover,.cal-remove-participant-btn:hover{border-color:var(--color-gold);background:rgba(255,255,255,.08);}
.cal-remove-participant-btn{white-space:nowrap;color:rgba(255,255,255,.78);}
.cal-participant-cat{color:rgba(255,255,255,.55);font-size:.7rem;}
.cal-new-appt-form button.cal-save-appt-btn{
  padding:6px 12px;border-radius:50px;font-size:.72rem;font-weight:600;border:1px solid var(--color-gold);
  background:var(--color-gold);color:var(--color-navy-deep);transition:background .2s;
}
.cal-new-appt-form button.cal-save-appt-btn:hover{background:var(--color-gold-light);}
.cal-new-appt-actions{
  position:sticky;bottom:-15px;z-index:2;display:flex;gap:6px;flex-wrap:wrap;
  margin:2px -2px 0;padding:8px 2px 2px;
  background:linear-gradient(180deg,rgba(13,36,64,0),var(--color-navy-deep) 28%);
}
.cal-new-appt-form button.cal-delete-appt-btn,.cal-new-appt-form button.cal-cancel-appt-edit-btn,.cal-new-appt-form button.cal-cancel-appt-btn{
  padding:6px 12px;border-radius:50px;font-size:.72rem;font-weight:600;border:1px solid rgba(255,255,255,.3);
  color:var(--color-white);transition:border-color .2s,background .2s;
}
.cal-new-appt-form button.cal-delete-appt-btn{border-color:rgba(240,120,110,.6);color:#F5B8B2;}
.cal-new-appt-form button.cal-delete-appt-btn:hover{border-color:#F0786E;background:rgba(240,120,110,.12);}
.cal-new-appt-form button.cal-cancel-appt-edit-btn:hover,.cal-new-appt-form button.cal-cancel-appt-btn:hover{border-color:var(--color-gold);background:rgba(255,255,255,.08);}
.cal-new-appt-form{display:flex;flex-direction:column;gap:7px;margin-top:6px;}
.cal-new-appt-time-row{display:grid;grid-template-columns:1fr 1fr;gap:8px;}
.cal-new-appt-form input,.cal-new-appt-form select,.cal-new-appt-form textarea{
  min-height:38px;padding:7px 10px;border-radius:6px;border:1px solid rgba(255,255,255,.25);
  background:rgba(255,255,255,.08);color:var(--color-white);font-family:inherit;font-size:.78rem;
}
.cal-new-appt-form input::placeholder,.cal-new-appt-form textarea::placeholder{color:rgba(255,255,255,.55);}
.cal-new-appt-form select option{color:#000;}
.cal-new-appt-form textarea{resize:vertical;min-height:42px;}
.cal-new-appt-form .cal-confirm-btn{align-self:flex-start;margin-top:2px;}
.cal-new-appt-status{font-size:.72rem;color:var(--color-gold-light);margin:2px 0 0;}
.cal-legend{display:flex;gap:18px;flex-wrap:wrap;margin-top:14px;}
.cal-legend-item{display:flex;align-items:center;gap:6px;font-size:.8rem;color:var(--color-gray-text);}
.cal-swatch{width:14px;height:14px;border-radius:3px;display:inline-block;}
.cal-swatch.pending{background:rgba(201,168,76,.35);border:1px solid var(--color-gold);}
.cal-swatch.confirmed{background:rgba(46,109,164,.3);border:1px solid var(--color-blue-mid);}
.cal-swatch.blocked{background:repeating-linear-gradient(45deg,rgba(24,24,24,.12) 0 4px,transparent 4px 8px);border:1px solid var(--color-blue-light);}
.cal-swatch.appt-mine{background:rgba(43,146,116,.25);border:1px solid #2B9274;}
.cal-swatch.appt-other{background:rgba(43,146,116,.1);border:1px dashed rgba(43,146,116,.7);}

/* Nachrichten */
.msg-admin-layout{display:flex;gap:0;background:var(--color-white);border-radius:var(--radius);box-shadow:var(--shadow-card);overflow:hidden;border:1px solid var(--color-blue-light);}
.msg-partner-list{width:240px;flex-shrink:0;border-right:1px solid var(--color-blue-light);max-height:520px;overflow-y:auto;}
.msg-partner-btn{display:block;width:100%;text-align:left;padding:14px 18px;border-bottom:1px solid var(--color-blue-light);font-size:.88rem;color:var(--color-navy);}
.msg-partner-btn:hover{background:var(--color-bg);}
.msg-partner-btn.active{background:var(--color-blue-light);font-weight:600;}
.msg-partner-meta{display:block;font-size:.72rem;color:var(--color-gray-text);opacity:.7;margin-top:2px;}
.msg-partner-row{display:flex;align-items:center;justify-content:space-between;gap:8px;}
.msg-partner-badge{flex-shrink:0;}
.msg-thread-pane{flex:1;display:flex;flex-direction:column;min-width:0;}
.msg-thread{flex:1;padding:24px;max-height:440px;overflow-y:auto;display:flex;flex-direction:column;gap:12px;}
.msg-empty{color:var(--color-gray-text);opacity:.7;font-size:.9rem;text-align:center;padding:20px 0;}
.msg-bubble{max-width:70%;padding:12px 16px;border-radius:14px;font-size:.9rem;}
.msg-bubble p{margin-bottom:4px;}
.msg-bubble .msg-time{font-size:.7rem;opacity:.6;}
.msg-bubble.mine{align-self:flex-end;background:var(--color-navy);color:var(--color-white);}
.msg-bubble.theirs{align-self:flex-start;background:var(--color-bg);color:var(--color-gray-text);}
.msg-compose{display:flex;flex-wrap:wrap;gap:12px;padding:18px 24px;border-top:1px solid var(--color-blue-light);}
.msg-compose textarea{flex:1;padding:10px 14px;border:1px solid var(--color-blue-light);border-radius:8px;background:var(--color-bg);font-family:inherit;min-height:44px;resize:vertical;}

/* Nachrichten — Anhang-Toolbar + Attachment-Bubbles */
.msg-attach-toolbar{display:flex;gap:6px;flex-basis:100%;order:-1;}
.msg-attach-btn{
  width:34px;height:34px;border-radius:50%;border:1px solid var(--color-blue-light);background:var(--color-white);
  font-size:1rem;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:border-color .2s;
}
.msg-attach-btn:hover{border-color:var(--color-gold);}
.msg-attach-preview{padding:0 24px;}
.msg-attach-preview:empty{padding:0;}
.msg-recording-indicator,.msg-voice-preview,.msg-location-picker,.msg-doc-picker{
  display:flex;align-items:center;gap:10px;flex-wrap:wrap;background:var(--color-bg);border:1px solid var(--color-blue-light);
  border-radius:8px;padding:10px 14px;margin-bottom:8px;font-size:.85rem;
}
.msg-recording-indicator{color:#A32E22;font-weight:600;}
.msg-voice-preview audio{max-width:220px;}
.msg-location-picker select{padding:6px 10px;border:1px solid var(--color-blue-light);border-radius:6px;background:var(--color-white);font-size:.82rem;}
.msg-doc-picker{flex-direction:column;align-items:stretch;}
.msg-doc-picker .msg-doc-search{padding:8px 12px;border:1px solid var(--color-blue-light);border-radius:6px;font-size:.85rem;}
.msg-doc-results{display:flex;flex-direction:column;gap:4px;max-height:160px;overflow-y:auto;}
.msg-doc-result-item{
  display:block;width:100%;text-align:left;padding:7px 10px;border:none;background:var(--color-white);
  border-radius:6px;font-size:.82rem;cursor:pointer;
}
.msg-doc-result-item:hover{background:var(--color-blue-light);}

.msg-attachment{
  display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:4px;padding:8px 10px;
  border-radius:8px;background:rgba(255,255,255,.12);font-size:.82rem;
}
.msg-bubble.theirs .msg-attachment{background:rgba(0,0,0,.04);}
.msg-attachment-icon{font-size:1.1rem;}
.msg-attachment-label{font-weight:600;}
.msg-attachment-meta{opacity:.75;font-size:.75rem;}
.msg-attachment-voice audio{height:32px;max-width:220px;}
.msg-attachment .dash-btn-sm{font-size:.72rem;padding:3px 10px;}
.msg-bubble.mine .msg-attachment .dash-btn-sm{border-color:rgba(255,255,255,.5);color:var(--color-white);}
.msg-bubble.mine .msg-attachment .dash-btn-sm:hover{border-color:var(--color-gold);color:var(--color-gold);}
#msgUserView .msg-thread,#msgUserView .msg-compose{background:var(--color-white);border:1px solid var(--color-blue-light);box-shadow:var(--shadow-card);}
#msgUserView .msg-thread{border-radius:var(--radius) var(--radius) 0 0;border-bottom:none;}
#msgUserView .msg-compose{border-radius:0 0 var(--radius) var(--radius);}

/* Kalender */
.cal-list{display:flex;flex-direction:column;gap:10px;}
.cal-event-row{
  display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:8px;
  background:var(--color-white);border:1px solid var(--color-blue-light);border-radius:var(--radius);
  padding:16px 20px;box-shadow:var(--shadow-card);
}
.cal-event-info strong{color:var(--color-navy);}
.cal-owner-label{font-size:.78rem;color:var(--color-gold);font-weight:600;margin-left:8px;}
.cal-event-time{font-size:.82rem;color:var(--color-gray-text);opacity:.75;}

/* Objekte: Bilder & Dokumente verwalten */
.prop-manage-panel{margin-top:16px;padding-top:20px;border-top:1px solid var(--color-blue-light);}
.prop-thumb-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:12px;margin-bottom:18px;}
.prop-thumb{position:relative;border-radius:8px;overflow:hidden;border:1px solid var(--color-blue-light);}
.prop-thumb img{width:100%;height:90px;object-fit:cover;display:block;}
.prop-thumb .prop-thumb-actions{display:flex;justify-content:space-between;gap:4px;padding:6px;background:var(--color-bg);}
.prop-thumb.is-cover{border-color:var(--color-gold);border-width:2px;}
.prop-thumb-cover-badge{position:absolute;top:6px;left:6px;background:var(--color-gold);color:var(--color-white);font-size:.65rem;font-weight:700;padding:2px 8px;border-radius:50px;}
.prop-user-picker{max-height:180px;overflow-y:auto;border:1px solid var(--color-blue-light);border-radius:8px;padding:10px 14px;display:flex;flex-direction:column;gap:6px;margin:8px 0;}
.prop-user-picker label{display:flex;align-items:center;gap:8px;font-size:.85rem;font-weight:400;}
/* .cal-participant-cat ist für den dunklen Kalender-Popover gedacht
   (heller Text auf Navy) -- hier im hellen Teilen-Modal (weisser
   Hintergrund) wäre das praktisch unsichtbarer weisser Text auf
   Weiss. Gleiche Klasse, aber im hellen Kontext dunkel eingefärbt. */
.prop-user-picker .cal-participant-cat{color:var(--color-gray-text);}
.prop-icon-btn{background:none;padding:2px 6px;font-size:.75rem;color:var(--color-navy);}
.prop-icon-btn:hover{color:var(--color-gold);}

/* Rechnungen: Positionen-Editor */
.line-item-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:8px;}
.line-item-row input{flex:1;min-width:0;}
.line-item-row .line-item-total{min-width:90px;text-align:right;font-weight:600;color:var(--color-navy);}
.line-item-row .remove-line-btn{flex-shrink:0;background:none;color:#A32E22;font-size:1.1rem;padding:4px 8px;}
.invoice-total-preview{text-align:right;font-weight:700;color:var(--color-navy);margin:10px 0;font-size:1.05rem;}

/* Rechnungen: druckbares Rechnungsblatt */
.invoice-sheet{background:var(--color-white);border:1px solid var(--color-blue-light);border-radius:var(--radius);box-shadow:var(--shadow-card);padding:40px 44px;}
.invoice-sheet-parties{display:flex;justify-content:space-between;gap:24px;margin-bottom:24px;}
.invoice-sheet-parties h3{font-size:.78rem;text-transform:uppercase;letter-spacing:.05em;color:var(--color-gray-text);opacity:.6;margin-bottom:6px;}
.invoice-sheet-meta{display:flex;gap:32px;margin-bottom:24px;font-size:.9rem;color:var(--color-gray-text);flex-wrap:wrap;}
.invoice-totals-row{display:flex;justify-content:flex-end;gap:32px;margin-top:12px;font-weight:700;color:var(--color-navy);font-size:1.1rem;}
.invoice-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:24px;}
@media print{
  #navbar, footer, .dash-sidebar, .dash-logout-btn, .dash-top-actions, .invoice-actions{display:none !important;}
  .dash-layout{padding-top:0;}
  .invoice-sheet{box-shadow:none;border:none;}
}

/* Waschplan */
.laundry-week-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:12px;}
.laundry-day-col h3{font-size:.85rem;text-transform:uppercase;letter-spacing:.05em;color:var(--color-gray-text);margin-bottom:8px;}
.laundry-slot{background:var(--color-white);border:1px solid var(--color-blue-light);border-radius:8px;padding:10px 12px;margin-bottom:8px;font-size:.85rem;}
.laundry-slot .laundry-slot-time{font-weight:600;color:var(--color-navy);}
.laundry-slot .laundry-slot-actions{margin-top:6px;}

#dashAdminQuickbar{
  display:flex;align-items:center;gap:10px;
}
.admin-quickbar-search{position:relative;}
.admin-quickbar-search input{
  width:min(420px,34vw);padding:9px 16px;border:1px solid var(--color-blue-light);border-radius:50px;
  font-size:.82rem;font-family:var(--font-body);background:var(--color-white);box-shadow:var(--shadow-card);
}
.admin-quickbar-search input:focus{outline:none;border-color:var(--color-gold);}
.admin-quickbar-results{
  position:absolute;top:calc(100% + 8px);right:0;width:340px;max-height:400px;overflow-y:auto;
  background:var(--color-white);border:1px solid var(--color-blue-light);border-radius:8px;
  box-shadow:var(--shadow-card);z-index:901;
}
.admin-quickbar-group-label{
  display:block;padding:9px 14px 4px;font-size:.68rem;font-weight:700;letter-spacing:.08em;
  text-transform:uppercase;color:var(--color-gray-text);
}
.admin-quickbar-result-item{
  display:block;width:100%;text-align:left;padding:8px 14px;border-bottom:1px solid var(--color-blue-light);
  font-size:.82rem;color:var(--color-navy);cursor:pointer;background:none;text-decoration:none;
}
.admin-quickbar-result-item:last-child{border-bottom:none;}
.admin-quickbar-result-item:hover{background:var(--color-bg);}
.admin-quickbar-result-meta{color:var(--color-gray-text);font-size:.75rem;display:block;}
.admin-quickbar-tickets{
  position:relative;display:flex;align-items:center;justify-content:center;
  width:42px;height:42px;border-radius:50%;background:var(--color-white);border:1px solid var(--color-blue-light);
  box-shadow:var(--shadow-card);color:var(--color-navy);flex-shrink:0;
}
.admin-quickbar-tickets:hover{border-color:var(--color-gold);color:var(--color-gold);}
.admin-quickbar-tickets svg{width:20px;height:20px;}
.admin-quickbar-badge{position:absolute;top:-4px;right:-4px;margin:0;}

/* Mobiles Hamburger-Menü (nur sichtbar ≤900px) -- ersetzt die
   vorherige untere Tab-Leiste. Icon-Button sitzt in der schlanken
   Portal-Kopfzeile (.nav-inner--portal, siehe portal.css) und öffnet
   ein von rechts einschiebendes Drawer mit derselben Nav-Liste wie die
   Desktop-Sidebar (siehe renderMobileMenu() in portal-dashboard.js).
   Gleiche Slide-in-Mechanik/Scroll-Lock wie das Marketing-Menü
   (.nav-links in styles.css). */
#dashMenuToggle{display:none;}
@media (max-width:900px){
  #dashMenuToggle{
    display:flex;position:absolute;right:20px;top:50%;transform:translateY(-50%);
    width:44px;height:44px;align-items:center;justify-content:center;touch-action:manipulation;
  }
}
.dash-mobile-menu-overlay{
  position:fixed;inset:0;z-index:2200;background:rgba(4,14,26,.5);
  opacity:0;pointer-events:none;transition:opacity .28s var(--ease);
}
.dash-mobile-menu-overlay.open{opacity:1;pointer-events:auto;}
.dash-mobile-menu{
  position:fixed;top:0;right:0;height:100vh;height:100dvh;width:min(320px,86vw);z-index:2300;
  background:var(--color-navy-deep);display:flex;flex-direction:column;
  padding:calc(24px + env(safe-area-inset-top)) 0 calc(24px + env(safe-area-inset-bottom));
  transform:translateX(100%);transition:transform .28s var(--ease);
  overflow-y:auto;box-shadow:-10px 0 40px rgba(0,0,0,.3);
}
.dash-mobile-menu.open{transform:translateX(0);}
.dash-mobile-menu .dash-nav{flex:1;}
.dash-mobile-menu-header{padding:0 28px 20px;border-bottom:1px solid rgba(255,255,255,.12);margin-bottom:12px;}
.dash-mobile-menu-name{display:block;color:var(--color-white);font-family:var(--font-heading);font-size:1.1rem;margin-bottom:8px;}

@media (max-width:1100px){
  .cal-week-nav{
    gap:10px;padding:10px;margin:-4px 0 14px;border:1px solid var(--color-blue-light);
    border-radius:14px;background:rgba(255,255,255,.94);box-shadow:0 8px 20px rgba(13,36,64,.08);
  }
  .cal-week-nav .booking-week-nav-btn{width:44px;height:44px;}
  .cal-week-nav .dash-btn-sm{min-height:44px;padding-left:18px;padding-right:18px;}
  .cal-week-label{font-size:1rem;}
  .cal-jump-search input{min-height:44px;font-size:16px;}
  .cal-grid-wrap{scroll-behavior:smooth;scroll-padding-left:56px;}
  .cal-grid{min-width:980px;}
  .cal-day-col{min-width:132px;}
  .cal-hour-add-btn{width:30px;height:30px;line-height:26px;top:5px;right:5px;opacity:.92;}
  .cal-event{font-size:.76rem;padding:5px 8px;}
  .cal-event-detail{
    left:50%!important;right:auto!important;top:calc(var(--nav-height) + 16px)!important;bottom:16px!important;
    width:min(560px,calc(100vw - 32px));max-height:none;border-radius:16px;padding:16px 18px 18px;
    transform:translate(-50%,8px);
  }
  .cal-event-detail.show{transform:translate(-50%,0);}
}

@media (max-width:900px){
  #dashAdminQuickbar{width:100%;}
  .admin-quickbar-search{flex:1;}
  .admin-quickbar-search input{width:100%;}
  .admin-quickbar-results{left:0;right:0;width:100%;max-height:min(55vh,420px);}
  .admin-quickbar-result-item{min-height:44px;}
  /* .dash-layout wechselt hier von row- auf column-flex (Sidebar
     wird ausgeblendet, Navigation läuft über das Hamburger-Menü). In
     einem column-flex-Container ist die Breite die Cross-Achse, auf
     der "flex:1;min-width:0" (fuer die Haupt-/Zeilen-Ausrichtung
     gedacht) NICHT vor Ueberlauf schuetzt -- ein breit-erzwungenes
     Kind (z.B. das Kalender-Grid) stretcht dann .dash-content ueber
     die Viewport-Breite hinaus, obendrein von body{overflow-x:hidden}
     unsichtbar abgeschnitten. Ergebnis: die .cal-grid-wrap-Scrollbox
     ueberlief nie wirklich sich selbst, sondern nur unsichtbar den
     Viewport -- Taps auf Stunden-Felder jenseits des sichtbaren
     Randes gingen dadurch ins Leere. */
  .dash-layout{flex-direction:column;padding-top:var(--nav-height);}
  .dash-content{max-width:100%;}
  .dash-sidebar{display:none;}
  body:has(#dashTopActions) .dash-content{padding-top:96px;}
  body:has(#dashAdminQuickbar) .dash-content{padding-top:178px;}
  /* Popover darf nie hinter der fixen unteren Nav-Leiste enden --
     sonst sind der untere Teil des Formulars (z.B. "Termin speichern")
     unsichtbar/nicht antippbar, obwohl das Popover selbst noch
     scrollbar wirkt. */
  .cal-grid{min-width:920px;}
  .cal-day-col{min-width:46vw;}
  .cal-event-detail{
    top:calc(var(--nav-height) + 70px)!important;bottom:calc(78px + env(safe-area-inset-bottom))!important;
    max-height:none;
  }
  .msg-admin-layout{flex-direction:column;}
  .msg-partner-list{width:100%;max-height:180px;border-right:none;border-bottom:1px solid var(--color-blue-light);}
  .laundry-week-grid{grid-template-columns:repeat(2,1fr);}
  .dash-quality-grid{grid-template-columns:repeat(2,minmax(0,1fr));}
  .filemgr-browser{grid-template-columns:1fr;min-height:auto;}
  .filemgr-detail{order:-1;}
  .filemgr-columns{min-height:360px;}
  .filemgr-column{flex-basis:min(82vw,340px);}
  .filemgr-preview-column{flex-basis:min(92vw,620px);min-width:min(92vw,620px);}
  .filemgr-preview-stage,.filemgr-preview-frame{min-height:360px;}
  .invoice-sheet{padding:24px 20px;}
  .invoice-sheet-parties{flex-direction:column;gap:14px;}
}

@media (max-width:720px){
  .dash-content{padding-left:16px;padding-right:16px;}
  .dash-content h1{font-size:1.45rem;}
  .dash-content > .dash-lead{font-size:.92rem;margin-bottom:22px;}
  .dash-card{padding:20px 18px;margin-bottom:18px;border-radius:10px;}
  .dash-card-head{align-items:stretch;flex-direction:column;}
  .homepage-editor-shell{grid-template-columns:1fr;}
  .homepage-preview-head{flex-direction:column;}
  .homepage-preview-frame{height:70vh;min-height:520px;}
  .homepage-edit-panel{position:static;}
  .site-content-row{grid-template-columns:1fr;}
  .site-service-row{grid-template-columns:1fr;}
  .site-service-toggle{padding-top:0;}
  .site-service-fields{grid-template-columns:1fr;}
  .portal-ui-row{grid-template-columns:1fr;}
  .portal-ui-fields{grid-template-columns:1fr;}
  .portal-module-row{grid-template-columns:1fr;}
  .portal-module-handle{min-height:44px;cursor:grab;}
  .portal-module-actions{justify-content:flex-start;}
  .portal-module-actions .dash-btn-sm{flex:1;min-width:calc(50% - 4px);text-align:center;}
  .portal-module-palette .dash-btn-sm{flex:1;min-width:150px;}
  .portal-module-fields input,.portal-module-fields textarea,.portal-ui-fields input{font-size:16px;}
  .email-mode-head{flex-direction:column;align-items:flex-start;}
  .email-mode-toggle{align-items:flex-start;}
  .dash-search-input{max-width:none;font-size:16px;}
  .dash-table th,.dash-table td{padding:11px 12px;font-size:.86rem;white-space:nowrap;}
  .doc-row,.cal-event-row{padding:14px 16px;}
  .doc-info,.filemgr-file-info{width:100%;}
  .filemgr-toolbar{align-items:stretch;}
  .filemgr-toolbar-left,.filemgr-toolbar-actions{width:100%;}
  .filemgr-toolbar-actions .dash-btn-sm{flex:1;}
  .filemgr-breadcrumb{width:100%;padding-top:4px;}
  .filemgr-subbar{align-items:flex-start;}
  .filemgr-detail{padding:14px;}
  .filemgr-detail-preview,.filemgr-detail-icon{width:120px;height:96px;font-size:2.6rem;margin-bottom:12px;}
  .filemgr-column{flex-basis:86vw;padding:10px;}
  .filemgr-column-item{min-height:46px;font-size:.88rem;}
  .filemgr-column-item.folder{grid-template-columns:24px minmax(0,1fr) 36px 16px;}
  .filemgr-column-action{width:36px;height:36px;font-size:1.1rem;}
  .filemgr-preview-column{flex-basis:86vw;min-width:86vw;padding:10px;}
  .filemgr-preview-head{align-items:flex-start;flex-direction:column;gap:4px;}
  .filemgr-preview-stage,.filemgr-preview-frame{min-height:320px;}
  .filemgr-folder-grid{grid-template-columns:repeat(2,minmax(0,1fr));}
  .filemgr-file-row .dash-btn-row{width:100%;}
  .filemgr-file-row .dash-btn-row .dash-btn-sm{flex:1;text-align:center;}
  .filemgr-upload-modal .share-modal-actions{flex-direction:column-reverse;}
  .filemgr-upload-modal .share-modal-actions .btn,
  .filemgr-upload-modal .share-modal-actions .dash-btn-sm{width:100%;justify-content:center;}
  #uploadScopeForm select,#uploadScopeForm input,#folderScopeForm select,#folderScopeForm input{font-size:16px;}
  .obj-columns-wrap{overflow:visible;padding-bottom:0;}
  .obj-column{max-height:none;padding:12px;}
  .obj-row{min-height:50px;padding:11px 12px;}
  .obj-registration-panel{align-items:flex-start;flex-direction:column;}
  .obj-category-checks{grid-template-columns:1fr;padding:10px 12px;}
  .obj-address-type-checks{grid-template-columns:1fr;}
  .cal-week-nav{gap:8px;}
  .cal-week-label{order:-1;flex-basis:100%;font-size:1rem;}
  .cal-jump-search{order:2;flex-basis:100%;margin-left:0;}
  .cal-jump-search input{width:100%;}
  .cal-jump-results{left:0;right:0;width:100%;max-height:min(48vh,360px);}
  .cal-legend{gap:10px 14px;}
  .msg-thread{padding:16px;max-height:55vh;}
  .msg-bubble{max-width:86%;font-size:.86rem;}
  .msg-compose{padding:14px;gap:10px;}
  .msg-compose textarea{flex-basis:100%;font-size:16px;}
  .msg-attach-preview{padding:0 14px;}
  .laundry-week-grid{grid-template-columns:1fr;}
}

@media (max-width:640px){
  .cal-event-detail{
    left:10px!important;right:10px!important;top:calc(var(--nav-height) + 64px)!important;bottom:calc(74px + env(safe-area-inset-bottom))!important;
    width:auto;max-height:none;border-radius:14px;padding:14px;
    transform:translateY(8px);
  }
  .cal-event-detail.show{transform:translateY(0);}
  .cal-event-detail-actions button,
  .cal-new-appt-form button.cal-save-appt-btn,
  .cal-new-appt-form button.cal-delete-appt-btn,
  .cal-new-appt-form button.cal-cancel-appt-edit-btn,
  .cal-new-appt-form button.cal-cancel-appt-btn,
  .cal-add-participant-btn,
  .cal-remove-participant-btn{min-height:42px;}
  .cal-new-appt-form input,.cal-new-appt-form select,.cal-new-appt-form textarea{font-size:16px;}
  .cal-participant-row{grid-template-columns:1fr;}
  .cal-participant-row .na-participant-category,
  .cal-participant-row .na-participant-select,
  .cal-participant-row .cal-remove-participant-btn{grid-column:1;grid-row:auto;}
  .cal-add-participant-btn,.cal-remove-participant-btn{width:100%;justify-content:center;}
}

@media (max-width:480px){
  .dash-top-actions{padding:8px 12px 10px;}
  body:has(#dashAdminQuickbar) .dash-content{padding-top:214px;}
  .dash-content{padding-left:12px;padding-right:12px;}
  .dash-card{padding:18px 14px;}
  .filemgr-folder-grid{grid-template-columns:1fr;}
  .cal-day-col{min-width:calc(100vw - 82px);}
  .cal-time-col{width:52px;}
  .cal-new-appt-time-row{grid-template-columns:1fr;}
}

/* =============================================================
   PORTAL MOBILE/TABLET POLISH — frictionless touch operation
   Central overrides for the complete Vera Portal. Kept at the end
   intentionally so existing page-specific rules remain intact and
   these rules win only on smaller screens.
============================================================= */
@media (max-width:1100px){
  .dash-content{padding-left:28px;padding-right:28px;}
  .dash-stat-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-bottom:22px;}
  .dash-stat{min-width:0;padding:20px 22px;}
  .dash-stat .num{font-size:1.85rem;}
  .dash-card{padding:24px;margin-bottom:24px;}
  .obj-hierarchy{
    display:flex;gap:14px;overflow-x:auto;padding:2px 2px 10px;
    scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain;
  }
  .obj-hierarchy > *{flex:0 0 min(78vw,420px);scroll-snap-align:start;}
  .obj-pane{min-height:480px;}
  .obj-pane-list{max-height:52vh;}
  .filemgr-browser{grid-template-columns:minmax(0,1fr) minmax(280px,32vw);}
}

@media (max-width:900px){
  :root{--portal-bottom-nav-height:0px;}
  html{scroll-padding-bottom:calc(var(--portal-bottom-nav-height) + env(safe-area-inset-bottom));}
  body{overscroll-behavior-y:none;}
  .dash-layout{min-height:100dvh;}
  .dash-content{
    width:100%;padding:24px 18px calc(var(--portal-bottom-nav-height) + 18px + env(safe-area-inset-bottom));
  }
  body:has(#dashTopActions) .dash-content{padding-top:148px;}
  body:has(#dashAdminQuickbar) .dash-content{padding-top:168px;}
  .dash-top-actions{
    position:fixed;top:var(--nav-height);left:0;right:0;width:100%;z-index:1200;
    grid-template-columns:1fr;align-items:stretch;gap:8px;padding:10px 14px;
    pointer-events:auto;
  }
  .dash-top-actions::after{
    content:"";display:block;grid-column:1 / -1;order:35;height:1px;
    background:linear-gradient(90deg,transparent,var(--color-blue-light),transparent);
  }
  .dash-top-actions > *{min-width:0;}
  .dash-top-search-group{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;}
  #dashAdminQuickbar{width:100%;display:grid;grid-template-columns:minmax(0,1fr) 44px;gap:8px;}
  .admin-quickbar-search{min-width:0;}
  .admin-quickbar-tickets{width:44px;height:44px;}
  .dash-content-editor-top,.dash-logout-top,.dash-email-mode-switch{
    min-height:44px;justify-content:center;padding-left:13px;padding-right:13px;
  }
  .dash-email-mode-top{width:100%;}
  .dash-email-mode-switch{width:100%;}
  .dash-email-mode-switch strong{font-size:.74rem;}
  .dash-top-actions .dash-content-editor-top,
  .dash-top-actions .dash-logout-top{width:100%;}
  #dashPortalEditorTop,#dashContentEditorTop,#dashEmailModeTop,#dashLogoutTop{
    border-radius:16px;
  }
  .dash-top-actions > a,
  .dash-top-actions > button,
  .dash-top-actions > label,
  .dash-top-actions > .dash-email-mode-top{
    max-width:100%;
  }
  .dash-content h1{font-size:1.55rem;line-height:1.15;}
  .dash-content > .dash-lead{margin-bottom:20px;}
  .dash-card{border-radius:16px;}
  .dash-card-head{gap:10px;}
  .dash-table-wrap{
    margin-left:-4px;margin-right:-4px;padding:0 4px 8px;
    scroll-snap-type:x proximity;
  }
  .dash-table{min-width:680px;}
  .dash-table th,.dash-table td{white-space:nowrap;}
  .dash-btn-sm,.btn,.auth-form button,.auth-submit{
    min-height:44px;touch-action:manipulation;
  }
  .dash-btn-row{gap:8px;}
  .auth-form input,.auth-form select,.auth-form textarea,
  .dash-search-input,.admin-quickbar-search input{
    min-height:44px;
  }
  input,select,textarea{font-size:16px;}
  .share-modal-backdrop{align-items:stretch;}
  .share-modal-actions{position:sticky;bottom:0;background:var(--color-white);padding-top:10px;}
  .obj-modal .share-modal-actions,.cal-event-detail .share-modal-actions{position:static;}
  .obj-flow-guide{grid-template-columns:repeat(2,minmax(0,1fr));}
  .obj-detail-info div{display:grid;grid-template-columns:1fr;gap:4px;}
  .obj-detail-info span{text-align:left;}
  .obj-next-step,.obj-row,.obj-quick-type{min-height:48px;}
  .obj-dossier-stats{grid-template-columns:repeat(2,minmax(0,1fr));}
  .obj-dossier-actions a{min-height:44px;}
  .obj-add-btn{width:36px;height:36px;}
  .obj-quick-types{grid-template-columns:repeat(2,minmax(0,1fr));}
  .msg-admin-layout{min-height:calc(100dvh - var(--nav-height) - var(--portal-bottom-nav-height) - 120px);}
  .msg-partner-list{
    display:flex;width:100%;max-height:none;overflow-x:auto;overflow-y:hidden;
    border-right:none;border-bottom:1px solid var(--color-blue-light);
  }
  .msg-partner-btn{flex:0 0 min(72vw,280px);border-bottom:none;border-right:1px solid var(--color-blue-light);}
  .msg-thread{max-height:calc(100dvh - var(--nav-height) - var(--portal-bottom-nav-height) - 260px);}
  .msg-compose{
    position:sticky;bottom:calc(var(--portal-bottom-nav-height) + env(safe-area-inset-bottom));
    background:var(--color-white);z-index:6;
  }
  .msg-attach-btn{width:44px;height:44px;font-size:1.08rem;touch-action:manipulation;}
  .msg-doc-picker{border-radius:14px;padding:12px;}
  .msg-doc-results{max-height:min(34vh,260px);}
  .msg-doc-result-item{min-height:44px;padding:10px 12px;font-size:.9rem;}
}

@media (min-width:641px) and (max-width:900px){
  .share-modal{
    width:min(100%,720px);max-height:calc(100dvh - var(--nav-height) - var(--portal-bottom-nav-height) - 18px);
    overflow:auto;-webkit-overflow-scrolling:touch;
  }
}

@media (max-width:720px){
  :root{--portal-bottom-nav-height:0px;}
  .dash-content{padding-left:14px;padding-right:14px;}
  .dash-stat-row{grid-template-columns:1fr 1fr;gap:10px;}
  .dash-stat{padding:16px 14px;border-radius:14px;}
  .dash-stat .num{font-size:1.65rem;}
  .dash-stat .label{font-size:.8rem;}
  .dash-card{padding:18px 14px;border-radius:14px;}
  .dash-card-head .dash-btn-row,
  .dash-card-head .dash-btn-sm{width:100%;}
  .dash-btn-row .dash-btn-sm,.dash-btn-row .btn{flex:1 1 100%;}
  .dash-quality-grid{grid-template-columns:1fr;}
  .dash-quality-item{min-height:auto;}
  .dash-quality-empty{align-items:flex-start;flex-direction:column;}
  .dash-top-actions{
    grid-template-columns:1fr 1fr;
    max-height:46vh;overflow:auto;-webkit-overflow-scrolling:touch;
  }
  .dash-top-actions::after{grid-column:1 / -1;}
  body:has(#dashTopActions) .dash-content{padding-top:158px;}
  body:has(#dashAdminQuickbar) .dash-content{padding-top:188px;}
  .dash-top-search-group,#dashAdminQuickbar,.dash-email-mode-top{grid-column:1 / -1;}
  .dash-top-actions .dash-content-editor-top,
  .dash-top-actions .dash-logout-top{width:auto;}
  #dashPortalEditorTop,#dashContentEditorTop{font-size:.76rem;}
  .dash-email-mode-switch{justify-content:flex-start;}
  .homepage-preview-frame,.portal-preview-frame{height:62vh;min-height:430px;}
  .homepage-preview-card,.homepage-edit-panel{padding:14px;border-radius:14px;}
  .filemgr-browser{display:flex;flex-direction:column;}
  .filemgr-detail{order:2;}
  .filemgr-columns{order:1;min-height:300px;}
  .filemgr-preview-column{min-width:82vw;flex-basis:82vw;}
  .obj-dossier-head{flex-direction:column;align-items:stretch;}
  .obj-dossier-head > span{align-self:flex-start;}
  .obj-dossier-actions{grid-template-columns:1fr;}
  .obj-assignment-row{align-items:flex-start;flex-direction:column;}
  .obj-assignment-row > span{width:100%;}
  .obj-assignment-row > .dash-btn-row{width:100%;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));}
  .obj-assignment-row > .dash-btn-row .dash-btn-sm,
  .obj-assignment-row > .dash-btn-row .btn{width:100%;justify-content:center;}
  .filemgr-toolbar-left{display:grid;grid-template-columns:1fr 1fr;width:100%;}
  .filemgr-breadcrumb{grid-column:1 / -1;order:3;}
  .filemgr-toolbar-actions{display:grid;grid-template-columns:1fr 1fr;width:100%;}
  .filemgr-toolbar-actions .dash-btn-sm{width:100%;}
  .filemgr-choice-group{grid-template-columns:1fr;}
  .filemgr-detail-actions{display:grid;grid-template-columns:1fr 1fr;}
  .filemgr-detail-actions .btn,
  .filemgr-detail-actions .dash-btn-sm{min-height:44px;}
  .filemgr-detail-actions .danger{grid-column:1 / -1;}
  .auth-form-row{grid-template-columns:1fr;}
  .site-content-row,.site-service-row,.portal-ui-row,.portal-module-row{
    grid-template-columns:1fr;
  }
  .site-service-fields,.portal-ui-fields{
    grid-template-columns:1fr;
  }
  .obj-flow-guide{grid-template-columns:1fr;}
  .obj-hierarchy > *{flex-basis:88vw;}
  .obj-pane{min-height:360px;}
  .obj-pane-list{max-height:none;}
  .obj-quick-types{grid-template-columns:1fr;}
  .obj-private-doc-form{grid-template-columns:1fr;}
  .line-item-row{display:grid;grid-template-columns:1fr;}
  .line-item-row .line-item-total{text-align:left;}
  .invoice-sheet{padding:24px 18px;border-radius:14px;}
  .invoice-actions .dash-btn-sm{flex:1 1 100%;}
}

@media (max-width:560px){
  .dash-content{padding-left:10px;padding-right:10px;}
  .dash-content h1{font-size:1.4rem;}
  .dash-stat-row{grid-template-columns:1fr;}
  .dash-stat{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:10px;}
  .dash-stat .label{margin-top:0;}
  .dash-top-actions{padding:8px 10px;gap:7px;}
  body:has(#dashTopActions) .dash-content{padding-top:168px;}
  body:has(#dashAdminQuickbar) .dash-content{padding-top:206px;}
  .dash-content-editor-top,.dash-logout-top{font-size:.74rem;padding-left:10px;padding-right:10px;}
  .dash-email-mode-switch{padding-right:9px;}
  .dash-email-mode-switch strong{font-size:.72rem;}
  .dash-email-mode-track{width:34px;flex-basis:34px;}
  .dash-email-mode-switch input:checked + .dash-email-mode-track::after{transform:translateX(12px);}
  .dash-table{min-width:620px;}
  .filemgr-column{flex-basis:88vw;min-width:88vw;}
  .filemgr-preview-column{min-width:88vw;flex-basis:88vw;}
  .filemgr-preview-stage,.filemgr-preview-frame{min-height:280px;}
  .filemgr-detail-actions{grid-template-columns:1fr;}
  .obj-assignment-row > .dash-btn-row{grid-template-columns:1fr;}
  .cal-grid{min-width:860px;}
  .cal-day-col{min-width:calc(100vw - 72px);}
  .cal-hour-slot,.cal-hour-label{height:52px;}
  .cal-hour-add-btn{width:34px;height:34px;line-height:30px;}
  .cal-event{min-height:32px;font-size:.74rem;}
  .cal-event-detail{
    top:calc(var(--nav-height) + 8px)!important;
    bottom:calc(var(--portal-bottom-nav-height) + 10px + env(safe-area-inset-bottom))!important;
  }
  .cal-new-appt-actions{bottom:-6px;padding-bottom:8px;}
  .msg-bubble{max-width:92%;}
  .msg-compose{
    display:grid;grid-template-columns:1fr;gap:8px;padding:12px;
    bottom:calc(var(--portal-bottom-nav-height) + env(safe-area-inset-bottom));
  }
  .msg-attach-toolbar{overflow-x:auto;padding-bottom:2px;-webkit-overflow-scrolling:touch;}
  .msg-compose textarea{min-height:52px;max-height:28vh;}
  .msg-compose .btn{width:100%;justify-content:center;}
  .msg-attach-preview{padding:0 8px;}
}

@media (max-width:560px){
  .share-modal-backdrop:has(.filemgr-upload-modal){
    align-items:stretch;background:var(--color-white);overflow:hidden;
  }
  .filemgr-upload-modal{
    height:100dvh;max-height:100dvh;border-radius:0;box-shadow:none;
    padding:calc(14px + env(safe-area-inset-top)) 14px calc(10px + env(safe-area-inset-bottom));
    overflow-y:auto;-webkit-overflow-scrolling:touch;
  }
  .filemgr-upload-modal .obj-modal-close{
    position:sticky;top:0;margin-left:auto;margin-bottom:4px;width:42px;height:42px;
    display:flex;align-items:center;justify-content:center;background:var(--color-white);z-index:4;
  }
  .filemgr-upload-modal h3{
    font-size:1.45rem;line-height:1.15;margin:-34px 48px 8px 0;
  }
  .filemgr-upload-modal > .doc-meta{
    font-size:.9rem;line-height:1.45;margin-bottom:10px;
  }
  .filemgr-upload-modal .auth-form{
    display:flex;flex-direction:column;gap:9px;min-height:0;
  }
  .filemgr-upload-modal input[type="file"]{
    max-width:100%;min-height:48px;padding:8px;border-radius:12px;
    border:1px solid var(--color-blue-light);background:var(--color-bg);
    font-size:.9rem;overflow:hidden;
  }
  .filemgr-choice{
    min-height:58px;padding:10px 12px;font-size:.94rem;border-radius:14px;
  }
  .filemgr-choice input{
    width:26px;height:26px;min-width:26px;min-height:26px;
  }
  .filemgr-upload-modal select,
  .filemgr-upload-modal input:not([type="checkbox"]):not([type="radio"]):not([type="file"]){
    min-height:52px;padding:10px 12px;border-radius:12px;font-size:16px;
  }
  .filemgr-upload-modal .auth-form-label{
    margin:2px 0 0;font-size:.86rem;gap:6px;
  }
  .filemgr-path-preview{
    font-size:.84rem;line-height:1.35;padding:10px 12px;border-radius:12px;
  }
  .filemgr-upload-modal .form-status{
    margin:0;font-size:.84rem;
  }
  .filemgr-upload-modal .share-modal-actions{
    position:sticky;bottom:0;z-index:5;margin:4px -14px 0;padding:10px 14px calc(10px + env(safe-area-inset-bottom));
    display:grid;grid-template-columns:1fr 1.2fr;gap:8px;background:linear-gradient(180deg,rgba(255,255,255,0),var(--color-white) 18%);
  }
  .filemgr-upload-modal .share-modal-actions .dash-btn-sm,
  .filemgr-upload-modal .share-modal-actions .btn{
    width:100%;min-height:48px;justify-content:center;border-radius:999px;font-size:.9rem;
  }
  @supports (-webkit-touch-callout:none){
    .filemgr-upload-modal{
      padding-bottom:calc(104px + env(safe-area-inset-bottom));
    }
    .filemgr-upload-modal .share-modal-actions{
      bottom:calc(58px + env(safe-area-inset-bottom));
    }
  }
}
