.login-wrap,.portal{--coral:#f55145;--coral-deep:#d63a2f;--terracotta:#e0432f}.portal{min-height:100vh;background:var(--cream);display:flex;flex-direction:column}.portal-bar{background:var(--moss-deep);color:var(--cream);border-bottom:1px solid hsla(42,57%,95%,.1)}.portal-bar-inner{max-width:1120px;margin:0 auto;padding:16px 32px;justify-content:space-between;gap:20px}.portal-bar-inner,.portal-bar-right,.portal-brand{display:flex;align-items:center}.portal-bar-right{gap:18px;font-size:13.5px}.portal-who{color:hsla(42,57%,95%,.75)}.portal-who strong{color:var(--cream);font-weight:600}.portal-logout{color:hsla(42,57%,95%,.75);border:1px solid hsla(42,57%,95%,.25);padding:7px 14px;border-radius:999px;font-weight:500;transition:background .2s ease,color .2s ease}.portal-logout:hover{background:var(--coral);color:var(--cream);border-color:var(--coral)}.portal-body{max-width:1120px;width:100%;margin:0 auto;padding:48px 32px 80px;flex:1 1}.portal-head{margin-bottom:36px}.portal-head h1{font-size:clamp(30px,4vw,44px);margin-bottom:8px}.portal-head .portal-sub{color:var(--ink-soft);font-size:15px}.portal-head .portal-sub strong{color:var(--coral-deep);font-weight:600}.kpi-grid{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:18px;gap:18px;margin-bottom:36px}.kpi-card{background:var(--cream-warm);border:1px solid var(--line);border-radius:10px;padding:26px 24px;position:relative;overflow:hidden}.kpi-card:before{content:"";position:absolute;left:0;top:18px;bottom:18px;width:3px;background:var(--coral);border-radius:0 3px 3px 0}.kpi-label{font-size:12px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:14px}.kpi-value{font-family:var(--serif);font-size:clamp(38px,4.5vw,52px);font-weight:400;color:var(--moss-deep);line-height:1;letter-spacing:-.03em}.kpi-foot{margin-top:10px;font-size:12.5px;color:var(--sage-light)}@media (max-width:900px){.kpi-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width:520px){.kpi-grid{grid-template-columns:1fr}}.portal-cols{display:grid;grid-template-columns:1.2fr 1fr;grid-gap:24px;gap:24px}@media (max-width:820px){.portal-cols{grid-template-columns:1fr}}.panel{background:var(--cream);border:1px solid var(--line);border-radius:10px;padding:8px 28px 20px}.panel-head{display:flex;align-items:baseline;justify-content:space-between;padding:20px 0 16px;border-bottom:1px solid var(--line);margin-bottom:8px}.panel-head h2{font-family:var(--serif);font-size:21px;font-weight:500;letter-spacing:-.01em;color:var(--moss-deep)}.panel-head .panel-count{font-size:13px;color:var(--ink-soft)}.tour-row{display:flex;align-items:center;justify-content:space-between;padding:15px 0;border-bottom:1px solid var(--line)}.tour-row:last-child{border-bottom:none}.tour-name{font-weight:600;color:var(--moss-deep);font-size:15px}.tour-when{font-size:13.5px;color:var(--ink-soft);text-align:right}.tour-when strong{color:var(--coral-deep);font-weight:600;display:block}.invoice-row{display:flex;align-items:center;justify-content:space-between;padding:15px 0;border-bottom:1px solid var(--line);gap:12px}.invoice-row:last-child{border-bottom:none}.invoice-period{font-weight:600;color:var(--moss-deep);font-size:15px}.invoice-amount{font-size:13.5px;color:var(--ink-soft)}.invoice-right{display:flex;align-items:center;gap:14px}.badge{font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;padding:5px 11px;border-radius:999px}.badge-paid{background:hsla(93,15%,55%,.18);color:#4a5e3a}.badge-unpaid{background:rgba(245,81,69,.14);color:var(--coral-deep)}.invoice-pdf{font-size:13px;font-weight:600;color:var(--coral-deep)}.invoice-pdf:hover{text-decoration:underline}.empty-note{padding:24px 0;color:var(--sage-light);font-size:14px;font-style:italic;font-family:var(--serif)}.login-wrap{min-height:100vh;background:var(--moss-deep);display:flex;align-items:center;justify-content:center;padding:32px;position:relative;overflow:hidden}.login-wrap:before{content:"";position:absolute;inset:0;background:radial-gradient(ellipse 60% 90% at 100% 0,rgba(245,81,69,.3) 0,transparent 60%),radial-gradient(ellipse 50% 70% at 0 100%,rgba(245,81,69,.18) 0,transparent 65%);pointer-events:none}.login-card{position:relative;z-index:1;background:var(--cream);border-radius:16px;padding:44px 40px 36px;width:100%;max-width:400px;box-shadow:0 30px 60px -20px rgba(0,0,0,.5)}.login-brand{display:flex;margin-bottom:6px}.login-title{font-family:var(--serif);font-size:28px;font-weight:400;color:var(--moss-deep);margin:22px 0 6px;letter-spacing:-.02em}.login-desc{font-size:14px;color:var(--ink-soft);margin-bottom:26px}.login-field{margin-bottom:16px}.login-field label{display:block;font-size:12.5px;font-weight:600;color:var(--moss-deep);margin-bottom:7px}.login-field input{width:100%;padding:13px 14px;border:1px solid var(--line-strong);border-radius:8px;background:var(--cream);font-family:var(--sans);font-size:14.5px;color:var(--ink);transition:border-color .2s ease,background .2s ease}.login-field input:focus{outline:none;border-color:var(--coral);background:var(--cream-warm)}.login-btn{width:100%;justify-content:center;margin-top:8px}.login-btn:disabled{opacity:.65;cursor:default}.login-error{background:rgba(245,81,69,.1);border:1px solid rgba(245,81,69,.35);color:var(--coral-deep);font-size:13.5px;font-weight:500;padding:11px 14px;border-radius:8px;margin-bottom:18px}.login-alt{margin-top:22px;padding-top:20px;border-top:1px solid var(--line);text-align:center;font-size:13px;color:var(--ink-soft)}.login-alt a{color:var(--coral-deep);font-weight:600}.login-alt a:hover{text-decoration:underline}.demo-flag{margin-top:18px;text-align:center;font-size:12px;color:var(--sage-light);font-family:var(--serif);font-style:italic}.admin-tabs{display:flex;gap:8px;margin-bottom:28px;border-bottom:1px solid var(--line)}.admin-tab{padding:12px 20px;font-size:14px;font-weight:600;color:var(--ink-soft);border-bottom:2px solid transparent;margin-bottom:-1px}.admin-tab.active{color:var(--moss-deep);border-bottom-color:var(--coral)}.overview-cards{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:18px;gap:18px;margin-bottom:32px}@media (max-width:720px){.overview-cards{grid-template-columns:1fr}}.table-wrap{border:1px solid var(--line);border-radius:10px;overflow:hidden;background:var(--cream)}table.portal-table{width:100%;border-collapse:collapse}table.portal-table th{text-align:left;font-size:11.5px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft);padding:14px 18px;background:var(--cream-warm);border-bottom:1px solid var(--line)}table.portal-table td{padding:15px 18px;font-size:14.5px;color:var(--moss-deep);border-bottom:1px solid var(--line)}table.portal-table tr:last-child td{border-bottom:none}table.portal-table td.num,table.portal-table th.num{text-align:right;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}table.portal-table tr.total-row td{font-weight:700;background:var(--cream-warm)}.home-name{font-weight:600}.entry-form{background:var(--cream);border:1px solid var(--line);border-radius:10px;padding:32px;max-width:720px}.entry-section-title{font-family:var(--serif);font-size:18px;font-weight:500;color:var(--moss-deep);margin:28px 0 16px;padding-top:20px;border-top:1px solid var(--line)}.entry-section-title:first-child{margin-top:0;padding-top:0;border-top:none}.entry-grid{display:grid;grid-template-columns:1fr 1fr;grid-gap:16px;gap:16px}@media (max-width:560px){.entry-grid{grid-template-columns:1fr}}.entry-field{margin-bottom:4px}.entry-field.full{grid-column:1/-1}.entry-field label{display:block;font-size:12.5px;font-weight:600;color:var(--moss-deep);margin-bottom:7px}.entry-field input,.entry-field select{width:100%;padding:12px 13px;border:1px solid var(--line-strong);border-radius:7px;background:var(--cream);font-family:var(--sans);font-size:14.5px;color:var(--ink)}.entry-field input:focus,.entry-field select:focus{outline:none;border-color:var(--coral);background:var(--cream-warm)}.entry-hint{font-size:12px;color:var(--sage-light);margin-top:6px}.entry-actions{margin-top:28px;padding-top:22px;border-top:1px solid var(--line);display:flex;gap:12px;align-items:center}.file-drop{border:1.5px dashed var(--line-strong);border-radius:8px;padding:22px;text-align:center;color:var(--ink-soft);font-size:13.5px;background:var(--cream-warm)}.file-drop strong{color:var(--coral-deep)}