.portal-app,.portal-clip{--brand-primary:#87003d;--brand-primary-light:color-mix(in srgb,var(--brand-primary) 82%,#fff);--brand-primary-tint:color-mix(in srgb,var(--brand-primary) 8%,transparent);font-family:var(--font-dm-sans),sans-serif;color:var(--zinc-800)}.portal-app{background:var(--zinc-50);min-height:100vh;padding:var(--page-padding-y) var(--page-padding-x);box-sizing:border-box}.portal-container{width:100%;max-width:1200px;margin:0 auto;display:grid;grid-template-columns:1fr;height:auto;min-height:0;overflow:visible}.portal-left,.portal-right{min-height:0;max-height:100%}.portal-left{position:relative;overflow:hidden;background-color:#1a1008;background-image:var(--venue-image);background-size:cover;background-position:50%;border-radius:16px;display:flex;flex-direction:column;justify-content:flex-end;height:auto;min-height:200px}.portal-left-overlay{position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,.08),rgba(0,0,0,.55) 70%,rgba(0,0,0,.7))}.portal-left-content{position:relative;bottom:auto;left:auto;right:auto;padding:20px}.portal-left-logo{display:flex;align-items:center;gap:10px;margin-bottom:16px}.portal-left-logo img{width:auto;height:auto;max-width:var(--logo-portal-max-width);object-fit:contain}.portal-left-content h1{font-family:var(--font-playfair),serif;font-size:22px;font-weight:500;color:#fff;line-height:1.25;margin:0 0 8px}.portal-left-content p{font-size:14px;color:rgba(255,255,255,.85);line-height:1.6;margin:0}.portal-right{background:transparent;padding:24px var(--page-padding-x) 28px;display:flex;flex-direction:column;min-width:0;overflow:visible;box-sizing:border-box}.portal-back-link{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--zinc-500);margin-bottom:16px;text-decoration:none;align-self:flex-start;transition:color .15s}.portal-back-link:hover,.portal-right h2{color:var(--zinc-800)}.portal-right h2{font-size:24px;font-weight:600;margin:0 0 4px;overflow-wrap:anywhere}.portal-subtitle{font-size:13px;color:var(--zinc-500);margin:0 0 28px;overflow-wrap:anywhere}.portal-section-label{font-size:10px;font-weight:600;letter-spacing:.14em;color:var(--zinc-400);text-transform:uppercase;margin-bottom:12px}.portal-search-bar{display:flex;align-items:center;gap:12px;border:1.5px solid var(--zinc-200);border-radius:12px;padding:14px 16px;margin-bottom:28px;min-width:0;box-sizing:border-box;scroll-margin-top:12px;transition:border-color .2s,box-shadow .2s}.portal-search-bar:hover{border-color:var(--zinc-300)}.portal-search-bar:focus-within{border-color:var(--brand-primary);box-shadow:0 0 0 3px var(--brand-primary-tint)}.portal-search-bar input{border:none;outline:none;font-size:16px;font-family:inherit;color:var(--zinc-800);flex:1 1;min-width:0;background:transparent}.portal-search-bar input::placeholder{color:var(--zinc-400)}.portal-grad-list{flex:none;min-height:0;min-width:0;display:flex;flex-direction:column;overflow:visible}.portal-grad-item{display:flex;align-items:center;gap:14px;padding:14px 8px;border-bottom:1px solid var(--zinc-100);text-decoration:none;color:inherit;min-width:0;box-sizing:border-box;border-radius:8px;transition:background .15s}.portal-grad-item:hover{background:var(--zinc-50)}.portal-grad-item:last-child{border-bottom:none}.portal-grad-thumb{width:96px;height:54px;background:var(--zinc-200);border-radius:6px;flex-shrink:0;position:relative;overflow:hidden}.portal-grad-thumb img{width:100%;height:100%;object-fit:cover;display:block}.portal-grad-info{flex:1 1;min-width:0}.portal-grad-name{font-size:14px;font-weight:500;color:var(--brand-primary);margin-bottom:1px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.portal-grad-item:hover .portal-grad-name{color:var(--brand-primary-light)}.portal-grad-degree{font-size:12px;color:var(--zinc-500);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.portal-grad-arrow{flex-shrink:0;color:var(--zinc-300);transition:color .15s,transform .15s}.portal-grad-item:hover .portal-grad-arrow{color:var(--brand-primary);transform:translateX(2px)}.portal-event-list{flex:none;min-height:0;display:flex;flex-direction:column;overflow:visible}.portal-event-item{display:flex;align-items:center;padding:16px 8px;border-bottom:1px solid var(--zinc-100);text-decoration:none;color:inherit;min-width:0;box-sizing:border-box;border-radius:8px;transition:background .15s}.portal-event-item:hover{background:var(--zinc-50)}.portal-event-item:last-child{border-bottom:none}.portal-event-info{flex:1 1;min-width:0}.portal-event-name{font-size:15px;font-weight:500;color:var(--brand-primary);margin-bottom:2px}.portal-event-item:hover .portal-event-name{color:var(--brand-primary-light)}.portal-event-date{font-size:12px;color:var(--zinc-500)}.portal-event-arrow{flex-shrink:0;color:var(--zinc-300);transition:color .15s,transform .15s}.portal-event-item:hover .portal-event-arrow{color:var(--brand-primary);transform:translateX(2px)}.portal-empty{flex:1 1;display:flex;align-items:center;justify-content:center;font-size:14px;color:var(--zinc-500);padding:48px 0;text-align:center}.portal-footer{padding-top:16px;border-top:1px solid var(--zinc-100);margin-top:12px}.portal-footer p{font-size:11px;color:var(--zinc-400);margin:0}.portal-clip{display:flex;flex-direction:column;min-height:100dvh;background:var(--zinc-50)}.portal-clip-nav{display:flex;align-items:center;border-bottom:1px solid var(--zinc-200);background:var(--white);flex-shrink:0;position:-webkit-sticky;position:sticky;top:0;z-index:1}.portal-clip-nav-inner{display:flex;align-items:center;width:100%;max-width:1200px;margin:0 auto;padding:var(--page-padding-y) var(--page-padding-x)}.portal-clip-nav-left,.portal-clip-nav-right{display:flex;align-items:center;flex:1 1;min-width:0}.portal-clip-nav-center{flex:0 1 auto;min-width:0;max-width:calc(100% - 180px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:16px;font-weight:600;color:var(--zinc-800);text-align:center}.portal-clip-nav-right{justify-content:flex-end}.portal-clip-nav-back{display:inline-flex;align-items:center;flex-shrink:0;gap:6px;color:var(--zinc-500);font-size:13px;text-decoration:none;transition:color .15s}.portal-clip-nav-back:hover{color:var(--zinc-800)}.portal-clip-nav-search{width:32px;height:32px;flex-shrink:0;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;color:var(--zinc-500);transition:background .15s}.portal-clip-nav-search:hover{background:var(--zinc-100)}.portal-clip-content{flex:1 1;display:flex;flex-direction:column;padding:20px var(--page-padding-x) 24px}.portal-clip-content-inner{width:100%;max-width:1200px;margin:0 auto;display:flex;flex-direction:column;align-items:center}.portal-toggle-row{display:flex;justify-content:center;margin-bottom:16px}.portal-toggle{display:flex;background:var(--zinc-100);border-radius:8px;padding:3px}.portal-toggle button{padding:7px 20px;font-size:13px;border-radius:6px;cursor:pointer;transition:all .15s;color:var(--zinc-500);background:none;border:none;font-family:inherit}.portal-toggle button.active{background:var(--brand-primary);color:var(--white)}.portal-toggle button:not(.active):hover{color:var(--zinc-800)}.portal-video{width:100%;max-width:860px;background:var(--zinc-800);border-radius:12px;aspect-ratio:16/9;margin-bottom:16px;overflow:hidden;flex-shrink:0;transition:aspect-ratio .3s ease,max-width .3s ease}.portal-video.portrait{aspect-ratio:9/16;width:min(100%,calc(70vh * 9 / 16));height:auto;max-width:100%;max-height:70vh}.portal-video-element{width:100%;height:100%;object-fit:cover;display:block;background:#000}.portal-info-card{width:100%;max-width:860px;background:var(--white);border:1px solid var(--zinc-200);border-radius:12px;padding:20px 24px;margin-bottom:12px;transition:max-width .3s ease}.portal-info-card.portrait{max-width:100%}.portal-info-divider{border-top:1px solid var(--zinc-100);padding-top:16px;display:flex}.portal-info-divider,.portal-info-divider.portrait{flex-direction:column;gap:12px}.portal-info-name{font-size:18px;font-weight:600;color:var(--zinc-800);margin-bottom:2px}.portal-info-degree{font-size:14px;color:var(--zinc-500);margin-bottom:16px}.portal-info-detail label{font-size:11px;color:var(--zinc-400);display:block;margin-bottom:2px}.portal-info-detail span{font-size:14px;font-weight:500;color:var(--zinc-800)}.portal-actions{display:flex;gap:8px;margin-top:16px;padding-top:16px;border-top:1px solid var(--zinc-100)}.portal-btn-download{flex:1 1;background:var(--brand-primary);color:var(--white);border:none;padding:10px;border-radius:8px;font-size:13px;font-weight:500;font-family:inherit;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:8px;transition:background .15s}.portal-btn-download:hover{background:var(--brand-primary-light)}.portal-share-wrap{position:relative}.portal-btn-share{background:var(--white);color:var(--zinc-600);border:1.5px solid var(--zinc-200);padding:10px 16px;border-radius:8px;font-size:13px;font-weight:500;font-family:inherit;cursor:pointer;display:flex;align-items:center;gap:8px;transition:border-color .15s,background .15s;height:100%}.portal-btn-share:hover{border-color:var(--zinc-300);background:var(--zinc-50)}.portal-share-dropdown{position:absolute;bottom:calc(100% + 8px);right:0;background:var(--white);border:1px solid var(--zinc-200);border-radius:10px;padding:6px;min-width:180px;box-shadow:0 8px 30px rgba(0,0,0,.1);z-index:10}.portal-share-item{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:6px;font-size:13px;font-family:inherit;color:var(--zinc-700);transition:background .1s;background:none;border:none;cursor:pointer;text-decoration:none;width:100%;text-align:left}.portal-share-item:hover{background:var(--zinc-50)}.portal-share-item svg{width:16px;height:16px;flex-shrink:0;color:var(--zinc-400)}.portal-clip-footer{width:100%;max-width:860px;text-align:center;padding-top:8px}.portal-clip-footer p{font-size:11px;color:var(--zinc-400);margin:0}.portal-modal-backdrop{position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:400;display:flex;align-items:safe center;justify-content:center;overflow-y:auto;padding:16px}.portal-modal{background:var(--white);border-radius:14px;padding:24px;width:100%;max-width:420px;box-shadow:0 20px 60px rgba(0,0,0,.25);font-family:inherit}.portal-modal-title{margin:0 0 16px;font-size:16px;font-weight:600;color:var(--zinc-800);line-height:1.4}.portal-modal-radio-group{display:flex;flex-direction:column;gap:10px;margin-bottom:20px}.portal-modal-radio{display:flex;align-items:center;gap:10px;font-size:14px;color:var(--zinc-800);cursor:pointer}.portal-modal-radio input[type=radio]{accent-color:var(--brand-primary);width:16px;height:16px;cursor:pointer}.portal-modal-input{width:100%;padding:12px 14px;border:1.5px solid var(--zinc-200);border-radius:8px;font-size:16px;font-family:inherit;color:var(--zinc-800);outline:none;margin-bottom:20px;transition:border-color .15s,box-shadow .15s}.portal-modal-input:focus{border-color:var(--brand-primary);box-shadow:0 0 0 3px var(--brand-primary-tint)}.portal-modal-consent{display:flex;align-items:flex-start;gap:8px;margin-bottom:20px;font-size:12px;line-height:1.5;color:var(--zinc-600);cursor:pointer}.portal-modal-consent input[type=checkbox]{margin-top:2px;flex-shrink:0;cursor:pointer}.portal-modal-consent a{color:var(--brand-primary);text-decoration:underline}.portal-modal-actions{display:flex;justify-content:flex-end;gap:8px}.portal-modal-btn{background:var(--brand-primary);color:var(--white);border:none;padding:9px 16px;border-radius:8px;font-size:13px;font-weight:500;font-family:inherit;cursor:pointer;transition:background .15s,opacity .15s}.portal-modal-btn:hover:not(:disabled){background:var(--brand-primary-light)}.portal-modal-btn:disabled{opacity:.6;cursor:default}.portal-modal-btn-secondary{background:var(--white);color:var(--zinc-600);border:1.5px solid var(--zinc-200)}.portal-modal-btn-secondary:hover:not(:disabled){background:var(--zinc-50);border-color:var(--zinc-300)}.portal-modal-report{max-width:560px}.portal-report-prompt{text-align:center;font-size:12px;color:var(--zinc-500);margin:12px 0 0}.portal-report-link{background:none;border:none;padding:0;font:inherit;color:var(--brand-primary);font-weight:500;cursor:pointer;text-decoration:underline}.portal-modal-field{display:flex;flex-direction:column;gap:6px;margin-bottom:16px}.portal-modal-field label{font-size:13px;font-weight:500;color:var(--zinc-600)}.portal-modal-select,.portal-modal-textarea{width:100%;padding:12px 14px;border:1.5px solid var(--zinc-200);border-radius:8px;font-size:16px;font-family:inherit;color:var(--zinc-800);outline:none;background:var(--white);transition:border-color .15s,box-shadow .15s}.portal-modal-textarea{resize:vertical}.portal-modal-select:focus,.portal-modal-textarea:focus{border-color:var(--brand-primary);box-shadow:0 0 0 3px var(--brand-primary-tint)}.portal-report-confirm{font-size:14px;color:var(--zinc-800);line-height:1.5;margin:0 0 12px}.portal-report-fallback{font-size:12px;color:var(--zinc-500);line-height:1.5;margin:0 0 20px}.portal-password-gate-backdrop{position:relative;inset:unset;flex:1 1;display:flex;align-items:flex-start;justify-content:center;padding:24px 0;background:transparent;z-index:auto}.portal-password-gate-modal{margin-top:8px}.portal-password-gate-subtitle{margin:-8px 0 16px}.portal-password-gate-error{margin:-12px 0 16px;font-size:13px;color:#b91c1c}.portal-password-gate-cancel{text-decoration:none;display:inline-flex;align-items:center;justify-content:center}@media (min-width:1100px){.portal-app{padding:var(--page-padding-y) var(--page-padding-x)}.portal-container{grid-template-columns:1fr 1fr;height:calc(100vh - 32px);overflow:hidden}.portal-left{display:block;height:auto;min-height:0}.portal-left-content{position:absolute;bottom:0;left:0;right:0;padding:36px}.portal-left-content h1{font-size:28px}.portal-right{overflow:hidden;padding:36px 32px 28px}.portal-grad-list{flex:1 1;overflow:hidden auto}.portal-event-list{flex:1 1;overflow-y:auto}.portal-clip-nav-inner{padding:var(--page-padding-y) 32px}.portal-clip-content{padding:20px 32px 32px}.portal-video.portrait{width:max(464px,calc((100vh - 200px) * 9 / 16));height:max(825px,calc(100vh - 200px));max-width:100%;max-height:none}.portal-info-card.portrait{max-width:max(464px,calc((100vh - 200px) * 9 / 16))}.portal-info-divider{flex-direction:row;gap:48px}.portal-info-divider.portrait{flex-direction:column;gap:12px}}