:root{--background:#ffffff;--foreground:#171717}@media (prefers-color-scheme:dark){:root{--background:#0a0a0a;--foreground:#ededed}}*{box-sizing:border-box;margin:0;padding:0}body,html{max-width:100vw;overflow-x:hidden}body{background:var(--background);color:var(--foreground);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;line-height:1.5}.page{max-width:640px;margin:0 auto;padding:4rem 1.5rem;display:flex;flex-direction:column;gap:1rem}.role-header{display:flex;align-items:center;gap:.75rem;padding:.75rem 1.5rem;border-bottom:1px solid color-mix(in srgb,var(--foreground) 12%,transparent)}.role-badge{padding:.15rem .5rem}.role-badge,.role-switcher{font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;border-radius:.25rem;background:color-mix(in srgb,var(--foreground) 10%,transparent)}.role-switcher{border:1px solid color-mix(in srgb,var(--foreground) 18%,transparent);color:var(--foreground);cursor:pointer;-moz-appearance:none;appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='%23666'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .4rem center;padding:.15rem 1.4rem .15rem .5rem}.role-user{margin-right:auto;font-weight:500}.role-user a{color:inherit;text-decoration:none}.role-user a:hover{text-decoration:underline}.back-link{font-size:.85rem;opacity:.7;text-decoration:none;color:var(--foreground)}.back-link:hover{opacity:1}.admin-nav{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:.5rem}.onboarding{display:flex;flex-direction:column;gap:2rem}.onboard-forms{display:grid;grid-gap:1.5rem;gap:1.5rem;grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.onboard-form{display:flex;flex-direction:column;gap:.6rem;padding:1rem;border:1px solid color-mix(in srgb,var(--foreground) 12%,transparent);border-radius:.5rem}.onboard-form h3{font-size:1rem}.onboard-form label{display:flex;flex-direction:column;gap:.25rem;font-size:.85rem;font-weight:500}.onboard-form input,.onboard-form select{padding:.4rem .5rem;border:1px solid color-mix(in srgb,var(--foreground) 20%,transparent);border-radius:.25rem;background:var(--background);color:var(--foreground);font:inherit}.onboard-form button{margin-top:.25rem;padding:.45rem .75rem;border:none;border-radius:.25rem;background:var(--foreground);color:var(--background);font:inherit;font-weight:600;cursor:pointer}.onboard-form button:disabled{opacity:.6;cursor:progress}.form-error{color:#b91c1c;font-size:.85rem}.form-ok{color:#15803d;font-size:.85rem}.form-hint{font-size:.85rem;opacity:.7}.onboard-chain{display:flex;flex-direction:column;gap:.75rem}.landlord-list,.unit-list{list-style:none;display:flex;flex-direction:column;gap:.5rem}.landlord-item{padding:.75rem 1rem;border:1px solid color-mix(in srgb,var(--foreground) 12%,transparent);border-radius:.5rem}.landlord-head{display:flex;gap:.5rem;align-items:baseline}.unit-list{margin-top:.5rem;padding-left:1rem}.unit-item{display:flex;flex-direction:column;gap:.1rem;padding:.4rem 0;border-top:1px solid color-mix(in srgb,var(--foreground) 8%,transparent)}.unit-label{font-weight:600}.muted{opacity:.7;font-size:.85rem}.tenant-tag{font-size:.8rem;font-weight:500}.tenant-tag.vacant{opacity:.6}.catalog-admin{display:flex;flex-direction:column;gap:1.5rem}.catalog-add,.catalog-form,.catalog-list-section{display:flex;flex-direction:column;gap:.75rem}.field{display:flex;flex-direction:column;gap:.25rem}.field>span{font-size:.85rem;font-weight:600}.field input,.field textarea{font:inherit;padding:.4rem .5rem;border:1px solid color-mix(in srgb,var(--foreground) 25%,transparent);border-radius:.25rem;background:var(--background);color:var(--foreground)}.field input[aria-invalid=true],.field textarea[aria-invalid=true]{border-color:#d33}.field-error{font-size:.8rem;color:#d33}.catalog-form-footer{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}.catalog-form-footer button{font:inherit;padding:.4rem .9rem;border-radius:.25rem;border:1px solid color-mix(in srgb,var(--foreground) 25%,transparent);background:color-mix(in srgb,var(--foreground) 8%,transparent);color:var(--foreground);cursor:pointer}.catalog-form-footer button:disabled{opacity:.6;cursor:progress}.form-success{font-size:.85rem;color:#2a7}.catalog-list{list-style:none;display:flex;flex-direction:column;gap:.5rem}.catalog-item{border:1px solid color-mix(in srgb,var(--foreground) 14%,transparent);border-radius:.35rem;padding:.5rem .75rem}.catalog-item[data-active=false]{opacity:.7}.catalog-item-summary{display:flex;align-items:baseline;gap:.5rem;flex-wrap:wrap;cursor:pointer}.catalog-item-name{font-weight:600}.catalog-item-badge{font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;padding:.1rem .4rem;border-radius:.25rem;background:color-mix(in srgb,#d33 20%,transparent)}.catalog-item-meta{margin-left:auto;font-size:.85rem;opacity:.8}.catalog-item-body{display:flex;flex-direction:column;gap:.75rem;margin-top:.75rem;padding-top:.75rem;border-top:1px solid color-mix(in srgb,var(--foreground) 10%,transparent)}.catalog-item-description{font-size:.9rem;opacity:.85}.catalog-item-toggle{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.catalog-item-toggle button{font:inherit;padding:.3rem .7rem;border-radius:.25rem;border:1px solid color-mix(in srgb,var(--foreground) 25%,transparent);background:var(--background);color:var(--foreground);cursor:pointer}.catalog-item-toggle-hint{font-size:.8rem;opacity:.7}.assignment-list{list-style:none;gap:.5rem}.assignment-item,.assignment-list{display:flex;flex-direction:column}.assignment-item{gap:.15rem;padding:.75rem 1rem;border:1px solid color-mix(in srgb,var(--foreground) 12%,transparent);border-radius:.5rem}.assignment-head{display:flex;gap:.5rem;align-items:baseline;justify-content:space-between}.assignment-kind{font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;padding:.12rem .45rem;border-radius:.25rem;white-space:nowrap;background:color-mix(in srgb,var(--foreground) 10%,transparent)}.assignment-kind.kind-scheduled{background:color-mix(in srgb,#2563eb 18%,transparent);color:#1d4ed8}