.app-card{position:relative;display:flex;flex-direction:column;flex-wrap:nowrap;align-items:stretch;gap:0;padding:0;min-height:0;overflow:hidden;border-radius:18px;background:#fff}
.app-card .scene{position:relative;flex:none;order:0;width:100%;height:auto;aspect-ratio:16/9;margin:0;border-radius:0;overflow:hidden;background:#e7effb}
.app-card .scene img{display:block;width:100%;height:100%;object-fit:cover}
.app-card .app-copy{order:1;flex:1;width:100%;padding:20px 22px;align-items:stretch}
.app-card h2{font-size:1.125rem;line-height:1.35}
.app-card .scope{font-size:.75rem}
.app-card .description{font-size:.875rem;line-height:1.55;margin-bottom:4px}
.app-card .availability{margin-top:14px;color:#526176;font-size:.8125rem}
.card-actions{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px;margin-top:auto;padding-top:14px}
.app-card .card-open{display:inline-flex;align-items:center;min-height:44px;margin:0;color:#092962;font-size:.875rem;text-decoration:none;line-height:1.4}
.card-open:after{position:absolute;inset:0;content:""}
.card-open:focus-visible:after{inset:4px;border:3px solid #092962;border-radius:13px}
.card-info-button{position:relative;z-index:1;display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:44px;padding:8px 12px;border:1px solid #b5c4d8;border-radius:8px;background:#fff;color:#092962;font:600 .8125rem system-ui,sans-serif;cursor:pointer}
.card-info-button:hover{background:#edf3fb;border-color:#092962}
.info-symbol{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border:1.5px solid currentColor;border-radius:50%;font-size:.75rem;font-weight:750}
.app-card:has(.card-open):hover{border-color:#092962;box-shadow:0 8px 20px #09296218}
.image-unavailable{display:flex;width:100%;height:100%;align-items:center;justify-content:center;padding:24px;color:#526176;font-size:.875rem}
.hero-scene{max-width:none;align-self:stretch;border-radius:14px;overflow:hidden}
.hero-scene img{display:block;width:100%;height:100%;object-fit:cover}
.hero{grid-template-columns:minmax(0,1.15fr) minmax(280px,1fr);padding:28px 32px}
.app-info-dialog{width:min(560px,calc(100% - 32px));max-height:calc(100dvh - 48px);padding:24px;border:1px solid #ccd5e2;border-radius:16px;background:#fff;color:#112b51;overflow:auto;box-shadow:0 18px 60px #061d4266;font:400 1rem/1.6 system-ui,sans-serif}
.app-info-dialog::backdrop{background:#061d42b3}
.app-info-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}
.app-info-header h2{margin:4px 0 0;font-size:1.375rem;line-height:1.3;overflow-wrap:anywhere}
.app-info-close{flex-shrink:0;min-height:44px;padding:8px 12px;border:1px solid #b5c4d8;border-radius:8px;background:#fff;color:#092962;font:600 .875rem system-ui,sans-serif;cursor:pointer}
.app-info-dialog h3{margin:22px 0 6px;font-size:.875rem}
.app-info-dialog p{margin:8px 0;color:#344761;overflow-wrap:anywhere;white-space:pre-line}
.app-info-roles{margin:0;padding-left:22px;color:#344761;overflow-wrap:anywhere}
.card-menu-panel{max-height:calc(100dvh - 24px);overflow:auto}
.card-menu-panel textarea{display:block;width:100%;min-height:80px;resize:vertical;padding:8px;border:1px solid #b9c4d3;border-radius:8px;background:#fff;color:#112b51;font:inherit;box-sizing:border-box}
.card-menu-panel label{text-transform:none;letter-spacing:0;font-size:.8125rem}
.card-menu-panel button,.card-menu-panel select,.card-menu-panel input{min-height:44px}
.app-card.is-editing{padding-top:44px}
.drag-handle,.card-menu-btn{z-index:2;min-height:36px;border-radius:8px}
.masthead{flex-wrap:wrap}.masthead .brand{margin-right:auto}
#portalEditButton,#adminDbLink,#portalLogout{min-width:44px;min-height:44px}
.card-info-button:focus-visible,.app-info-close:focus-visible,.card-menu-panel textarea:focus-visible{outline:3px solid #092962;outline-offset:3px}
@media(max-width:699px){.hero{display:flex;flex-direction:column;align-items:stretch;padding:24px;gap:20px}.hero-scene{flex:none;aspect-ratio:16/9;width:100%;max-width:none}.app-card{display:flex;flex-direction:column;padding:0;gap:0}.app-card .scene{flex:none;width:100%;height:auto;margin:0}.app-card .app-copy{padding:18px 20px}.app-detail{display:inline-block;margin-left:5px}.app-info-dialog{padding:20px}}
@media(prefers-reduced-motion:reduce){.app-card,.card-info-button{transition:none}}
