*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif;font-size:15px;color:#111827;background:#f9fafb;line-height:1.5}a{color:#2563eb;text-decoration:none}a:hover{text-decoration:underline}.container{max-width:1280px;margin:0 auto;padding:2rem}.nav{background:#fff;padding:0 1.5rem;display:flex;align-items:center;justify-content:space-between;height:54px;position:sticky;top:0;z-index:100;border-bottom:1px solid #f0f0f0}.nav-brand{display:flex;align-items:center;gap:.45rem;color:#111827;font-weight:700;font-size:1.05rem;letter-spacing:-.025em;text-decoration:none;flex-shrink:0;line-height:1}.nav-brand:hover{text-decoration:none;color:#111827}.nav-brand-sub{font-size:.625rem;color:#b0b8c8;font-weight:400;letter-spacing:.02em;align-self:flex-end;margin-bottom:1px;margin-left:.1rem}.nav-separator{display:inline-block;width:1px;height:16px;background:#e5e7eb;margin:0 .5rem;flex-shrink:0;align-self:center}.nav-links{display:flex;gap:.1rem;align-items:center}.nav-links a{color:#6b7280;font-size:.8125rem;font-weight:450;padding:.35rem .7rem;border-radius:999px;transition:color .1s,background .1s;white-space:nowrap;letter-spacing:-.005em}.nav-links a:hover{color:#111827;background:#f0f1f5;text-decoration:none}.nav-links a.active{color:#111827;background:#f0f1f5;font-weight:500}.nav-right{display:flex;gap:.35rem;align-items:center;margin-left:1rem;padding-left:1rem;border-left:1px solid #e9ecef}.btn-link{background:none;border:none;color:#9ca3af;cursor:pointer;font-size:.8rem;padding:.35rem .6rem;border-radius:999px;transition:color .1s,background .1s}.btn-link:hover{color:#6b7280;background:#f0f1f5}.btn-primary{background:#2563eb;color:#fff;border:none;padding:.5rem 1.25rem;border-radius:999px;cursor:pointer;font-size:.875rem;font-weight:500;display:inline-block;letter-spacing:-.005em;transition:background .12s,box-shadow .12s}.btn-primary:hover{background:#1d4ed8;text-decoration:none;box-shadow:0 1px 4px #2563eb40}.btn-primary:disabled{opacity:.55;cursor:not-allowed;box-shadow:none}.btn-secondary{background:#fff;color:#374151;border:1px solid #d1d5db;padding:.5rem 1.25rem;border-radius:999px;cursor:pointer;font-size:.875rem;transition:background .1s,border-color .1s}.btn-secondary:hover{background:#f9fafb;border-color:#9ca3af}.btn-danger{background:#ef4444;color:#fff;border:none;padding:.4rem 1rem;border-radius:999px;cursor:pointer;font-size:.85rem;transition:background .12s}.btn-danger:hover{background:#dc2626}.form{background:#fff;padding:2rem;border-radius:14px;box-shadow:0 1px 2px #0000000d,0 4px 16px #0000000a;border:1px solid #e5e7eb;max-width:600px}.form-group{margin-bottom:1.25rem}.form-group label{display:block;font-weight:500;margin-bottom:.35rem;font-size:.875rem;color:#374151}.form-group input,.form-group select,.form-group textarea{width:100%;padding:.625rem .875rem;border:1px solid #d1d5db;border-radius:8px;font-size:.9375rem;outline:none;background:#fff;transition:border-color .15s,box-shadow .15s;font-family:inherit;color:#111827}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{border-color:#2563eb;box-shadow:0 0 0 3px #2563eb1a}.form-actions{display:flex;gap:.75rem;margin-top:1.5rem}.error{color:#ef4444;font-size:.875rem;margin-top:.4rem}.success{color:#16a34a;font-size:.875rem;margin-top:.4rem}.page-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1.75rem}.page-header h1{font-size:1.375rem;font-weight:700;color:#111827;letter-spacing:-.025em;line-height:1.2}.page-count{color:#9ca3af;font-size:.8rem;font-weight:400}.ticket-table{width:100%;border-collapse:collapse;background:#fff;border-radius:14px;overflow:hidden;border:1px solid #e5e7eb}.ticket-table th{background:#fafafa;text-align:left;padding:.65rem 1rem;font-size:.75rem;color:#9ca3af;font-weight:600;letter-spacing:.03em;text-transform:uppercase;border-bottom:1px solid #f0f0f0}.ticket-table td{padding:.8rem 1rem;border-top:1px solid #f5f5f5;font-size:.875rem;color:#374151}.ticket-table tbody tr:first-child td{border-top:none}.ticket-table tr:hover td{background:#fafafa}.ticket-row{cursor:pointer}.ticket-row:hover td:first-child{padding-left:calc(1rem - 2px);border-left:2px solid #2563eb}.ticket-title-cell{max-width:340px}.ticket-title-link{color:#111827;font-weight:500;text-decoration:none;display:inline}.ticket-title-link:hover{color:#2563eb;text-decoration:none}.ticket-type-chip{display:inline-block;margin-left:.4rem;font-size:.675rem;font-weight:600;padding:.1rem .4rem;border-radius:4px;vertical-align:middle;position:relative;top:-1px;letter-spacing:.02em}.ticket-type-chip--public{background:#eff6ff;color:#1d4ed8}.ticket-type-chip--internal{background:#f3f4f6;color:#6b7280}.status{display:inline-block;padding:.2rem .6rem;border-radius:6px;font-size:.75rem;font-weight:500}.status-new{background:#dbeafe;color:#1e40af}.status-triaged{background:#fef3c7;color:#92400e}.status-in_progress{background:#d1fae5;color:#065f46}.status-waiting_on_tenant{background:#fce7f3;color:#9d174d}.status-done{background:#dcfce7;color:#166534}.status-cancelled{background:#f3f4f6;color:#6b7280}.priority-low{display:inline-block;padding:.2rem .6rem;border-radius:6px;font-size:.75rem;font-weight:500;background:#f0fdf4;color:#166534}.priority-medium{display:inline-block;padding:.2rem .6rem;border-radius:6px;font-size:.75rem;font-weight:500;background:#fefce8;color:#854d0e}.priority-high{display:inline-block;padding:.2rem .6rem;border-radius:6px;font-size:.75rem;font-weight:500;background:#fff7ed;color:#c2410c}.priority-urgent{display:inline-block;padding:.2rem .6rem;border-radius:6px;font-size:.75rem;font-weight:600;background:#fef2f2;color:#b91c1c}.back-link{font-size:.8125rem;color:#9ca3af;display:inline-flex;align-items:center;gap:.2rem;transition:color .1s;padding:.25rem 0}.back-link:hover{color:#111827;text-decoration:none}.ticket-detail{background:#fff;padding:2rem;border-radius:14px;border:1px solid #e5e7eb}.ticket-meta{display:flex;gap:1.5rem;flex-wrap:wrap;margin-bottom:1.5rem;font-size:.875rem;color:#6b7280}.ticket-meta span strong{color:#111827;font-weight:500}.ticket-body{margin-bottom:2rem;line-height:1.7}.ticket-detail-header{display:flex;align-items:baseline;gap:.75rem;flex-wrap:wrap;margin-bottom:1rem}.ticket-detail-header h1{font-size:1.375rem;font-weight:700;line-height:1.3;letter-spacing:-.02em;color:#111827}.ticket-type-badge{display:inline-block;font-size:.7rem;font-weight:600;letter-spacing:.03em;text-transform:uppercase;padding:.2rem .55rem;border-radius:4px;white-space:nowrap;flex-shrink:0}.ticket-type-badge--public{background:#eff6ff;color:#1d4ed8}.ticket-type-badge--internal{background:#f3f4f6;color:#6b7280}.submitter-block{background:#f9fafb;border:1px solid #e5e7eb;border-left:3px solid #2563eb;border-radius:8px;padding:.85rem 1rem;margin-bottom:1.5rem}.submitter-block__label{font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:#9ca3af;margin-bottom:.6rem}.submitter-block__fields{display:flex;flex-wrap:wrap;gap:.5rem 2rem}.submitter-field{display:flex;flex-direction:column;gap:.1rem;min-width:140px}.submitter-field__key{font-size:.75rem;color:#9ca3af;font-weight:500}.submitter-field__val{font-size:.9rem;color:#111827;font-weight:500}.submitter-field__val a{color:#2563eb;font-weight:400}@media (max-width: 640px){.submitter-block__fields{flex-direction:column;gap:.65rem}}.manage-panel{background:#f9fafb;border:1px solid #e5e7eb;border-radius:10px;padding:1.25rem 1.5rem 1rem;margin-bottom:0}.inline-controls{margin-bottom:1.5rem}.inline-control{display:flex;gap:.75rem;align-items:center;margin-bottom:.75rem}.inline-control label{font-size:.875rem;color:#6b7280;min-width:90px;font-weight:500}.inline-control select{padding:.4rem .65rem;border:1px solid #d1d5db;border-radius:8px;font-size:.875rem;font-family:inherit;background:#fff}.comments{margin-top:2rem}.comments h3{margin-bottom:1rem;font-size:1rem;font-weight:600;color:#111827}.comment{padding:.9rem 1rem;border:1px solid #e5e7eb;border-radius:10px;margin-bottom:.75rem;background:#fff}.comment.internal{border-color:#fde68a;background:#fffbeb}.comment-header{display:flex;justify-content:space-between;font-size:.78rem;color:#9ca3af;margin-bottom:.4rem}.comment-header .internal-badge{background:#fef3c7;color:#92400e;font-size:.7rem;font-weight:600;padding:.1rem .4rem;border-radius:4px}.comment-body{font-size:.875rem;white-space:pre-wrap;color:#374151}.comment-form{margin-top:1.5rem}.comment-form h4{margin-bottom:.75rem;font-size:.875rem;font-weight:600;color:#374151}.comment-form textarea{width:100%;padding:.75rem;border:1px solid #d1d5db;border-radius:8px;resize:vertical;font-family:inherit;font-size:.875rem;min-height:80px;background:#fff;color:#111827}.comment-form textarea:focus{outline:none;border-color:#2563eb;box-shadow:0 0 0 3px #2563eb1a}.comment-type-toggle{display:flex;gap:.5rem;margin-bottom:.75rem}.comment-type-toggle button{padding:.3rem .9rem;border-radius:999px;cursor:pointer;font-size:.8rem;border:1px solid #d1d5db;background:#fff;color:#6b7280;transition:all .1s}.comment-type-toggle button.active{background:#111827;color:#fff;border-color:#111827}.attachments{margin-top:2rem}.attachments h3{margin-bottom:.75rem;font-size:1rem;font-weight:600;color:#111827}.attachment-list{list-style:none}.attachment-list li{display:flex;align-items:center;gap:.75rem;padding:.6rem .75rem;border:1px solid #e5e7eb;border-radius:8px;margin-bottom:.5rem;font-size:.875rem;background:#fff}.attachment-list li span{flex:1}.upload-area{margin-bottom:.75rem}.upload-area label{display:inline-block;padding:.45rem 1rem;background:#f9fafb;border:1px dashed #d1d5db;border-radius:999px;cursor:pointer;font-size:.875rem;transition:border-color .12s}.upload-area label:hover{background:#f3f4f6;border-color:#9ca3af}.buildings-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1rem}.building-card{background:#fff;padding:1.5rem;border-radius:14px;border:1px solid #e5e7eb}.building-card h3{margin-bottom:.25rem;font-size:1rem;font-weight:600}.building-card .address{font-size:.875rem;color:#6b7280;margin-bottom:.75rem}.building-card-actions{display:flex;gap:.5rem;margin-top:.75rem}.filters{display:flex;gap:.5rem;margin-bottom:1.5rem;flex-wrap:wrap;align-items:center;background:#fff;padding:.65rem 1rem;border-radius:12px;border:1px solid #f0f0f0}.filters label{font-size:.7rem;font-weight:600;color:#b0b8c8;text-transform:uppercase;letter-spacing:.04em;margin-right:.25rem}.filters select,.filters input{padding:.35rem .65rem;border:1px solid #e5e7eb;border-radius:999px;font-size:.8125rem;font-family:inherit;background:#f0f1f5;color:#374151;transition:border-color .12s,background .1s}.filters select:hover,.filters input:hover{background:#e8ebf0;border-color:#d1d5db}.filters select:focus,.filters input:focus{outline:none;border-color:#2563eb;background:#fff}.badge{display:inline-block;padding:.15rem .55rem;border-radius:6px;font-size:.72rem;font-weight:600}.badge-active{background:#dcfce7;color:#166534}.badge-inactive{background:#fee2e2;color:#991b1b}.login-page{max-width:380px;margin:5rem auto;padding:0 1.5rem;text-align:center}.login-brand{display:flex;align-items:center;justify-content:center;gap:.5rem;margin-bottom:.2rem}.login-brand-name{font-size:1.875rem;font-weight:700;color:#111827;letter-spacing:-.04em;line-height:1}.login-brand-sub{color:#b0b8c8;font-size:.75rem;margin-bottom:1.75rem;letter-spacing:.01em}.login-tagline{color:#9ca3af;margin-bottom:1.5rem;font-size:.875rem}.login-form{background:#fff;padding:1.75rem;border-radius:14px;box-shadow:0 1px 3px #0000000f,0 8px 28px #00000012;border:1px solid #e5e7eb;text-align:left}.login-forgot{background:none;border:none;padding:0;color:#2563eb;font-size:.85rem;cursor:pointer}.login-forgot:hover{text-decoration:underline}.loading{text-align:center;padding:4rem;color:#9ca3af;font-size:.9rem}.section-divider{border:none;border-top:1px solid #f0f0f0;margin:2rem 0}.lang-toggle{display:flex;gap:.15rem;align-items:center}.lang-btn{background:none;border:1px solid #e5e7eb;color:#9ca3af;padding:.2rem .45rem;border-radius:999px;cursor:pointer;font-size:.7rem;font-weight:600;letter-spacing:.04em;line-height:1.4;transition:all .1s}.lang-btn:hover{color:#374151;border-color:#9ca3af;background:#f0f1f5}.lang-btn.active,.lang-btn[aria-pressed=true]{background:#111827;border-color:#111827;color:#fff}.public-form-page{min-height:100vh;background:#f9fafb}.public-form-header{background:#fff;padding:0 1.5rem;height:54px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #f0f0f0}.public-form-brand{color:#111827;font-size:1rem;font-weight:700;letter-spacing:-.02em;display:flex;align-items:center;gap:.45rem}.public-form-container{max-width:640px;margin:0 auto;padding:2.5rem 1.5rem 4rem}.public-form-card{background:#fff;border-radius:14px;border:1px solid #e5e7eb;box-shadow:0 1px 3px #0000000d,0 4px 16px #0000000a;padding:2rem 2rem 2.5rem}.public-form-card h2{font-size:1.25rem;font-weight:700;color:#111827;margin-bottom:1.75rem;padding-bottom:1rem;border-bottom:1px solid #f0f0f0;letter-spacing:-.02em}.public-form-success-icon{width:44px;height:44px;background:#dcfce7;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:1.4rem;margin-bottom:1.25rem}.public-form-ref{margin-top:1.25rem;background:#f9fafb;border:1px solid #e5e7eb;border-radius:8px;padding:.75rem 1rem;font-size:.875rem;color:#6b7280}.public-form-ref strong{display:block;font-size:.7rem;text-transform:uppercase;letter-spacing:.05em;color:#9ca3af;margin-bottom:.25rem}.public-form-ref span{font-size:.9rem;color:#111827;font-family:ui-monospace,Cascadia Code,monospace;word-break:break-all}@media (max-width: 640px){.public-form-container{padding:1.5rem 1rem 3rem}.public-form-card{padding:1.5rem 1.25rem 2rem}}@keyframes auth-spin{to{transform:rotate(360deg)}}.auth-spinner{width:34px;height:34px;border:2.5px solid #e5e7eb;border-top-color:#2563eb;border-radius:50%;animation:auth-spin .75s linear infinite;margin:0 auto}@media (max-width: 640px){.container{padding:1rem}.filters{flex-direction:column}.ticket-table{display:block;overflow-x:auto}.page-header{flex-direction:column;gap:1rem;align-items:flex-start}.ticket-meta{flex-direction:column;gap:.5rem}}.lease-roll-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 1.5rem}@media (max-width: 640px){.lease-roll-form-grid{grid-template-columns:1fr}.lease-roll-form-grid .form-group{grid-column:1 / -1!important}}
