/* Three Brothers Party Boat Trip | customer & crew access */
.portal-main{background:#f4f7f6;min-height:100vh;padding-top:0!important}
.portal-hero{background:linear-gradient(120deg,#092d3d 0%,#0d5261 100%);color:white;padding:160px 0 85px;position:relative;overflow:hidden}
.portal-hero:after{content:"";position:absolute;inset:0;background:radial-gradient(ellipse at 96% 8%,#13ada430,transparent 55%);pointer-events:none}
.portal-hero .shell{position:relative;z-index:1}
.portal-hero .eyebrow{color:#ffd05a}
.portal-hero h1{max-width:850px;font-size:clamp(2.7rem,5.6vw,5.2rem);line-height:1.03;letter-spacing:-.05em;margin-bottom:20px}
.portal-hero p{font-size:1.09rem;color:#cbe6e7;max-width:650px;margin-bottom:0}
.portal-tabs{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:28px}
.portal-tabs a{display:inline-flex;align-items:center;gap:8px;border:1px solid #ffffff55;padding:9px 17px;border-radius:50px;color:#fff;font-size:.86rem;text-decoration:none;font-weight:800}
.portal-tabs a[aria-current=page],.portal-tabs a:hover{background:#fbc856;color:#103340;border-color:#fbc856}
.portal-section{padding:58px 0 94px}
.portal-layout{display:grid;grid-template-columns:minmax(0,1.08fr) minmax(310px,.92fr);gap:28px;align-items:start}
.portal-panel{background:white;border-radius:24px;border:1px solid #dce8e6;padding:clamp(22px,3.7vw,42px);box-shadow:0 16px 48px #0626350c}
.portal-panel h2{font-size:clamp(1.55rem,2.8vw,2.4rem);margin-bottom:13px}
.portal-panel h3{font-size:1.1rem;margin:20px 0 11px}
.portal-label{font-size:.72rem;letter-spacing:.14em;color:#067d79;text-transform:uppercase;font-weight:900}
.portal-field{margin-top:16px;display:flex;flex-direction:column;gap:7px}
.portal-field label{font-size:.85rem;font-weight:800}
.portal-field input,.portal-field select{width:100%;min-height:48px;border:1px solid #c6d7d5;background:#f8fbfa;border-radius:11px;padding:11px 14px;color:#0b2a38;outline-offset:3px}
.portal-field input:focus,.portal-field select:focus{border-color:#0e9f96;box-shadow:0 0 0 3px #19b3a525}
.portal-grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px}
.portal-action{margin-top:20px;display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.portal-action .btn{font-size:.9rem}
.portal-note{font-size:.82rem;color:#516974;line-height:1.55;margin-top:15px}
.portal-alert{margin:18px 0;padding:13px 16px;border-radius:12px;background:#fff4d9;border:1px solid #f2d68f;font-size:.87rem;line-height:1.5;color:#674e10}
.portal-alert[data-kind=error]{background:#ffece8;border-color:#efb5a4;color:#9d2d1b}
.portal-alert[data-kind=success]{background:#e5f7f0;border-color:#8accab;color:#15553c}
.portal-alert[hidden],.portal-login[hidden],.portal-logged-in[hidden],.portal-empty[hidden],.portal-admin[hidden],.portal-camera[hidden]{display:none!important}
.portal-feature{position:relative;overflow:hidden;border-radius:24px;background:#092c3a;color:#fff;min-height:430px;padding:28px;background-image:linear-gradient(180deg,#092c3a3e,#092c3a 88%),url('../images/boat-at-pier-large.webp');background-size:cover;background-position:center}
.portal-feature__inner{position:relative;margin-top:175px}
.portal-feature__inner strong{font-size:1.5rem;display:block;line-height:1.15}
.portal-feature__inner p{color:#d2e8e9;font-size:.9rem;margin:10px 0 0}
.portal-feature__tag{background:#ffcb51;color:#0b2a38;border-radius:99px;display:inline-block;padding:8px 13px;font-weight:850;font-size:.74rem;letter-spacing:.07em}
.portal-feature__card{padding:15px 17px;background:#ffffffed;border-radius:13px;color:#0b2a38;margin-top:21px}
.portal-feature__card span{display:block;color:#536773;font-size:.72rem;text-transform:uppercase;font-weight:900;letter-spacing:.1em}
.portal-feature__card b{font-size:1rem}
.portal-statusline{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap;border-bottom:1px solid #dde8e7;padding-bottom:18px;margin-bottom:24px}
.portal-booking{border:1px solid #d6e6e4;border-radius:18px;background:#fff;margin-top:22px;padding:23px}
.portal-booking__head{display:flex;justify-content:space-between;gap:15px;align-items:start;flex-wrap:wrap}
.portal-booking__head h3{font-size:1.25rem;margin:0}
.portal-booking__head p{font-size:.83rem;color:#536773;margin:8px 0}
.portal-status{display:inline-flex;align-items:center;padding:5px 11px;border-radius:40px;font-weight:850;font-size:.72rem;text-transform:uppercase;letter-spacing:.04em;background:#e2f4ec;color:#146541}
.portal-status[data-status=pending]{background:#fff0d2;color:#775016}
.portal-status[data-status=used],.portal-status[data-status=cancelled]{background:#e7e9ed;color:#455766}
.portal-pass-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(235px,1fr));gap:16px;margin-top:18px}
.portal-pass{border:1px solid #bad4d1;border-radius:16px;background:linear-gradient(155deg,#fff,#f5f9f7);padding:19px;position:relative;overflow:hidden}
.portal-pass:before{content:"";position:absolute;width:85px;height:85px;border-radius:50%;right:-28px;top:-24px;background:#fbc94c3a}
.portal-pass__brand{color:#007e7a;font-size:.67rem;letter-spacing:.11em;text-transform:uppercase;font-weight:950}
.portal-pass h4{font-size:1.15rem;margin:12px 0 7px}
.portal-pass__date{font-weight:900;color:#123848;margin-bottom:10px}
.portal-pass__line{display:flex;gap:10px;align-items:baseline;justify-content:space-between;font-size:.77rem;margin:6px 0}
.portal-pass__line span:first-child{color:#526c75}
.portal-pass__qr{display:grid;place-items:center;min-height:166px;margin:16px auto 7px;background:#fff;width:177px;border:1px solid #dae6e2;border-radius:11px}
.portal-pass__qr canvas,.portal-pass__qr img{margin:auto!important;max-width:156px;height:auto}
.portal-pass__code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.68rem;overflow-wrap:anywhere;text-align:center;background:#eaf3f1;border-radius:7px;padding:7px}
.portal-pass__foot{font-size:.72rem;color:#476771;text-align:center;margin:8px 0 0}
.portal-pass--used{opacity:.76}
.portal-empty{text-align:center;padding:45px 20px;border:1px dashed #bdd2d0;border-radius:16px;margin-top:20px}
.portal-empty h3{margin:10px 0}
.portal-empty p{margin:0 auto;color:#536773}
.portal-crew-result{margin-top:20px;padding:20px;border-radius:16px;background:#eef5f3;border:1px solid #d4e3e0}
.portal-crew-result[data-status=valid]{background:#e2f7ed;border-color:#9cdec3}
.portal-crew-result[data-status=invalid]{background:#ffebe6;border-color:#ecaa95}
.portal-crew-result h3{font-size:1.4rem;margin:0 0 10px}
.portal-crew-result dl{display:grid;grid-template-columns:100px auto;gap:7px;font-size:.86rem;margin:15px 0}
.portal-crew-result dt{font-weight:900;color:#48656d}.portal-crew-result dd{margin:0}
.portal-camera{margin-top:16px;background:#072e3e;padding:10px;border-radius:12px}
.portal-camera video{width:100%;max-height:300px;object-fit:cover;border-radius:8px}
.portal-steps{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-top:36px}
.portal-step{padding:19px;background:white;border:1px solid #dce7e4;border-radius:16px}
.portal-step b{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:#ffca4e;color:#072e3e;margin-bottom:14px}
.portal-step h3{font-size:1.04rem;margin:0 0 9px}.portal-step p{font-size:.83rem;color:#547078;margin:0}
@media(max-width:870px){.portal-layout{grid-template-columns:1fr}.portal-feature{min-height:340px}.portal-feature__inner{margin-top:100px}.portal-steps{grid-template-columns:1fr}.portal-hero{padding-top:145px}}
@media(max-width:540px){.portal-hero h1{font-size:2.7rem}.portal-section{padding:35px 0 66px}.portal-panel{border-radius:18px}.portal-grid-2{grid-template-columns:1fr}.portal-pass-list{grid-template-columns:1fr}.portal-booking{padding:16px}.portal-action .btn{width:100%}}
@media print{.site-header,.footer,.portal-hero,.portal-login,.portal-action,.portal-feature,.portal-steps,.portal-note,.portal-alert,.portal-section> .shell>.portal-label,.portal-statusline button,.portal-admin{display:none!important}.portal-main,.portal-section{background:#fff!important;padding:0!important}.portal-layout,.portal-panel{display:block;box-shadow:none;border:0;padding:0}.portal-pass-list{display:block}.portal-pass{break-inside:avoid;page-break-inside:avoid;margin:20px auto;max-width:520px;print-color-adjust:exact}.portal-booking{border:0}body{font-size:12px}}
