.portal-login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--paper);padding:24px}.portal-login-card{width:100%;max-width:420px;background:#fff;border:1px solid var(--paper-2);border-radius:12px;padding:40px;box-shadow:0 12px 40px rgba(15,27,45,.06)}.portal-login-card h1{font-size:1.5rem;margin:0 0 8px;color:var(--ink)}.portal-login-card p.portal-sub{color:var(--graphite-soft);margin:0 0 24px;font-size:.95rem}.portal-login-card .btn{width:100%;margin-top:8px}.portal-google-btn{margin-top:0}.portal-login-divider{display:flex;align-items:center;gap:12px;margin:20px 0;color:var(--graphite-soft);font-size:.85rem}.portal-login-divider:after,.portal-login-divider:before{content:"";flex:1;height:1px;background:var(--paper-2)}.portal-success{background:var(--paper-2);border-radius:8px;padding:16px;color:var(--ink);font-size:.95rem;line-height:1.5}.portal-shell{min-height:100vh;background:var(--paper)}.portal-header{display:flex;align-items:center;justify-content:space-between;padding:20px 32px;border-bottom:1px solid var(--paper-2);background:#fff}.portal-header .portal-brand{font-family:var(--font-display,inherit);font-weight:600;color:var(--ink);text-decoration:none;font-size:1.1rem}.portal-header form{margin:0}.portal-main{max-width:960px;margin:0 auto;padding:48px 32px}.portal-main h1{color:var(--ink);margin:0 0 4px}.portal-sub{color:var(--graphite-soft);margin:0 0 32px}.portal-card{background:#fff;border:1px solid var(--paper-2);border-radius:10px;padding:24px;margin-bottom:20px}.portal-card h2{margin:0 0 4px;font-size:1.1rem;color:var(--ink)}.portal-card .portal-project-status{display:inline-block;margin-top:8px;font-size:.8rem;text-transform:uppercase;letter-spacing:.04em;color:var(--brass);background:rgba(184,147,90,.12);padding:4px 10px;border-radius:999px}.portal-empty{color:var(--graphite-soft);padding:24px 0}.portal-card-link{display:block;text-decoration:none;transition:border-color .15s ease}.portal-card-link:hover{border-color:var(--brass)}.portal-section-heading{color:var(--ink);font-size:1.1rem;margin:36px 0 16px}.portal-milestone-list{display:flex;flex-direction:column;gap:12px}.portal-milestone-item{display:flex;gap:12px;align-items:flex-start;background:#fff;border:1px solid var(--paper-2);border-radius:10px;padding:16px 20px}.portal-milestone-item .portal-milestone-badge{color:var(--brass);font-size:1rem;line-height:1.5}.portal-milestone-title{font-weight:600;color:var(--ink)}.portal-page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:24px}.portal-page-head h1{margin-bottom:8px}.portal-link-btn{font-size:.85rem;color:var(--ink);text-decoration:underline;white-space:nowrap}.portal-new-request-form h2{font-size:1rem;margin:0 0 16px}.portal-new-request-form textarea{width:100%;font-family:inherit;resize:vertical}.portal-tickets-list{display:flex;flex-direction:column;gap:12px}.portal-ticket-card{background:#fff;border:1px solid var(--paper-2);border-radius:10px;padding:18px 20px}.portal-ticket-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.portal-ticket-title{font-weight:600;color:var(--ink)}.portal-ticket-desc{color:var(--graphite-soft);margin:8px 0 0;font-size:.9rem}.portal-ticket-meta{display:flex;gap:12px;margin-top:10px;align-items:center}.portal-status-pill{font-size:.75rem;text-transform:uppercase;letter-spacing:.03em;padding:4px 10px;border-radius:999px;white-space:nowrap;background:var(--paper-2);color:var(--graphite-soft)}.portal-status-client_request,.portal-status-needs_review{background:rgba(184,147,90,.14);color:var(--brass)}.portal-status-in_progress,.portal-status-to_do{background:rgba(127,184,217,.16);color:var(--ink-2)}.portal-status-done{background:rgba(76,154,108,.14);color:#3f7d54}.portal-milestone-badge{color:var(--brass);font-size:.8rem;font-weight:600}.portal-billing-note{font-size:.8rem;color:var(--graphite-soft);font-style:italic}.portal-pay-btn{padding:6px 14px;font-size:.8rem}