.portal-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:24px}.portal-tile{appearance:none;font:inherit;text-align:left;cursor:pointer;background:var(--bg-2);border:1px solid var(--border);border-radius:var(--radius-lg);padding:32px 24px;display:flex;flex-direction:column;align-items:flex-start;gap:10px;transition:transform .2s,box-shadow .2s,border-color .2s}.portal-tile:focus-visible,.portal-tile:hover{transform:translateY(-3px);box-shadow:var(--shadow);border-color:var(--border-md)}.portal-tile:focus-visible{outline:2px solid var(--blue);outline-offset:2px}.portal-tile-icon{font-size:34px;line-height:1}.portal-tile-title{font-family:'Playfair Display',serif;font-size:18px;font-weight:700;color:var(--dark)}.portal-tile-cta{font-size:13px;font-weight:700;color:var(--blue);margin-top:auto}.portal-tile:hover .portal-tile-cta{color:var(--orange)}.portal-modal[hidden]{display:none}.portal-modal{position:fixed;inset:0;z-index:1000;display:flex;align-items:center;justify-content:center;padding:24px}.portal-modal-overlay{position:absolute;inset:0;background:rgba(15,20,51,.55)}.portal-modal-dialog{position:relative;background:var(--bg-2);border-radius:var(--radius-lg);box-shadow:var(--shadow);max-width:440px;width:100%;padding:40px 32px 32px;display:flex;flex-direction:column;align-items:flex-start;gap:12px;animation:portal-modal-in .18s ease-out}@keyframes portal-modal-in{from{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.portal-modal-close{position:absolute;top:14px;right:14px;width:32px;height:32px;border-radius:50%;border:none;background:var(--bg-3);color:var(--text-dim);font-size:15px;cursor:pointer;display:flex;align-items:center;justify-content:center}.portal-modal-close:hover{background:var(--orange-dim);color:var(--orange)}.portal-modal-icon{font-size:40px;line-height:1}.portal-modal-title{font-family:'Playfair Display',serif;font-size:22px;font-weight:700;color:var(--dark)}.portal-modal-desc{font-size:14px;line-height:1.65;color:var(--text-dim)}.portal-modal-dialog .btn{margin-top:8px}@media (max-width:768px){.portal-grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:16px}.portal-tile{padding:24px 18px}}@media (max-width:540px){.portal-grid{grid-template-columns:repeat(2,1fr)}.portal-modal-dialog{padding:36px 22px 24px}}