/* PLAY Design System component subset used by the reservation prototype. */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:40px;padding-inline:20px;border-radius:var(--r-md);font-size:var(--fs-body-sm);font-weight:var(--fw-bold)}
.btn--dark{background:var(--ink);color:var(--white)}
.btn--cta{background:var(--yellow-500);color:var(--ink);transition:background-color .18s,box-shadow .18s,transform .18s}
.btn--cta:hover{background:var(--yellow-400);box-shadow:0 6px 16px rgba(162,148,29,.24);transform:translateY(-1px)}
.btn--cta:active{box-shadow:none;transform:translateY(0)}
.btn--full{width:100%;height:48px;font-size:var(--fs-body-lg)}
.btn[disabled]{opacity:.4;cursor:not-allowed}
.ds-btn-outline{background:var(--white);border:1px solid var(--line);color:var(--ink)}
.chips{display:flex;gap:8px;flex-wrap:wrap}
.chip{height:36px;min-width:48px;padding-inline:14px;border:1px solid var(--line);border-radius:var(--r-md);background:var(--white);color:var(--grey);font-size:var(--fs-label);font-weight:var(--fw-medium);display:inline-flex;align-items:center;justify-content:center;gap:8px;white-space:nowrap}
.chip:hover{background:var(--bg)}
.chip.is-selected{background:var(--ink);border-color:var(--ink);color:var(--white)}
.chip--slots,.chip--slots.is-selected{background:var(--white);border-color:var(--ink);color:var(--ink)}
.chip--slots.is-selected{box-shadow:inset 0 0 0 1px var(--ink)}
.chip[disabled]{opacity:.4;cursor:not-allowed}
.badge{height:26px;padding-inline:12px;border-radius:var(--r-full);font-size:var(--fs-label);font-weight:var(--fw-medium);display:inline-flex;align-items:center;width:max-content}
.badge--on{background:var(--ink);color:var(--white)}
.badge--muted{background:#EDEDEF;color:var(--ink)}
.badge--ended{background:transparent;border:1px solid var(--line);color:var(--soft)}
.tag--cat{height:26px;padding-inline:12px;border-radius:var(--r-full);font-size:var(--fs-label);display:inline-flex;align-items:center;width:max-content}
.tag--event{background:var(--yellow-500);color:var(--ink)}
.tag--season{background:var(--coral-500);color:var(--ink)}
.tag--exp{background:var(--ground-500);color:var(--ink)}
.tag--fac{background:var(--green-500);color:var(--ink)}
.card{display:flex;flex-direction:column}
.card__media{position:relative;border-radius:var(--r-media);overflow:hidden;background:var(--img,var(--neut-thumb));background-size:cover;background-position:center;margin-bottom:16px}
.card__title{font-size:var(--fs-h3);font-weight:var(--fw-semibold);padding-inline:2px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.card__sub{font-size:var(--fs-body-sm);color:var(--grey);margin-top:5px;padding-inline:2px;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}
.card--wide{width:420px}
.program-card.card--wide{width:auto;flex-direction:row}
.program-card .card__media{margin-bottom:0;border-radius:0}
.program-copy>.tag--cat{margin-bottom:10px}
button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid var(--yellow-500);outline-offset:2px}
.reservation-header{height:72px;padding-inline:var(--pad-page);display:flex;align-items:center;justify-content:space-between;background:var(--white);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:50}
.reservation-brand{display:flex;align-items:center;text-decoration:none;color:var(--ink)}
.reservation-brand img{width:auto;height:60px}
.reservation-header__actions{display:flex;align-items:center;gap:8px}.reservation-header__actions button{height:40px;padding-inline:14px;border-radius:var(--r-md);font-size:var(--fs-label)}
.reservation-header__actions .header-login{background:var(--ink);color:var(--white);font-weight:700}
.ticket-brand{font-size:var(--fs-body-sm)}
.experience-options{display:grid;grid-template-columns:1fr 1fr;gap:12px}.experience-card{position:relative;text-align:left;border:1px solid var(--line);border-radius:var(--r-lg);padding:18px;background:var(--white);transition:border-color .18s,background-color .18s,transform .18s}.experience-card:hover{border-color:var(--ground-400);transform:translateY(-1px)}.experience-card:focus-visible{outline:3px solid var(--green-300);outline-offset:2px}.experience-card.is-selected{border-color:var(--green-400);background:var(--green-100)}.experience-card__icon{width:54px;height:54px;border-radius:50%;display:grid;place-items:center;background:var(--ground-200);font-size:29px;margin-bottom:14px}.experience-card:nth-child(2) .experience-card__icon{background:var(--green-200)}.experience-card__head{display:flex;justify-content:space-between;align-items:end;gap:10px;padding-bottom:14px;border-bottom:1px solid var(--line)}.experience-card__head small,.experience-card__head strong{display:block}.experience-card__head small{font-size:10px;font-weight:var(--fw-bold);color:var(--grey);margin-bottom:4px}.experience-card:first-child .experience-card__head small{display:inline-flex;align-items:center;width:max-content;padding:7px 13px;border-radius:var(--r-full);background:var(--ground-500);color:var(--ink);font-size:var(--fs-caption);line-height:1;margin-bottom:9px}.experience-card__head strong{font-size:var(--fs-body-lg)}.experience-card__head>b{font-size:var(--fs-h3)}.experience-card ul{margin:14px 0 0;padding:0;list-style:none}.experience-card li{position:relative;padding-left:14px;margin-top:7px;color:var(--grey);font-size:var(--fs-caption);line-height:1.45}.experience-card li:before{content:"✓";position:absolute;left:0;color:var(--ink);font-weight:700}.citizen-banner{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:12px;padding:14px 16px;border:1px solid var(--yellow-300);border-radius:var(--r-md);background:var(--yellow-100)}.citizen-banner strong{font-size:var(--fs-body-sm)}.citizen-banner span{color:var(--grey);font-size:var(--fs-caption)}.experience-overlap,.weather-note{margin:12px 0 0;color:var(--grey);font-size:var(--fs-caption)}.slot-guide{display:grid;grid-template-columns:1fr 1fr;gap:1px;border:1px solid var(--line);border-radius:var(--r-md);overflow:hidden;background:var(--line);margin-bottom:16px}.slot-guide span{display:flex;gap:10px;background:var(--green-100);padding:11px 12px;color:var(--grey);font-size:var(--fs-caption)}.slot-guide b{min-width:60px;color:var(--ink)}
.experience-card:first-child .experience-card__head small{display:block;width:auto;padding:0;border-radius:0;background:transparent;color:var(--grey);font-size:10px;line-height:normal;margin-bottom:4px}
.citizen-banner{margin-top:18px;padding:0 2px;border:0;border-radius:0;background:transparent}.citizen-banner strong{display:flex;align-items:center;gap:8px}.citizen-banner .citizen-banner__rate{height:28px;padding:0 10px;border-radius:var(--r-full);display:inline-flex;align-items:center;background:var(--yellow-500);color:var(--ink);font-size:var(--fs-caption);font-weight:800}.experience-overlap{margin-top:10px;padding-left:2px}
.booking-summary .tag--exp{background:var(--green-500);color:var(--ink);font-weight:var(--fw-bold)}
.login-dialog{width:min(420px,calc(100% - 32px));padding:0;border:1px solid var(--line);border-radius:var(--r-hero);background:var(--white);color:var(--ink)}
.login-dialog::backdrop{background:var(--ink);opacity:.55;backdrop-filter:blur(3px)}
.login-dialog__body{position:relative;padding:36px}
.login-dialog__close{position:absolute;right:16px;top:14px;width:36px;height:36px;border-radius:50%;color:var(--grey);font-size:24px;line-height:1}
.login-dialog__close:hover{background:var(--bg);color:var(--ink)}
.login-dialog h2{margin:8px 0;font-size:28px}
.login-dialog p{margin:0 0 24px;color:var(--grey);font-size:var(--fs-body-sm)}
.login-providers{display:grid;gap:10px}
.login-provider{height:54px;border-radius:var(--r-md);display:flex;align-items:center;justify-content:center;gap:10px;font-size:var(--fs-body);font-weight:var(--fw-bold)}
.login-provider span{width:24px;height:24px;border-radius:50%;display:grid;place-items:center;font-size:12px;font-weight:800}
kbd{display:inline-grid;min-width:20px;height:18px;padding:0 4px;place-items:center;border:1px solid var(--line);border-bottom-width:2px;border-radius:var(--r-sm);background:var(--bg);color:var(--grey);font:600 9px var(--font-sans)}
.developer-policy-dialog{width:min(1120px,calc(100vw - 32px));max-height:calc(100vh - 40px);padding:0;border:0;border-radius:var(--r-lg);color:var(--ink);box-shadow:var(--shadow-fab)}
.developer-policy-dialog::backdrop{background:var(--ink);opacity:.55;backdrop-filter:blur(3px)}
.developer-policy-dialog form{display:flex;flex-direction:column;max-height:calc(100vh - 40px)}
.developer-policy-dialog header{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;padding:22px 24px;border-bottom:1px solid var(--line);background:var(--white)}
.developer-policy-dialog header small{display:block;color:var(--coral-700);font-size:var(--fs-badge);font-weight:var(--fw-bold);letter-spacing:.06em}
.developer-policy-dialog header h2{margin:6px 0 4px;font-size:var(--fs-h1);letter-spacing:-.03em}
.developer-policy-dialog header p{margin:0;color:var(--grey);font-size:var(--fs-caption)}
.developer-policy-dialog header>button{font-size:26px;color:var(--grey);line-height:1}
.developer-policy-tabs{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:12px 24px;border-bottom:1px solid var(--line);background:var(--white)}
.developer-policy-tabs button{min-height:52px;padding:0 16px;border:1px solid var(--line);border-radius:var(--r-md);display:grid;grid-template-columns:38px 1fr auto;align-items:center;gap:10px;background:var(--bg);color:var(--grey);text-align:left}
.developer-policy-tabs button[aria-selected="true"]{border-color:var(--ink);background:var(--ink);color:var(--white)}
.developer-policy-tabs b{width:32px;height:28px;border-radius:var(--r-sm);display:grid;place-items:center;background:var(--white);color:var(--ink);font-size:var(--fs-caption)}
.developer-policy-tabs span{font-size:var(--fs-body-sm);font-weight:var(--fw-bold)}
.developer-policy-tabs small{font-size:var(--fs-badge);opacity:.75}
.developer-policy-body{padding:20px 24px;overflow:auto;background:var(--bg)}
.policy-panel-summary{margin:0 0 14px;padding:12px 14px;border-left:3px solid var(--ink);background:var(--white);color:var(--grey);font-size:var(--fs-caption);line-height:1.55}
.policy-panel-summary b{display:inline-flex;margin-right:8px;padding:3px 7px;border-radius:var(--r-full);background:var(--yellow-100);color:var(--ink);font-size:var(--fs-badge)}
.policy-group{margin-top:14px;border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden;background:var(--white)}
.policy-group:first-of-type{margin-top:0}
.developer-policy-dialog .policy-group>header{padding:15px 18px;border:0;border-bottom:1px solid var(--line);display:grid;grid-template-columns:1fr auto;gap:3px 12px;background:var(--white)}
.developer-policy-dialog .policy-group>header small{grid-column:1;color:var(--coral-700);font-size:var(--fs-badge);font-weight:var(--fw-bold);letter-spacing:.06em}
.developer-policy-dialog .policy-group>header h3{grid-column:1;margin:0;font-size:var(--fs-body-lg)}
.developer-policy-dialog .policy-group>header span{grid-column:2;grid-row:1/3;align-self:center;padding:6px 9px;border-radius:var(--r-full);background:var(--bg);color:var(--grey);font-size:var(--fs-badge);font-weight:var(--fw-bold)}
.policy-flow-list{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--line)}
.policy-flow{min-width:0;background:var(--white)}
.policy-flow summary{min-height:50px;padding:0 16px;display:flex;align-items:center;justify-content:space-between;gap:12px;cursor:pointer;list-style:none;font-size:var(--fs-caption);font-weight:var(--fw-bold)}
.policy-flow summary::-webkit-details-marker{display:none}
.policy-flow summary i{width:8px;height:8px;border-right:2px solid var(--grey);border-bottom:2px solid var(--grey);transform:rotate(45deg);transition:transform .18s}
.policy-flow[open] summary i{transform:rotate(225deg)}
.policy-flow dl{margin:0;padding:0 16px 14px}
.policy-rule{display:grid;grid-template-columns:76px 1fr;gap:10px;padding:9px 0;border-top:1px solid var(--line)}
.policy-rule dt{color:var(--grey);font-size:var(--fs-badge);font-weight:var(--fw-bold)}
.policy-rule dd{margin:0;color:var(--ink);font-size:var(--fs-badge);line-height:1.55;word-break:keep-all}
.policy-group.is-pending{border-color:var(--yellow-300)}
.developer-policy-dialog .policy-group.is-pending>header{background:var(--yellow-100)}
.developer-policy-dialog footer{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 24px;border-top:1px solid var(--line);background:var(--white)}
.developer-policy-dialog footer>span{color:var(--grey);font-size:var(--fs-badge)}
.developer-policy-dialog kbd{min-width:25px;height:25px;font-size:11px}
@media(max-width:997px){.developer-policy-body{padding:14px}.developer-policy-tabs{padding:10px 14px}.policy-flow-list{grid-template-columns:1fr}.developer-policy-dialog>form>header,.developer-policy-dialog footer{padding:16px}.developer-policy-dialog footer>span{display:none}}
@media(max-width:560px){.developer-policy-tabs button{grid-template-columns:34px 1fr;padding:0 10px}.developer-policy-tabs button small{display:none}.developer-policy-tabs span{font-size:var(--fs-caption)}.developer-policy-dialog>form>header h2{font-size:20px}.developer-policy-dialog>form>header p{display:none}.policy-rule{grid-template-columns:1fr;gap:4px}.policy-rule dd{font-size:10px}}
.login-provider--kakao{background:#FEE500;color:#191919}
.login-provider--kakao span{background:#191919;color:#FEE500}
.login-provider--naver{background:#03C75A;color:var(--white)}
.login-provider--naver span{background:var(--white);color:#03C75A}
.login-dialog__body>small{display:block;margin-top:18px;color:var(--grey);font-size:10px;text-align:center}
.confirm-section .payment-options{grid-template-columns:repeat(2,1fr);gap:12px}
.confirm-section .payment-options button{height:64px;border:1px solid var(--line);border-radius:var(--r-lg);background:var(--white);font-size:var(--fs-body-lg);font-weight:var(--fw-bold);transition:border-color .18s,box-shadow .18s,background-color .18s}
.confirm-section .payment-options button:hover{border-color:var(--yellow-400);background:var(--yellow-100)}
.confirm-section .payment-options button.is-selected{border:1px solid var(--yellow-400);background:var(--yellow-100);box-shadow:0 0 0 4px var(--yellow-200)}
.confirm-wrap .confirm-bottom{display:block;margin-top:24px}
.confirm-bottom .btn--payment{width:100%;height:58px;background:var(--yellow-500);color:var(--ink);font-size:20px;box-shadow:0 6px 16px rgba(162,148,29,.22);transition:background-color .18s,box-shadow .18s,transform .18s}
.confirm-bottom .btn--payment:hover{background:var(--yellow-400);box-shadow:0 8px 20px rgba(162,148,29,.28);transform:translateY(-1px)}
.confirm-bottom .btn--payment:active{box-shadow:none;transform:translateY(0)}
.confirm-bottom .btn--payment span{font-weight:800}
.terms input{accent-color:var(--ink)}
.reservation-steps span[data-step-label] i{background:var(--ground-200);color:var(--ink)}
.reservation-steps span[data-step-label].is-current i{background:var(--yellow-500);color:var(--ink)}
.reservation-steps span[data-step-label].is-done i{background:var(--green-500);color:var(--ink)}
[hidden]{display:none!important}
.reservation-complete{width:min(680px,calc(100% - 32px));margin:0 auto;padding:64px 0 88px}
.reservation-complete>p{max-width:520px;margin:0 auto;line-height:1.65}
.complete-booking-card{margin:30px 0 22px;border:1px solid var(--line);border-radius:var(--r-hero);display:grid;grid-template-columns:220px 1fr;overflow:hidden;background:var(--white);text-align:left}
.complete-booking-card>img{width:100%;height:100%;min-height:238px;object-fit:cover}
.complete-booking-card__body{padding:26px}
.complete-booking-card__body>small{color:var(--grey);font-size:var(--fs-caption)}
.complete-booking-card__body h2{margin:6px 0 20px;font-size:var(--fs-h2)}
.complete-booking-card__body dl{margin:0;display:grid;gap:10px}
.complete-booking-card__body dl div{display:flex;align-items:center;justify-content:space-between;gap:20px}
.complete-booking-card__body dt{color:var(--grey);font-size:var(--fs-label)}
.complete-booking-card__body dd{margin:0;font-size:var(--fs-label);font-weight:var(--fw-bold);text-align:right}
.reservation-complete .complete-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}
.reservation-complete .complete-actions .btn{height:54px}
.my-tickets-screen{min-height:calc(100vh - 72px);padding:46px var(--pad-page) 88px;background:linear-gradient(180deg,var(--yellow-100) 0,var(--ground-100) 300px)}
.my-tickets-wrap{width:min(900px,100%);margin:0 auto}
.my-tickets-wrap>.ticket-detail-view{padding-top:2px}
.my-tickets-head{margin:8px 0 28px;display:flex;align-items:end;justify-content:space-between;gap:24px}
.my-tickets-head h1{margin:0 0 8px;font-size:38px;letter-spacing:-.04em}
.my-tickets-head p{margin:0;color:var(--grey);font-size:var(--fs-label)}
.my-tickets-head>span{flex:0 0 auto;padding:9px 14px;border-radius:var(--r-full);background:var(--yellow-100);color:var(--ink);font-size:var(--fs-caption);font-weight:var(--fw-bold)}
.ticket-list{display:grid;gap:14px}
.ticket-account-links{display:flex;justify-content:flex-end;align-items:center;gap:8px;margin:32px 0 0}
.ticket-account-links>span{color:var(--line);font-size:var(--fs-badge)}
.ticket-account-links__item{padding:4px 0;color:var(--soft);font-size:var(--fs-badge);text-decoration:underline;text-underline-offset:3px}
.ticket-account-links__item:hover{color:var(--grey)}
.ticket-list-card{width:100%;min-height:150px;padding:16px;border:1px solid var(--line);border-radius:var(--r-hero);display:grid;grid-template-columns:170px minmax(0,1fr) auto;align-items:center;gap:22px;background:var(--white);box-shadow:0 8px 24px rgba(24,24,28,.04);text-align:left;transition:border-color .18s,box-shadow .18s,transform .18s}
.ticket-list-card:hover{border-color:var(--yellow-400);transform:translateY(-2px)}
.ticket-list-card>img{width:170px;height:116px;border-radius:var(--r-lg);object-fit:cover}
.ticket-list-card__body{min-width:0;display:flex;align-items:flex-start;flex-direction:column}
.ticket-list-card__status{display:inline-flex;align-items:center;gap:7px;width:max-content;height:26px;padding:0 12px;border:1px solid transparent;border-radius:var(--r-full);font-size:var(--fs-badge);font-weight:var(--fw-semibold);line-height:1}
.ticket-list-card__status::before{content:"";width:6px;height:6px;border-radius:var(--r-full);background:currentColor;flex:0 0 auto}
.ticket-list-card__status--upcoming{border-color:var(--yellow-300);background:var(--yellow-100);color:var(--ink)}
.ticket-list-card__status--upcoming::before{background:var(--yellow-500)}
.ticket-list-card__status--active{border-color:var(--green-300);background:var(--green-100);color:var(--ink)}
.ticket-list-card__status--active::before{background:var(--green-500)}
.ticket-list-card__status--ended{border-color:var(--line);background:var(--white);color:var(--grey)}
.ticket-list-card__status--ended::before{background:var(--soft)}
.ticket-list-card__title{max-width:100%;margin-top:10px;font-size:var(--fs-body-lg);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ticket-list-card__schedule{margin-top:5px;color:var(--grey);font-size:var(--fs-label)}
.ticket-list-card__meta{margin-top:12px;font-size:var(--fs-caption);font-weight:var(--fw-bold)}
.ticket-list-card__arrow{padding-right:8px;color:var(--ink);font-size:var(--fs-label);font-weight:var(--fw-bold)}
.ticket-list-empty{padding:70px 24px;border:1px dashed var(--line);border-radius:var(--r-hero);background:var(--white);text-align:center}
.ticket-list-empty strong{font-size:var(--fs-body-lg)}
.ticket-list-empty p{margin:8px 0 24px;color:var(--grey);font-size:var(--fs-label)}
.ticket-detail-view>.back-link{margin-left:max(0px,calc((100% - 680px)/2))}
.ticket-screen{padding:36px 0 80px}
.entry-ticket{width:min(680px,calc(100% - 32px));margin:0 auto;text-align:left;color:var(--ink)}
.ticket-order-summary{margin-top:22px;padding:26px 30px;border:1px solid var(--line);border-radius:24px;background:var(--white);box-shadow:0 10px 30px rgba(24,24,28,.05)}
.ticket-order-summary>header{display:flex;align-items:center;justify-content:space-between;gap:20px;padding-bottom:18px;border-bottom:1px solid var(--line)}
.ticket-order-summary>header small{color:var(--grey);font-size:var(--fs-badge);font-weight:var(--fw-bold);letter-spacing:.12em}
.ticket-order-summary>header h1{margin:4px 0 0;font-size:28px}
.ticket-order-summary>header>span{padding:7px 11px;border-radius:var(--r-full);background:var(--green-100);color:var(--green-800);font-size:var(--fs-caption);font-weight:var(--fw-bold)}
.ticket-order-summary dl{margin:18px 0 0;display:grid;gap:12px}
.ticket-order-summary dl div{display:flex;align-items:flex-start;justify-content:space-between;gap:24px}
.ticket-order-summary dt{color:var(--grey);font-size:var(--fs-label)}
.ticket-order-summary dd{margin:0;font-size:var(--fs-label);font-weight:var(--fw-bold);text-align:right;font-variant-numeric:tabular-nums}
.entry-ticket__status{position:relative;z-index:2;min-height:290px;padding:34px 38px;border-radius:28px;overflow:hidden;background:var(--ink);color:var(--white);transition:background-color .3s,box-shadow .3s}
.entry-ticket__status-top{display:flex;align-items:flex-start;justify-content:space-between;gap:20px}
.entry-ticket__indicators{min-width:0;display:flex;align-items:center;flex-wrap:wrap;gap:8px}
.entry-ticket__badge,.entry-ticket__discount{height:30px;padding:0 12px;border:1px solid transparent;border-radius:var(--r-full);display:inline-flex;align-items:center;gap:7px;font-size:var(--fs-badge);font-weight:var(--fw-semibold);line-height:1;white-space:nowrap}
.entry-ticket__badge{border-color:var(--yellow-300);background:var(--yellow-100);color:var(--ink)}
.entry-ticket__badge i{width:6px;height:6px;border-radius:var(--r-full);background:var(--yellow-500);flex:0 0 auto}
.entry-ticket__clock{text-align:right}
.entry-ticket__clock small,.entry-ticket__clock strong{display:block}
.entry-ticket__clock small{color:var(--line);font-size:var(--fs-caption)}
.entry-ticket__clock strong{margin-top:3px;font-size:28px;font-variant-numeric:tabular-nums}
.entry-ticket__status>p{margin:66px 0 8px;color:var(--line);font-size:var(--fs-label);font-weight:var(--fw-bold)}
.entry-ticket__status>h1{margin:0 0 12px;font-size:38px;line-height:1.14;letter-spacing:-.04em;word-break:keep-all}
.entry-ticket__status>strong{font-size:var(--fs-body-lg)}
.entry-ticket__pass{margin-top:-16px;padding:48px 38px 34px;border:1px solid var(--line);border-top:0;border-radius:0 0 30px 30px;background:var(--white);box-shadow:0 18px 44px rgba(24,24,28,.08)}
.entry-ticket__pass>header{display:flex;align-items:center;justify-content:space-between;gap:20px}
.entry-ticket__brand{display:flex;align-items:center;gap:14px}
.entry-ticket__brand img{width:124px;height:124px;object-fit:contain}
.entry-ticket__brand small,.entry-ticket__brand strong{display:block}
.entry-ticket__brand small{color:var(--grey);font-size:var(--fs-badge);font-weight:var(--fw-bold);letter-spacing:.12em}
.entry-ticket__brand strong{margin-top:4px;font-size:var(--fs-body-lg)}
.entry-ticket__pass>header>b{padding:8px 14px;border-radius:var(--r-full);background:var(--yellow-500);color:var(--ink);font-size:26px;line-height:1}
.entry-ticket__meta{display:grid;grid-template-columns:1fr 1fr 1.2fr;gap:12px;margin-top:26px}
.entry-ticket__meta>div{min-width:0;padding:18px;border:1px solid var(--line);border-radius:var(--r-lg);background:var(--white)}
.entry-ticket__meta small,.entry-ticket__meta strong{display:block}
.entry-ticket__meta small{color:var(--grey);font-size:var(--fs-caption)}
.entry-ticket__meta strong{margin-top:7px;font-size:var(--fs-body-lg);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.entry-ticket__live{min-height:180px;margin-top:22px;padding:24px 30px;border:1px solid var(--line);border-radius:24px;display:flex;align-items:center;justify-content:center;gap:32px;background:var(--white);color:var(--grey);text-align:center}
.entry-ticket__live>span{position:relative;flex:0 0 auto;width:180px;height:180px;border:5px dashed var(--soft);border-radius:50%;display:grid;place-items:center;background:var(--bg)}
.entry-ticket__live img{width:156px;height:156px;object-fit:contain;filter:grayscale(1);opacity:.45}
.entry-ticket__live>strong{max-width:260px;font-size:var(--fs-body-lg);line-height:1.5}
.entry-ticket__discount{width:fit-content;height:32px;padding:0 12px 0 8px;border:2px solid var(--coral-500);background:var(--coral-100);color:var(--ink);box-shadow:0 0 0 3px var(--coral-200)}
.entry-ticket__discount::before{content:"!";width:18px;height:18px;border-radius:var(--r-full);display:grid;place-items:center;background:var(--coral-500);color:var(--ink);font-size:var(--fs-badge);font-weight:var(--fw-bold);flex:0 0 auto}
.entry-ticket__discount[hidden]{display:none}
.entry-ticket__discount strong{font-weight:var(--fw-bold)}
.entry-ticket__discount>span{font-weight:var(--fw-bold)}
.entry-ticket__pass>dl{margin:24px 0 0;display:grid;gap:12px}
.entry-ticket__pass>dl div{display:flex;justify-content:space-between;gap:20px}
.entry-ticket__pass dt{color:var(--grey);font-size:var(--fs-label)}
.entry-ticket__pass dd{margin:0;font-size:var(--fs-label);font-weight:var(--fw-bold)}
.entry-ticket__window{margin-top:22px;padding:20px 28px;border:1px solid var(--yellow-300);border-radius:22px;display:grid;grid-template-columns:1fr 40px 1fr 40px 1fr;align-items:center;background:var(--yellow-100);text-align:center}
.entry-ticket__window div small,.entry-ticket__window div strong{display:block}
.entry-ticket__window small{color:var(--grey);font-size:var(--fs-caption)}
.entry-ticket__window strong{margin-top:5px;font-size:var(--fs-body-lg)}
.entry-ticket__window div:nth-of-type(2) strong{color:var(--ink)}
.entry-ticket__window i{height:1px;background:var(--line)}
.entry-ticket__note{margin:14px 20px 0;color:var(--grey);font-size:var(--fs-caption);line-height:1.6;text-align:center}
.ticket-payment-summary{margin-top:22px;padding:24px;border:1px solid var(--line);border-radius:20px;background:var(--white)}
.ticket-payment-summary>header{display:flex;align-items:center;justify-content:space-between;gap:16px;padding-bottom:17px;border-bottom:1px solid var(--line)}
.ticket-payment-summary h2{margin:0;font-size:var(--fs-body-lg)}
.ticket-payment-summary>header span{color:var(--grey);font-size:var(--fs-caption);font-weight:var(--fw-bold);text-align:right}
.ticket-payment-summary dl{margin:18px 0;display:grid;gap:12px}
.ticket-payment-summary dl div{display:flex;align-items:center;justify-content:space-between;gap:20px}
.ticket-payment-summary dt{color:var(--grey);font-size:var(--fs-label)}
.ticket-payment-summary dd{margin:0;font-size:var(--fs-label);font-weight:var(--fw-bold)}
.ticket-payment-summary dl div:first-child dd{font-size:24px}
.ticket-cancellation{margin-top:22px;padding:18px;border:1px solid var(--line);border-radius:18px;background:var(--white)}.ticket-cancellation__intro{display:flex;align-items:center;justify-content:space-between;gap:18px}.ticket-cancellation__intro strong,.ticket-cancellation__intro small{display:block}.ticket-cancellation__intro strong{font-size:var(--fs-label)}.ticket-cancellation__intro small{margin-top:5px;color:var(--grey);font-size:var(--fs-caption);line-height:1.5}.ticket-cancellation__intro>button{min-width:92px;height:38px;padding:0 13px;border:1px solid var(--line);border-radius:var(--r-md);font-size:var(--fs-caption);font-weight:var(--fw-bold)}.ticket-cancellation__intro>button:disabled{opacity:.45;cursor:not-allowed}.ticket-cancellation__panel{margin-top:18px;padding-top:18px;border-top:1px solid var(--line)}.ticket-cancellation__panel>header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.ticket-cancellation__panel h3{margin:0;font-size:var(--fs-body-lg)}.ticket-cancellation__panel header p{margin:6px 0 0;color:var(--grey);font-size:var(--fs-caption);line-height:1.55}.ticket-cancellation__panel header>button{font-size:22px;color:var(--grey)}.ticket-cancel-options{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:16px}.ticket-cancel-option{display:flex;align-items:center;gap:10px;padding:13px;border:1px solid var(--line);border-radius:var(--r-md);cursor:pointer}.ticket-cancel-option:has(input:checked){border-color:var(--yellow-500);background:var(--yellow-100)}.ticket-cancel-option input{width:17px;height:17px;accent-color:var(--ink)}.ticket-cancel-option span{min-width:0}.ticket-cancel-option strong,.ticket-cancel-option small{display:block}.ticket-cancel-option strong{font-size:var(--fs-label)}.ticket-cancel-option small{margin-top:4px;color:var(--grey);font-size:var(--fs-caption)}.ticket-cancel-summary{display:flex;justify-content:space-between;gap:16px;margin-top:14px;padding:13px;border-radius:var(--r-md);background:var(--ground-100);font-size:var(--fs-caption)}.ticket-refund-notice{margin:12px 0;color:var(--grey);font-size:var(--fs-caption);line-height:1.55}.ticket-cancellation__panel>.btn{width:100%;min-height:46px}.ticket-refund-history{margin-top:16px;padding:18px;border-radius:18px;background:var(--ground-100)}.ticket-refund-history h3{margin:0 0 10px;font-size:var(--fs-label)}.ticket-refund-history-list article{display:flex;justify-content:space-between;gap:14px;padding:10px 0;border-top:1px solid var(--line)}.ticket-refund-history-list article strong,.ticket-refund-history-list article small{display:block}.ticket-refund-history-list article strong{font-size:var(--fs-caption)}.ticket-refund-history-list article small{margin-top:4px;color:var(--grey);font-size:var(--fs-badge)}.ticket-refund-history-list article>b{font-size:var(--fs-caption)}.ticket-refund-history>p{margin:10px 0 0;color:var(--grey);font-size:var(--fs-badge);line-height:1.55}.entry-ticket[data-access-state="active"] .ticket-cancellation,.entry-ticket[data-access-state="ended"] .ticket-cancellation{display:none}
.entry-ticket[data-access-state="active"] .entry-ticket__status{border:1px solid var(--green-300);background:var(--green-100);color:var(--ink)}
.entry-ticket[data-access-state="active"] .entry-ticket__status::before{content:"";position:absolute;right:-70px;top:-105px;width:250px;height:250px;border-radius:50%;background:var(--green-200);opacity:.55;pointer-events:none}
.entry-ticket[data-access-state="active"] .entry-ticket__status>*{position:relative;z-index:1}
.entry-ticket[data-access-state="active"] .entry-ticket__badge{border-color:var(--green-500);background:var(--white);color:var(--ink);box-shadow:0 0 0 2px var(--green-200)}
.entry-ticket[data-access-state="active"] .entry-ticket__badge i{background:var(--green-500)}
.entry-ticket[data-access-state="active"] .entry-ticket__clock small,.entry-ticket[data-access-state="active"] .entry-ticket__status>p{color:var(--grey)}
.entry-ticket[data-access-state="active"] .entry-ticket__live{border-color:var(--green-300);background:var(--green-100);color:var(--ink)}
.entry-ticket[data-access-state="active"] .entry-ticket__live>span{border-style:solid;border-color:var(--green-500);background:var(--white);animation:ticketPulse 1.8s ease-in-out infinite}
.entry-ticket[data-access-state="active"] .entry-ticket__live img{filter:none;opacity:1}
.entry-ticket[data-access-state="active"] .entry-ticket__footer strong{color:var(--ink)}
.entry-ticket[data-access-state="ended"] .entry-ticket__status{background:var(--grey)}
.entry-ticket[data-access-state="ended"] .entry-ticket__badge{border-color:var(--line);background:var(--white);color:var(--grey)}
.entry-ticket[data-access-state="ended"] .entry-ticket__badge i{background:var(--soft)}
.booking-slots .chip.is-booked{border-color:var(--coral-300);background:var(--coral-100);color:var(--ink);box-shadow:none}
.booking-slots .chip.is-booked small{color:var(--grey)}
@keyframes ticketPulse{0%,100%{box-shadow:0 0 0 0 transparent}50%{box-shadow:0 0 0 12px var(--green-200)}}
@media(max-width:997px){.reservation-header{height:60px}.reservation-brand img{height:50px}.reservation-header__actions .header-login{height:36px;padding-inline:12px}.back-link{margin-bottom:20px}}
@media(max-width:560px){.login-dialog__body{padding:30px 22px 24px}.login-dialog h2{font-size:24px}}
@media(max-width:700px){.reservation-complete{padding-top:42px}.complete-booking-card{grid-template-columns:1fr}.complete-booking-card>img{height:190px;min-height:0}.reservation-complete .complete-actions{grid-template-columns:1fr}.my-tickets-screen{padding:32px 16px 64px}.my-tickets-head{align-items:flex-start;flex-direction:column}.my-tickets-head h1{font-size:32px}.ticket-list-card{grid-template-columns:100px minmax(0,1fr);gap:14px;padding:12px;border-radius:var(--r-lg)}.ticket-list-card>img{width:100px;height:112px}.ticket-list-card__arrow{display:none}.ticket-list-card__title{font-size:var(--fs-body)}.ticket-list-card__schedule{line-height:1.45}.ticket-detail-view>.back-link{margin-left:0}.ticket-order-summary{padding:22px 20px}.ticket-order-summary>header h1{font-size:24px}.ticket-order-summary dl div{display:grid;gap:4px}.ticket-order-summary dd{text-align:left;overflow-wrap:anywhere}.ticket-payment-summary>header{align-items:flex-start;flex-direction:column}.ticket-payment-summary>header span{text-align:left}}
@media(max-width:600px){.ticket-screen{padding-top:20px}.entry-ticket__status{min-height:260px;padding:28px 24px;border-radius:22px}.entry-ticket__status-top{gap:12px}.entry-ticket__indicators{max-width:200px}.entry-ticket__badge{height:28px;padding-inline:10px}.entry-ticket__discount{height:30px;padding:0 9px 0 7px}.entry-ticket__discount::before{width:16px;height:16px}.entry-ticket__clock strong{font-size:23px}.entry-ticket__status>p{margin-top:52px}.entry-ticket__status:has(.entry-ticket__discount:not([hidden]))>p{margin-top:24px}.entry-ticket__status>h1{font-size:30px}.entry-ticket__pass{padding:42px 22px 28px;border-radius:0 0 24px 24px}.entry-ticket__brand img{width:104px;height:104px}.entry-ticket__pass>header>b{font-size:28px}.entry-ticket__meta{grid-template-columns:1fr 1fr}.entry-ticket__meta>div:first-child{grid-column:1/-1}.entry-ticket__live{min-height:220px;padding:22px 18px;gap:18px}.entry-ticket__live>span{width:144px;height:144px}.entry-ticket__live img{width:124px;height:124px}.entry-ticket__window{grid-template-columns:1fr 20px 1fr 20px 1fr;padding:18px 10px}.entry-ticket__window strong{font-size:var(--fs-label)}.entry-ticket__footer{align-items:center}.entry-ticket__footer>span{max-width:150px}}
@media(max-width:600px){.entry-ticket{width:100%}.entry-ticket__status{padding:26px 22px}.entry-ticket__status>p{margin-top:46px}.entry-ticket__status>h1{font-size:28px;line-height:1.18}.entry-ticket__pass{padding:42px 18px 28px}.entry-ticket__pass>header{gap:12px}.entry-ticket__brand{min-width:0;gap:10px}.entry-ticket__brand img{width:84px;height:84px}.entry-ticket__brand span{min-width:0}.entry-ticket__brand strong{font-size:var(--fs-body-sm);white-space:nowrap}.entry-ticket__pass>header>b{flex:0 0 auto;padding:8px 11px;font-size:22px;white-space:nowrap}.entry-ticket__meta{grid-template-columns:1fr;gap:10px}.entry-ticket__meta>div{padding:15px}.entry-ticket__meta strong{font-size:var(--fs-body-sm)}.entry-ticket__live{min-height:0;flex-direction:column;padding:22px 18px;gap:14px}.entry-ticket__live>span{width:128px;height:128px}.entry-ticket__live img{width:110px;height:110px}.entry-ticket__live>strong{max-width:none;font-size:var(--fs-body-sm);word-break:keep-all}.entry-ticket__footer{padding-inline:2px}}
@media(max-width:600px){.ticket-cancellation{padding:16px}.ticket-cancellation__intro{align-items:flex-start;flex-direction:column}.ticket-cancellation__intro>button{width:100%}.ticket-cancel-options{grid-template-columns:1fr}.ticket-cancel-summary{flex-direction:column}.ticket-refund-history{padding:16px}}

/* Mobile admission pass: keep the complete gate-facing ticket in one phone viewport. */
@media(max-width:600px){
  .entry-ticket{--ticket-label-size:12px;--ticket-body-size:14px;--ticket-value-size:17px;--ticket-title-size:21px}
  .my-tickets-screen:has(.ticket-detail-view:not([hidden])){min-height:calc(100dvh - 60px);padding:10px 10px 48px;background:linear-gradient(180deg,var(--ink) 0,var(--ink) 196px,var(--ground-100) 196px)}
  .ticket-detail-view>.back-link{margin:0 4px 10px;color:var(--white);font-size:13px;font-weight:var(--fw-semibold)}
  .entry-ticket{filter:drop-shadow(0 14px 24px rgba(24,24,28,.13))}
  .entry-ticket__status{min-height:146px;padding:16px 18px 24px;border-radius:22px 22px 0 0;box-shadow:none}
  .entry-ticket__status-top{align-items:center}
  .entry-ticket__indicators{max-width:none;gap:6px}
  .entry-ticket__badge,.entry-ticket__discount{height:25px;font-size:11px}
  .entry-ticket__discount{box-shadow:none}
  .entry-ticket__discount>span{display:none}
  .entry-ticket__clock small{display:none}
  .entry-ticket__clock strong{margin:0;font-size:var(--ticket-value-size);font-weight:var(--fw-bold)}
  .entry-ticket__status>p,.entry-ticket__status:has(.entry-ticket__discount:not([hidden]))>p{margin:18px 0 3px;font-size:12px}
  .entry-ticket__status>h1{margin:0 0 4px;font-size:var(--ticket-title-size);line-height:1.2}
  .entry-ticket__status>strong{font-size:var(--ticket-body-size)}
  .entry-ticket__pass{position:relative;margin:0;padding:20px 18px 18px;border:0;border-radius:0 0 22px 22px;box-shadow:none}
  .entry-ticket__pass::before{content:"";position:absolute;left:0;right:0;top:-7px;height:14px;background:radial-gradient(circle at 7px 7px,transparent 6px,var(--white) 6.5px) 0 0/28px 14px repeat-x;pointer-events:none}
  .entry-ticket__pass>header{padding-bottom:13px;border-bottom:1px solid var(--line)}
  .entry-ticket__brand img{width:48px;height:48px}
  .entry-ticket__brand small{font-size:10px}
  .entry-ticket__brand strong{margin-top:2px;font-size:var(--ticket-body-size)}
  .entry-ticket__pass>header>b{padding:7px 11px;font-size:var(--ticket-value-size)}
  .entry-ticket__meta{grid-template-columns:1.15fr .85fr;gap:0;margin-top:16px}
  .entry-ticket__meta>div{padding:0;border:0;border-radius:0}
  .entry-ticket__meta>div:first-child{grid-column:auto}
  .entry-ticket__meta>div:last-child{grid-column:1/-1;grid-row:1;margin-bottom:13px}
  .entry-ticket__meta small{font-size:var(--ticket-label-size)}
  .entry-ticket__meta strong{margin-top:3px;font-size:var(--ticket-value-size);line-height:1.35;overflow:visible;text-overflow:clip}
  .entry-ticket__meta>div:nth-child(2) strong{font-size:var(--ticket-value-size);letter-spacing:-.02em}
  .entry-ticket__live{min-height:0;margin-top:16px;padding:12px 14px;border-radius:15px;flex-direction:row;justify-content:flex-start;gap:12px;text-align:left}
  .entry-ticket__live>span{width:62px;height:62px;border-width:3px}
  .entry-ticket__live img{width:54px;height:54px}
  .entry-ticket__live>strong{font-size:12px;line-height:1.45}
  .entry-ticket__pass>dl{margin:10px 0 0;padding-top:9px;border-top:1px dashed var(--line)}
  .entry-ticket__pass>dl div:first-child{display:none}
  .entry-ticket__pass dt,.entry-ticket__pass dd{font-size:var(--ticket-label-size)}
  .entry-ticket__window,.entry-ticket__note{display:none}
  .ticket-order-summary{margin-top:22px}
}
@media(max-width:360px){
  .my-tickets-screen:has(.ticket-detail-view:not([hidden])){padding-inline:6px;background:linear-gradient(180deg,var(--ink) 0,var(--ink) 230px,var(--ground-100) 230px)}
  .entry-ticket__status{min-height:0;padding:14px 14px 22px}
  .entry-ticket__status-top{align-items:flex-start;flex-wrap:wrap}
  .entry-ticket__indicators{flex:1 1 100%}
  .entry-ticket__clock{margin-left:auto}
  .entry-ticket__status>p,.entry-ticket__status:has(.entry-ticket__discount:not([hidden]))>p{margin-top:12px;overflow-wrap:anywhere}
  .entry-ticket__status>h1{font-size:20px}
  .entry-ticket__status>strong{display:block;font-size:13px;overflow-wrap:anywhere}
  .entry-ticket__pass{padding:18px 14px 16px}
  .entry-ticket__pass>header{align-items:flex-start;flex-wrap:wrap}
  .entry-ticket__brand{flex:1 1 120px}
  .entry-ticket__brand img{width:40px;height:40px}
  .entry-ticket__brand strong{white-space:normal;overflow-wrap:anywhere}
  .entry-ticket__pass>header>b{font-size:17px}
  .entry-ticket__meta{grid-template-columns:1fr;gap:10px}
  .entry-ticket__meta>div:last-child{grid-column:auto;grid-row:auto;margin-bottom:0}
  .entry-ticket__meta strong,.entry-ticket__meta>div:nth-child(2) strong{font-size:16px;white-space:normal;overflow-wrap:anywhere}
  .entry-ticket__live{padding:10px;gap:9px}
  .entry-ticket__live>span{width:50px;height:50px}
  .entry-ticket__live img{width:43px;height:43px}
  .entry-ticket__live>strong{min-width:0;font-size:12px;overflow-wrap:anywhere}
  .entry-ticket__pass>dl div{align-items:flex-start;flex-wrap:wrap}
  .entry-ticket__pass dd{max-width:100%;overflow-wrap:anywhere;text-align:right}
  .ticket-order-summary,.ticket-payment-summary{padding:18px 14px}
  .ticket-order-summary>header{align-items:flex-start;flex-wrap:wrap}
  .ticket-order-summary>header h1{font-size:21px}
  .ticket-payment-summary dl div{align-items:flex-start;flex-wrap:wrap}
  .ticket-payment-summary dl div:first-child dd{font-size:20px}
}
@media(max-width:700px){.experience-options{grid-template-columns:1fr}.experience-card__head{align-items:center}.citizen-banner{align-items:flex-start;flex-direction:column}.slot-guide{grid-template-columns:1fr}}
@media(max-width:997px){.panel-title{gap:6px;margin-bottom:18px}.booking-panel .panel-title h2{margin:0}}
.calendar-legend{display:flex;justify-content:flex-end;gap:14px;margin-top:2px;color:var(--grey);font-size:var(--fs-caption)}
.calendar-legend span{display:inline-flex;align-items:center;gap:6px}
.legend-dot{width:9px;height:9px;border-radius:50%;display:inline-block}
.legend-dot--available{background:var(--green-500)}
.legend-dot--disabled{background:var(--line)}
.month-title strong{min-width:104px;text-align:center}
.month-title button:hover:not(:disabled){border-color:var(--ink);background:var(--bg)}
.month-title button:disabled{opacity:.28;cursor:not-allowed}
.calendar-head span:first-child{color:var(--ink)}
.calendar-grid .calendar-empty{height:58px}
.calendar-grid button{border:1px solid transparent;transition:background-color .18s,border-color .18s,box-shadow .18s,transform .18s}
.calendar-grid button:hover:not(:disabled){border-color:var(--green-400)}
.calendar-grid button:disabled{background:var(--bg)}
.calendar-grid button.is-available{color:var(--ink);font-weight:var(--fw-semibold)}
.calendar-grid button.is-available:before{content:"";position:absolute;left:50%;bottom:7px;width:4px;height:4px;border-radius:50%;background:var(--green-500);transform:translateX(-50%)}
.calendar-grid button[data-weekday="0"].is-available,.calendar-grid button[data-weekday="6"].is-available{color:var(--ink)}
.calendar-grid button.is-today{border-color:var(--yellow-500)}
.calendar-grid button.is-available.is-selected{border-color:var(--ink);background:var(--ink);color:var(--white);box-shadow:0 6px 14px rgba(24,24,28,.18);transform:translateY(-2px)}
.calendar-grid button.is-available.is-selected:hover{border-color:var(--ink);background:var(--ink)}
.calendar-grid button.is-selected:before{display:none}
.calendar-grid button.is-selected:after{content:"✓";position:absolute;right:6px;top:6px;width:16px;height:16px;border-radius:50%;display:grid;place-items:center;background:var(--yellow-500);color:var(--ink);font-size:10px;font-weight:var(--fw-bold)}
@media(max-width:997px){.calendar-grid .calendar-empty{height:50px}}

/* Policy-key navigator with a joined service policy → FE → BE trace. */
.developer-policy-keys{display:flex;flex-wrap:wrap;gap:7px;padding:11px 24px;border-bottom:1px solid var(--line);background:var(--white)}
.developer-policy-keys button{min-width:max-content;padding:9px 12px;border:1px solid var(--line);border-radius:var(--r-md);display:flex;align-items:center;gap:8px;background:var(--bg);color:var(--grey);text-align:left}
.developer-policy-keys button[aria-selected="true"]{border-color:var(--ink);background:var(--ink);color:var(--white)}
.developer-policy-keys b{font-size:var(--fs-badge);letter-spacing:.03em}
.developer-policy-keys span{font-size:var(--fs-caption);font-weight:var(--fw-bold)}
.developer-policy-dialog .policy-topic{padding:0;border:0;border-radius:0;background:transparent}
.developer-policy-dialog .policy-topic-head{padding:17px 18px;border:1px solid var(--line);border-radius:var(--r-lg);display:flex;align-items:center;background:var(--white)}
.policy-topic-head small{color:var(--coral-700);font-size:var(--fs-badge);font-weight:var(--fw-bold);letter-spacing:.04em}
.policy-topic-head h3{margin:4px 0 3px;font-size:var(--fs-h2)}
.policy-topic-head p{margin:0;color:var(--grey);font-size:var(--fs-caption)}
.policy-topic-head>span{margin-left:auto;padding:7px 10px;border-radius:var(--r-full);background:var(--yellow-100);font-size:var(--fs-badge);font-weight:var(--fw-bold)}
.policy-lanes{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:12px;align-items:start}
.policy-lane{border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden;background:var(--white)}
.policy-lane--service{grid-column:1/-1;border-color:var(--green-300)}
.developer-policy-dialog .policy-lane>header{padding:13px 15px;border:0;border-bottom:1px solid var(--line);display:grid;grid-template-columns:34px 1fr auto;align-items:center;gap:10px;background:var(--white)}
.policy-lane>header>b{width:32px;height:28px;border-radius:var(--r-sm);display:grid;place-items:center;font-size:var(--fs-badge)}
.policy-lane--service>header>b{width:36px;background:var(--green-100);color:var(--green-800)}
.policy-lane--frontend>header>b{background:var(--yellow-500);color:var(--ink)}
.policy-lane--backend>header>b{background:var(--ink);color:var(--white)}
.policy-lane>header small{color:var(--grey);font-size:9px;font-weight:var(--fw-bold);letter-spacing:.06em}
.policy-lane>header h4{margin:1px 0 0;font-size:var(--fs-body-sm)}
.policy-lane>header>span{color:var(--grey);font-size:var(--fs-badge)}
.policy-lane-body .policy-flow+.policy-flow{border-top:1px solid var(--line)}
.policy-lane-empty{margin:0;padding:20px;color:var(--grey);font-size:var(--fs-caption);line-height:1.6}
.policy-decision{margin-top:12px;padding:14px;border:1px solid var(--yellow-300);border-radius:var(--r-lg);background:var(--yellow-100)}
.policy-decision>strong{display:block;margin-bottom:8px;color:var(--ink);font-size:var(--fs-caption)}
.policy-decision .policy-flow{border:1px solid var(--yellow-300);border-radius:var(--r-md)}
@media(max-width:760px){.developer-policy-keys{padding:9px 14px}.policy-lanes{grid-template-columns:1fr}.developer-policy-dialog .policy-topic-head{align-items:flex-start}.policy-topic-head>span{display:none}}

/* In-page policy inspector */
.policy-marker-layer{position:fixed;inset:0;z-index:180;pointer-events:none}
.policy-marker{position:fixed;width:26px;height:26px;border:1px solid var(--coral-500);border-radius:50%;display:grid;place-items:center;background:var(--white);color:var(--coral-700);box-shadow:0 4px 14px rgba(24,24,28,.16);font-size:10px;font-weight:var(--fw-bold);pointer-events:auto;transition:transform .15s,background .15s}
.policy-marker:hover{transform:scale(1.12);background:var(--yellow-100)}
.policy-target{position:relative;outline:1px dashed var(--coral-500)!important;outline-offset:7px}
.policy-inspector{position:fixed;right:18px;top:92px;bottom:18px;z-index:190;width:310px;border:1px solid var(--line);border-radius:var(--r-lg);display:flex;flex-direction:column;background:var(--white);box-shadow:0 18px 50px rgba(24,24,28,.18);overflow:hidden;color:var(--ink)}
.policy-inspector.is-detail{width:min(480px,calc(100vw - 36px))}
.policy-inspector>header{flex:0 0 auto;padding:14px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:10px;background:var(--white)}
.policy-inspector>header>div{display:flex;align-items:center;gap:9px;min-width:0}.policy-inspector>header>div>b{width:30px;height:30px;border-radius:8px;display:grid;place-items:center;background:var(--coral-500);color:var(--white);font-size:11px}.policy-inspector>header>div>span{min-width:0}.policy-inspector>header strong,.policy-inspector>header small{display:block}.policy-inspector>header strong{font-size:var(--fs-caption)}.policy-inspector>header small{margin-top:3px;color:var(--grey);font-size:9px}.policy-inspector>header>button{padding:6px;color:var(--grey);font-size:10px;font-weight:var(--fw-bold)}
.policy-inspector .policy-inspector-back{width:30px;height:30px;padding:0;border-radius:8px;background:var(--bg);font-size:22px}
.policy-inspector-list{padding:4px 0;overflow:auto}.policy-inspector-list button{width:100%;padding:13px 15px;border-bottom:1px solid var(--line);display:block;background:var(--white);text-align:left}.policy-inspector-list button:hover{background:var(--yellow-100)}.policy-inspector-list small,.policy-inspector-list strong,.policy-inspector-list span{display:block}.policy-inspector-list small{color:var(--coral-700);font-size:9px;font-weight:var(--fw-bold)}.policy-inspector-list strong{margin-top:3px;font-size:var(--fs-caption)}.policy-inspector-list span{margin-top:4px;color:var(--grey);font-size:9px;line-height:1.45}
.policy-inspector-detail{flex:1;padding:14px;overflow:auto;background:var(--bg)}
.policy-inspector-detail .policy-topic-head{padding:15px;border:0;border-radius:var(--r-md);display:flex;align-items:center;justify-content:space-between;gap:12px;background:var(--white)}.policy-inspector-detail .policy-topic-head h3{font-size:18px}.policy-inspector-detail .policy-topic-head>span{display:none}.policy-inspector-detail .policy-lanes{grid-template-columns:1fr}.policy-inspector-detail .policy-lane>header{padding:13px 15px;border:0;border-bottom:1px solid var(--line);display:grid;grid-template-columns:34px minmax(0,1fr) auto;align-items:center;gap:10px;background:var(--white)}.policy-inspector-detail .policy-lane>header>div{min-width:0}.policy-inspector-detail .policy-rule{grid-template-columns:70px minmax(0,1fr)}.policy-inspector-detail .policy-rule dd{font-size:10px}
.policy-inspector>footer{margin-top:auto;padding:11px 14px;border-top:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:10px;background:var(--white)}.policy-inspector>footer span{color:var(--grey);font-size:9px}.policy-inspector>footer button{padding:7px 9px;border-radius:7px;background:var(--ink);color:var(--white);font-size:9px;font-weight:var(--fw-bold)}.policy-inspector>footer kbd{min-width:18px;height:17px;font-size:8px}.policy-inspector-actions{display:flex;align-items:center;justify-content:flex-end;gap:6px}.policy-inspector>footer .policy-inspector-actions button:first-child{border:1px solid var(--line);background:var(--white);color:var(--ink)}
@media(max-width:760px){.policy-inspector,.policy-inspector.is-detail{inset:auto 8px 8px;width:auto;max-height:78vh}.policy-inspector-detail{padding:10px}.policy-inspector-detail .policy-topic-head{padding:13px}.policy-inspector-detail .policy-lane>header{grid-template-columns:34px minmax(0,1fr) auto}.policy-target{outline-offset:3px}}
@media(max-width:760px){.shop-page .policy-inspector>footer>span{display:none}.shop-page .policy-inspector-actions{width:100%}.shop-page .policy-inspector-actions button{flex:1;min-height:38px}}

/* Policy content must remain readable even when the inspector contains dense specifications. */
.developer-policy-keys b{font-size:11px}.developer-policy-keys span{font-size:13px}
.policy-topic-head small{font-size:11px}.policy-topic-head p{font-size:13px;line-height:1.5}.policy-topic-head>span{font-size:11px}
.policy-lane>header>b{font-size:11px}.policy-lane>header small{font-size:11px}.policy-lane>header h4{font-size:14px}.policy-lane>header>span{font-size:11px}
.policy-flow summary{min-height:56px;font-size:14px;line-height:1.45}.policy-flow dl{padding-bottom:18px}.policy-rule{grid-template-columns:88px 1fr;gap:14px;padding:11px 0}.policy-rule dt{font-size:12px}.policy-rule dd{font-size:13px;line-height:1.65}
.policy-lane-empty,.policy-decision>strong{font-size:13px}
.policy-inspector>header strong{font-size:14px}.policy-inspector>header small{font-size:11px}.policy-inspector-list small{font-size:11px}.policy-inspector-list strong{font-size:14px}.policy-inspector-list span{font-size:12px;line-height:1.55}.policy-inspector-detail .policy-rule dd{font-size:13px}.policy-inspector>footer span,.policy-inspector>footer button{font-size:11px}
@media(max-width:560px){.policy-rule{grid-template-columns:1fr;gap:5px}.policy-rule dd{font-size:13px}}
