@charset "UTF-8";:root{--color-bg: #0a0a0a;--color-fg: #f5f5f5;--color-accent: #36c275;--color-amber: #f5a623;--color-coral: #ff6f61;--surface-1: #141519;--surface-2: #1c1e24;--surface-3: #24262e;--border: #2c2f38;--muted: #9aa1ad;--radius: 12px;--radius-sm: 8px}html,body{margin:0;background:var(--color-bg);color:var(--color-fg);font-family:system-ui,sans-serif}*{box-sizing:border-box}.admin-shell{min-height:100vh}.admin-shell .admin-nav{display:flex;align-items:center;gap:.35rem;padding:0 1.25rem;height:60px;background:var(--surface-1);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:10}.admin-shell .admin-nav .admin-brand{font-size:1.15rem;letter-spacing:.5px;margin-right:1.25rem;color:var(--color-fg)}.admin-shell .admin-nav .admin-brand strong{color:var(--color-accent);font-weight:800}.admin-shell .admin-nav a{color:var(--muted);text-decoration:none;padding:.5rem .85rem;border-radius:var(--radius-sm);font-weight:500;transition:background .15s,color .15s}.admin-shell .admin-nav a:hover{color:var(--color-fg);background:var(--surface-2)}.admin-shell .admin-nav a.is-active{color:var(--color-fg);background:var(--surface-3);box-shadow:inset 0 -2px 0 var(--color-accent)}.admin-shell .admin-nav .admin-signout{margin-left:auto;background:transparent;border:1px solid var(--border);color:var(--muted)}.admin-shell .admin-nav .admin-signout:hover{color:var(--color-fg);border-color:var(--muted)}.admin-shell .admin-main{display:block;max-width:1080px;margin:0 auto;padding:1.75rem 1.25rem 4rem}.admin-shell h1{font-size:1.65rem;margin:0 0 1.25rem;font-weight:700}.admin-shell h2{font-size:1.1rem;margin:0 0 1rem;font-weight:600;color:var(--color-fg)}.admin-shell h3{font-size:1rem;margin:0 0 .5rem;font-weight:600}.admin-shell section{background:var(--surface-1);border:1px solid var(--border);border-radius:var(--radius);padding:1.25rem 1.35rem;margin-bottom:1.25rem}.admin-shell .field{display:flex;flex-direction:column;gap:.35rem;margin-bottom:.85rem}.admin-shell .field-label{color:var(--muted);font-size:.85rem}.admin-shell .field-help{color:var(--muted);font-size:.8rem;line-height:1.45}.admin-shell .field>input,.admin-shell .field>select,.admin-shell .field>textarea{width:100%}.admin-shell .field>input,.admin-shell .field>select{max-width:34rem}.admin-shell input,.admin-shell select,.admin-shell textarea{background:var(--surface-2);color:var(--color-fg);border:1px solid var(--border);border-radius:var(--radius-sm);padding:.55rem .7rem;font:inherit;outline:none;transition:border-color .15s,box-shadow .15s}.admin-shell input:focus,.admin-shell select:focus,.admin-shell textarea:focus{border-color:var(--color-accent);box-shadow:0 0 0 3px #36c27533}.admin-shell input.no-spin{appearance:textfield;-moz-appearance:textfield}.admin-shell input.no-spin::-webkit-outer-spin-button,.admin-shell input.no-spin::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.admin-shell input[type=checkbox]{width:auto;accent-color:var(--color-accent)}.admin-shell label{display:inline-flex;flex-direction:column;gap:.35rem;color:var(--muted);font-size:.85rem}.admin-shell label:has(>input[type=checkbox]){flex-direction:row;align-items:center}.admin-shell fieldset{border:1px solid var(--border);border-radius:var(--radius-sm)}.admin-shell fieldset legend{color:var(--muted);font-size:.85rem;padding:0 .4rem}.admin-shell button{background:var(--color-accent);color:#06140c;border:none;border-radius:var(--radius-sm);padding:.55rem 1rem;font:inherit;font-weight:600;cursor:pointer;transition:filter .15s,opacity .15s}.admin-shell button:hover{filter:brightness(1.08)}.admin-shell button:disabled{opacity:.45;cursor:not-allowed}.admin-shell .members-head,.admin-shell .roster-head,.admin-shell .week-head,.admin-shell .day-head,.admin-shell .sub-head{display:flex;align-items:center;gap:.75rem;margin-bottom:1.25rem;flex-wrap:wrap}.admin-shell .members-head h1,.admin-shell .roster-head h1,.admin-shell .week-head h1,.admin-shell .day-head h1,.admin-shell .sub-head h1{margin:0 auto 0 0}.admin-shell .members-head input[type=search],.admin-shell .roster-head input[type=search],.admin-shell .week-head input[type=search],.admin-shell .day-head input[type=search],.admin-shell .sub-head input[type=search]{min-width:220px}.admin-shell .members-head a,.admin-shell .roster-head a,.admin-shell .week-head a,.admin-shell .day-head a,.admin-shell .sub-head a{background:var(--color-accent);color:#06140c;text-decoration:none;font-weight:600;padding:.55rem 1rem;border-radius:var(--radius-sm)}.admin-shell .members-head a:hover,.admin-shell .roster-head a:hover,.admin-shell .week-head a:hover,.admin-shell .day-head a:hover,.admin-shell .sub-head a:hover{filter:brightness(1.08)}.admin-shell a{color:inherit;text-decoration:none}.admin-shell .member-link{color:var(--color-fg);font-weight:500}.admin-shell .member-link:hover{color:var(--color-accent);text-decoration:underline}.admin-shell .member-code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.8rem;color:var(--muted);background:var(--surface-2);border:1px solid var(--border);border-radius:6px;padding:1px 7px}.admin-shell .member-rows{list-style:none;margin:0;padding:0;border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.admin-shell .member-rows li{display:grid;grid-template-columns:.7fr 2fr 1.4fr .8fr .8fr 1fr;align-items:center;gap:.75rem;padding:.8rem 1.1rem;border-top:1px solid var(--border)}.admin-shell .member-rows li>a{display:contents;text-decoration:none;color:var(--color-fg)}.admin-shell .member-rows li:first-child{border-top:none}.admin-shell .member-rows .member-head{background:var(--surface-2);color:var(--muted);font-size:.78rem;text-transform:uppercase;letter-spacing:.5px;font-weight:600}.admin-shell .member-rows li[data-member-row]:hover{background:var(--surface-1)}.admin-shell .member-rows .name{font-weight:600}.admin-shell .member-rows .phone,.admin-shell .member-rows .plans,.admin-shell .member-rows .remaining{color:var(--muted)}.admin-shell .member-rows .remaining.neg{color:var(--color-coral);font-weight:700}.admin-shell .member-rows .pay-col{justify-self:start}.admin-shell .member-rows .pay-col .paid-yes{color:var(--color-accent);font-weight:700}.admin-shell .member-rows .pay-col .pay-none{color:var(--muted)}.admin-shell .member-rows .pay-col .no-waiver{color:var(--color-amber);margin-left:.4rem}.admin-shell .member-rows .pay-col button{background:transparent;border:1px solid var(--color-coral);color:var(--color-coral);padding:.35rem .7rem;font-size:.8rem}.admin-shell .member-rows .pay-col button:hover{background:#ff6f6124;filter:none}.admin-shell .member-rows li[data-empty]{display:block;text-align:center;color:var(--muted);padding:2rem}.admin-shell .pay-popover-backdrop{position:fixed;inset:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:50;padding:1rem}.admin-shell .pay-popover{background:var(--surface-1);border:1px solid var(--border);border-radius:var(--radius);padding:1.5rem;min-width:320px;max-width:420px;box-shadow:0 20px 60px #00000080}.admin-shell .pay-popover h2{margin:0 0 1rem;font-size:1.15rem}.admin-shell .pay-popover .amount-input{display:flex;align-items:center;gap:.5rem}.admin-shell .pay-popover .amount-input input{flex:1}.admin-shell .pay-popover .amount-input .unit{color:var(--muted)}.admin-shell .pay-popover .pay-error{color:var(--color-coral);font-size:.85rem;margin:0 0 .75rem}.admin-shell .pay-popover .pay-actions{display:flex;gap:.5rem;justify-content:flex-end}.admin-shell .pay-popover [data-pay-cancel]{background:transparent;border:1px solid var(--border);color:var(--muted)}.admin-shell .pay-popover [data-pay-cancel]:hover{color:var(--color-fg);border-color:var(--muted);filter:none}.admin-shell .plans [data-plan-card]{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:1rem 1.1rem;margin-bottom:.85rem}.admin-shell .plans [data-plan-card] dl{display:grid;grid-template-columns:auto 1fr;gap:.3rem 1rem;margin:.5rem 0 .85rem}.admin-shell .plans [data-plan-card] dl dt{color:var(--muted);font-size:.85rem}.admin-shell .plans [data-plan-card] dl dd{margin:0;font-weight:600}.admin-shell .plans [data-plan-card] .plan-actions{display:flex;gap:.5rem}.admin-shell .plans [data-plan-card] .plan-bar{display:flex;align-items:stretch;height:8px;border-radius:999px;overflow:hidden;margin:.85rem 0 .5rem;background:var(--surface-3)}.admin-shell .plans [data-plan-card] .plan-bar .seg{display:block;height:100%}.admin-shell .plans [data-plan-card] .plan-bar .seg.attended{background:var(--muted)}.admin-shell .plans [data-plan-card] .plan-bar .seg.booked{background:var(--color-amber)}.admin-shell .plans [data-plan-card] .plan-bar .seg.left{background:var(--color-accent)}.admin-shell .plans [data-plan-card] .plan-legend{display:flex;flex-wrap:wrap;gap:.9rem;color:var(--muted);font-size:.75rem;margin-bottom:.85rem}.admin-shell .plans [data-plan-card] .plan-legend b{color:var(--color-fg);font-weight:700}.admin-shell .plans [data-plan-card] .plan-legend .total{margin-left:auto}.admin-shell .plans [data-plan-card] .plan-upcoming{margin-top:.85rem;padding-top:.75rem;border-top:1px solid var(--border)}.admin-shell .plans [data-plan-card] .plan-upcoming h4{margin:0 0 .5rem;font-size:.85rem;color:var(--muted);font-weight:600}.admin-shell .plans [data-plan-card] .plan-upcoming ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.35rem}.admin-shell .plans [data-plan-card] .plan-upcoming li{display:flex;align-items:center;justify-content:space-between;gap:.5rem;font-size:.85rem}.admin-shell .plans [data-plan-card] button.danger{background:transparent;border:1px solid var(--color-coral);color:var(--color-coral)}.admin-shell .plans [data-plan-card] button.danger:hover{background:#e65a5024;filter:none}.admin-shell .src{display:inline-flex;align-items:center;white-space:nowrap;padding:.15rem .55rem;border-radius:999px;font-size:.72rem;font-weight:600}.admin-shell .src-recurring{background:#36c27526;color:var(--color-accent)}.admin-shell .src-adhoc{background:#f5a62326;color:var(--color-amber)}.admin-shell .src-booking{background:#5a96e626;color:#6fa8f0}.admin-shell .member-profile{display:flex;align-items:flex-start;gap:1rem;margin-bottom:1.5rem}.admin-shell .member-profile h1{margin:0 0 .25rem}.admin-shell .member-profile p{color:var(--muted);margin:0}.admin-shell .member-profile .edit-link{margin-left:auto;align-self:center;text-decoration:none;font-weight:600;font-size:.88rem;color:var(--muted);border:1px solid var(--border);border-radius:var(--radius-sm);padding:.45rem .9rem}.admin-shell .member-profile .edit-link:hover{color:var(--color-fg);border-color:var(--muted)}.admin-shell .history ul{list-style:none;margin:0;padding:0}.admin-shell .history li{display:flex;justify-content:space-between;padding:.55rem 0;border-top:1px solid var(--border)}.admin-shell table.payments-matrix{border-collapse:collapse;width:100%}.admin-shell table.payments-matrix th,.admin-shell table.payments-matrix td{border:1px solid var(--border);padding:.5rem .7rem;text-align:center;font-size:.9rem}.admin-shell table.payments-matrix thead th{background:var(--surface-2);color:var(--muted);font-weight:600}.admin-shell table.payments-matrix .frozen-col{position:sticky;left:0;background:var(--surface-2);text-align:left;font-weight:600;z-index:1}.admin-shell table.payments-matrix tfoot th,.admin-shell table.payments-matrix tfoot td{background:var(--surface-1);color:var(--muted)}.admin-shell table.payments-matrix .cell-btn{background:transparent;color:var(--color-fg);display:inline-flex;align-items:center;gap:.4rem;padding:.25rem .4rem}.admin-shell .matrix-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}.admin-shell .cell-btn [data-status],.admin-shell .matrix-legend [data-status]{width:9px;height:9px;border-radius:50%;display:inline-block}.admin-shell .cell-btn [data-status=paid],.admin-shell .matrix-legend [data-status=paid]{background:var(--color-accent)}.admin-shell .cell-btn [data-status=due],.admin-shell .matrix-legend [data-status=due]{background:var(--color-coral)}.admin-shell .cell-btn [data-status=upcoming],.admin-shell .matrix-legend [data-status=upcoming]{background:var(--color-amber)}.admin-shell .inbox-list{list-style:none;margin:0;padding:0}.admin-shell .inbox-list li{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:.85rem 1rem;margin-bottom:.6rem}.admin-shell .inbox-list li .msg{color:var(--color-fg)}.admin-shell .inbox-list li .src,.admin-shell .inbox-list li .time{color:var(--muted);font-size:.82rem}.admin-shell .status-err{color:var(--color-coral);margin:.5rem 0}.admin-shell .compose{display:flex;flex-direction:column;gap:.75rem}.admin-shell .compose label{display:flex;flex-direction:column;gap:.3rem}.admin-shell .compose .channels{display:flex;gap:1.25rem}.admin-shell .compose .channels .field-inline{flex-direction:row;align-items:center;gap:.4rem}.admin-shell .compose .confirm-row{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}.admin-shell .announce-history{list-style:none;padding:0;display:flex;flex-direction:column;gap:.75rem}.admin-shell .announce-history li{background:var(--surface-1);border:1px solid var(--border);border-radius:var(--radius);padding:.75rem 1rem}.admin-shell .announce-history li.expired{opacity:.55}.admin-shell .announce-history .ah-head{display:flex;justify-content:space-between;align-items:baseline;gap:.75rem}.admin-shell .announce-history .ah-head time{color:var(--muted);font-size:.82rem;white-space:nowrap}.admin-shell .announce-history .ah-body{margin:.4rem 0;white-space:pre-wrap}.admin-shell .announce-history .ah-foot{display:flex;align-items:center;gap:.5rem}.admin-shell .announce-history .chan{font-size:.7rem;background:var(--surface-3);color:var(--muted);border-radius:999px;padding:1px 8px}.admin-shell .announce-history .chan.exp{color:var(--color-amber)}.admin-shell .announce-history .ah-foot .btn{margin-left:auto}.admin-shell .status-ok{color:var(--color-accent);font-weight:600;margin:.5rem 0}.admin-shell .btn-ghost{background:transparent;color:var(--muted);border:1px solid var(--border)}.admin-shell .btn-ghost:hover{color:var(--color-fg);border-color:var(--muted)}.admin-shell .service-edit{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;padding:.65rem 0;border-top:1px solid var(--border)}.admin-shell .admins ul{list-style:none;margin:0 0 .85rem;padding:0}.admin-shell .admins li{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.5rem 0;border-top:1px solid var(--border)}.admin-shell .admins li button,.admin-shell .service-edit button,.admin-shell [data-remove-admin]{background:transparent;border:1px solid var(--border);color:var(--muted)}.admin-shell .admins li button:hover,.admin-shell .service-edit button:hover,.admin-shell [data-remove-admin]:hover{color:var(--color-coral);border-color:var(--color-coral);filter:none}.admin-shell .sub-head{display:flex;align-items:center;gap:.75rem;margin-bottom:1rem}.admin-shell .sub-head h2{margin:0 auto 0 0}.admin-shell .plan-form-wrap{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:1rem;margin-bottom:1rem}.admin-shell .plan-form-wrap form{display:flex;flex-wrap:wrap;gap:.6rem;align-items:center}.admin-shell .plan-form-wrap form input,.admin-shell .plan-form-wrap form select{min-width:130px}.admin-shell .history li button.mark-paid{background:transparent;border:1px solid var(--color-accent);color:var(--color-accent);padding:.3rem .7rem;font-size:.82rem}.admin-shell .history li button.mark-paid:hover{background:#36c27524;filter:none}.admin-shell .modal-backdrop{position:fixed;inset:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:50;padding:1rem}.admin-shell .dialog{background:var(--surface-1);border:1px solid var(--border);border-radius:var(--radius);padding:1.5rem;min-width:300px;box-shadow:0 20px 60px #00000080}.admin-shell .dialog h3{margin:0 0 1rem}.admin-shell .dialog label{display:flex;flex-direction:column;gap:.35rem;margin-bottom:1rem}.admin-shell .dialog button{width:100%}.admin-shell .full-tag{color:var(--color-coral);font-weight:700;font-size:.72rem}.admin-shell .member-profile .member-notes{margin-top:.6rem;color:var(--color-fg);background:var(--surface-2);border:1px solid var(--border);border-left:3px solid var(--color-amber);border-radius:var(--radius-sm);padding:.6rem .8rem;white-space:pre-wrap;max-width:60ch}.admin-shell .member-profile .member-notes .notes-label{display:block;color:var(--muted);font-size:.72rem;text-transform:uppercase;letter-spacing:.5px;margin-bottom:.25rem}.admin-shell .plans [data-plan-card] dd[data-remaining].neg{color:var(--color-coral)}.admin-shell .member-intake .intake-none{color:var(--muted)}.admin-shell .member-intake .intake-note{color:var(--muted);font-size:.85rem}.admin-shell .member-intake .intake-flags{display:flex;align-items:center;flex-wrap:wrap;gap:.4rem}.admin-shell .member-intake .intake-flags .notes-label{color:var(--muted);font-size:.72rem;text-transform:uppercase;letter-spacing:.5px;margin-right:.25rem}.admin-shell .member-intake .intake-chip{display:inline-block;padding:.1rem .5rem;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-2);font-size:.78rem}.admin-shell .dialog .dialog-actions{display:flex;gap:.5rem}.admin-shell .dialog .dialog-actions button{width:auto;flex:1}.admin-shell .dialog .dialog-actions [data-cancel]{background:transparent;border:1px solid var(--border);color:var(--muted)}.admin-shell .dialog .dialog-actions [data-cancel]:hover{color:var(--color-fg);border-color:var(--muted);filter:none}.admin-shell .dialog .duration-picker{border:1px solid var(--border);border-radius:var(--radius-sm);padding:.6rem .8rem .75rem;margin:0 0 1rem;display:flex;flex-wrap:wrap;gap:.35rem .9rem}.admin-shell .dialog .duration-picker legend{color:var(--muted);font-size:.85rem;padding:0 .3rem}.admin-shell .dialog .duration-picker .duration-option{flex-direction:row;align-items:center;gap:.4rem;margin:0;cursor:pointer}.admin-shell .dialog .duration-picker .duration-option input{width:auto;margin:0}.admin-shell .dialog .field-help{color:var(--muted);font-size:.8rem;margin:-.5rem 0 .6rem}.admin-shell .dialog .pay-covers{margin:0 0 1rem;font-size:.85rem;font-weight:600;color:var(--color-accent)}.admin-shell .dialog .pay-confirm{margin:0 0 1rem;padding:.6rem .8rem;border:1px solid var(--border);border-left:3px solid var(--color-amber);border-radius:var(--radius-sm);background:var(--surface-2);font-size:.85rem}.admin-shell .plans [data-plan-card] .prepaid-badge{display:inline-block;margin-left:.4rem;padding:.05rem .45rem;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-1);color:var(--muted);font-size:.75rem;font-weight:500}.admin-shell .plans [data-plan-card] .prepaid-none{color:var(--muted);font-weight:400}.admin-shell .history .history-span{margin-left:.4rem;color:var(--muted);font-size:.78rem}.admin-shell .plan-form-wrap .date-row{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;margin-bottom:.6rem}.admin-shell .plan-form-wrap .date-row input{flex:1;min-width:8rem;width:auto}.admin-shell .plan-form-wrap .date-row button{width:auto;flex:0 0 auto}.admin-shell .help-button{width:2rem;height:2rem;margin-left:auto;border-radius:50%;border:1px solid var(--border);background:var(--surface-2);color:var(--color-fg);font-weight:700;line-height:1;cursor:pointer}.admin-shell .help-button:hover{border-color:var(--color-accent);color:var(--color-accent);filter:none}.admin-shell .help-drawer{background:var(--surface-1);border:1px solid var(--border);border-radius:var(--radius);padding:1.25rem 1.5rem 1.75rem;width:min(640px,92vw);max-height:88vh;overflow-y:auto;box-shadow:0 20px 60px #00000080}.admin-shell .help-drawer__head{display:flex;justify-content:space-between;gap:.5rem;margin-bottom:.75rem}.admin-shell .help-drawer__back,.admin-shell .help-drawer__close{background:transparent;border:1px solid var(--border);color:var(--muted);border-radius:var(--radius-sm);padding:.3rem .7rem;cursor:pointer}.admin-shell .help-drawer__back:hover,.admin-shell .help-drawer__close:hover{color:var(--color-fg);border-color:var(--muted);filter:none}.admin-shell .help-drawer__back{margin-right:auto}.admin-shell .help-drawer__choose{font-size:1rem;margin:0 0 .75rem}.admin-shell .help-drawer__list{list-style:none;padding:0;margin:0;display:grid;gap:.5rem}.admin-shell .help-drawer__pick{display:flex;flex-direction:column;gap:.2rem;width:100%;text-align:left;background:var(--surface-2);border:1px solid var(--border);color:var(--color-fg);border-radius:var(--radius-sm);padding:.7rem .9rem;cursor:pointer}.admin-shell .help-drawer__pick:hover{border-color:var(--color-accent);filter:none}.admin-shell .help-drawer__pick-title{font-weight:600}.admin-shell .help-drawer__pick-intro{color:var(--muted);font-size:.85rem}.admin-shell .help-guide__title{font-size:1.15rem;margin:0 0 .35rem}.admin-shell .help-guide__intro{color:var(--muted);margin:0 0 1rem}.admin-shell .help-guide__steps{list-style:none;padding:0;margin:0;display:grid;gap:1.25rem}.admin-shell .help-guide__step-num{display:inline-block;font-size:.72rem;text-transform:uppercase;letter-spacing:.5px;color:var(--color-accent);margin-bottom:.25rem}.admin-shell .help-guide__step-text{margin:0 0 .6rem}.admin-shell .help-guide__shot{width:100%;border:1px solid var(--border);border-radius:var(--radius-sm);display:block}.admin-shell .help-guide__shot-missing{color:var(--muted);font-size:.85rem;font-style:italic}.admin-shell .matrix-legend{list-style:none;display:flex;flex-wrap:wrap;gap:1rem;margin:0 0 .85rem;padding:0;color:var(--muted);font-size:.82rem}.admin-shell .matrix-legend li{display:inline-flex;align-items:center;gap:.4rem}.admin-shell .form-page-head{display:flex;align-items:center;gap:.9rem;margin-bottom:1.25rem}.admin-shell .form-page-head h1{margin:0}.admin-shell .form-page-head .back-link{background:transparent;color:var(--muted);font-weight:500;text-decoration:none;font-size:.9rem;border:1px solid var(--border);border-radius:var(--radius-sm);padding:.4rem .8rem}.admin-shell .form-page-head .back-link:hover{color:var(--color-fg);border-color:var(--muted);filter:none}.admin-shell .member-form{background:var(--surface-1);border:1px solid var(--border);border-radius:var(--radius);padding:1.35rem;max-width:460px;display:flex;flex-direction:column;gap:.85rem}.admin-shell .member-form label{width:100%}.admin-shell .member-form input:not([type=checkbox]),.admin-shell .member-form textarea{width:100%}.admin-shell .member-form textarea{resize:vertical;min-height:90px}.admin-shell .member-form button{align-self:flex-start}.admin-shell .member-form .intake-field{margin:.15rem 0 0;padding:.85rem 1rem 1rem}.admin-shell .member-form .intake-field .check{flex-direction:row;align-items:center;gap:.5rem}.admin-shell .member-form .intake-flags{display:flex;flex-direction:column;gap:.5rem;margin-top:.4rem}.admin-shell .time-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:.85rem}.admin-shell .grid-day{background:var(--surface-1);border:1px solid var(--border);border-radius:var(--radius-sm);padding:.75rem;min-height:90px}.admin-shell .grid-day h2{font-size:.85rem;color:var(--muted);margin:0 0 .6rem;text-transform:capitalize}.admin-shell .grid-day .no-blocks{color:var(--muted);font-size:.8rem;margin:.25rem 0 0;opacity:.7}.admin-shell .grid-block{display:flex;align-items:center;flex-wrap:wrap;gap:.5rem;text-decoration:none;color:#06140c;border-radius:var(--radius-sm);padding:.45rem .6rem;margin-bottom:.45rem;font-size:.84rem;font-weight:600;transition:filter .15s}.admin-shell .grid-block:hover{filter:brightness(1.06)}.admin-shell .grid-block .time{margin-left:auto;font-variant-numeric:tabular-nums}.admin-shell .grid-block .cap{background:#00000038;border-radius:999px;padding:.05rem .45rem;font-size:.78rem}.admin-shell .grid-block[data-full=true]{outline:2px solid var(--color-coral)}.admin-shell .day-column{display:flex;flex-direction:column;gap:.45rem}.admin-shell .day-column .grid-block{margin-bottom:0}.admin-shell .roster{list-style:none;margin:0 0 1.25rem;padding:0;border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.admin-shell .roster li{display:flex;align-items:center;gap:.75rem;padding:.65rem 1rem;border-top:1px solid var(--border)}.admin-shell .roster li:first-child{border-top:none}.admin-shell .roster .name{font-weight:600;margin-right:auto}.admin-shell .roster .src{color:var(--muted);font-size:.72rem;text-transform:uppercase;letter-spacing:.4px;border:1px solid var(--border);border-radius:999px;padding:.1rem .5rem}.admin-shell .roster [data-cancel],.admin-shell .roster [data-edit-slot]{background:transparent;border:1px solid var(--border);color:var(--muted);padding:.3rem .7rem;font-size:.8rem}.admin-shell .roster [data-cancel]:hover,.admin-shell .roster [data-edit-slot]:hover{color:var(--color-fg);border-color:var(--muted);filter:none}.admin-shell .add-member{display:flex;flex-wrap:wrap;gap:.6rem;align-items:center}.admin-shell .add-member input{min-width:200px}.admin-shell .hero-copy{border:1px solid var(--border);border-radius:var(--radius-sm);padding:.85rem 1rem .25rem;margin:0 0 1rem}.admin-shell .hero-copy legend{color:var(--muted);font-size:.85rem;padding:0 .4rem}.admin-shell .gallery-thumbs{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:.85rem;margin-bottom:1rem}.admin-shell .gallery-thumb{border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden;display:flex;flex-direction:column}.admin-shell .gallery-thumb img{width:100%;height:110px;object-fit:cover;display:block;background:var(--surface-2)}.admin-shell .gallery-thumb .gallery-url{font-size:.72rem;color:var(--muted);padding:.4rem .5rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.admin-shell .gallery-thumb .gallery-thumb-actions{display:flex;gap:.3rem;padding:0 .5rem .5rem}.admin-shell .gallery-thumb .gallery-thumb-actions button{background:transparent;border:1px solid var(--border);color:var(--muted);padding:.25rem .55rem;font-size:.78rem}.admin-shell .gallery-thumb .gallery-thumb-actions button:hover:not(:disabled){color:var(--color-fg);border-color:var(--muted);filter:none}.admin-shell .gallery-thumb .gallery-thumb-actions button:disabled{opacity:.4;cursor:default}.admin-shell .section-help{color:var(--muted);font-size:.85rem;margin:-.35rem 0 1rem;max-width:78ch;line-height:1.5}.admin-shell .notifications-editor .notif-enable{display:flex;align-items:center;gap:.5rem;margin-bottom:1.1rem;font-weight:600}.admin-shell .notifications-editor .notif-templates{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(340px,100%),1fr));gap:1rem;margin-bottom:1.1rem}.admin-shell .notifications-editor .notif-template{border:1px solid var(--border);border-radius:var(--radius-sm);padding:.85rem 1rem .25rem;margin:0;min-width:0}.admin-shell .notifications-editor .notif-template legend{color:var(--muted);font-size:.85rem;padding:0 .4rem}.admin-shell .notifications-editor .field>input{max-width:none}.admin-shell .notifications-editor .field-help{margin:0 0 .85rem}.admin-shell .notifications-editor textarea{min-height:190px;resize:vertical;line-height:1.5}.admin-shell .notifications-editor .notif-placeholders{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem;margin:0 0 1rem;font-size:.8rem;color:var(--muted)}.admin-shell .notifications-editor .notif-placeholders code{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:.15rem .4rem;color:var(--color-fg);font-size:.78rem}.admin-shell .notifications-editor .notif-placeholders-label:after{content:":"}.admin-shell .notifications-editor .notif-actions{display:flex;gap:.5rem}.admin-shell .notifications-editor .notif-actions .secondary{background:transparent;border:1px solid var(--border);color:var(--muted)}.admin-shell .notifications-editor .notif-actions .secondary:hover{color:var(--color-fg);border-color:var(--muted);filter:none}.admin-shell .booking-editor .field-label{color:var(--color-fg);font-weight:600}.admin-shell .booking-editor .field-help{max-width:78ch}.admin-shell .booking-editor .input-unit{display:flex;align-items:center;gap:.55rem}.admin-shell .booking-editor .input-unit input{width:6.5rem}.admin-shell .booking-editor .input-unit .unit{color:var(--muted);font-size:.85rem}.admin-shell .ex-form button[type=button],.admin-shell .ex-list button,.admin-shell .tpl-list button,.admin-shell .wb-rows button,.admin-shell .wb-toolbar button:not(.primary),.admin-shell .wb-dialog [data-import-pick],.admin-shell .wb-dialog [data-copy-pick],.admin-shell .wb-dialog [data-import-close],.admin-shell .wb-dialog [data-copy-close],.admin-shell .wb-dialog [data-merge-cancel],.admin-shell .wb-dialog [data-template-cancel],.admin-shell .picker-results button{background:transparent;border:1px solid var(--border);color:var(--muted);padding:.4rem .7rem;font-size:.85rem;font-weight:500}.admin-shell .ex-form button[type=button]:hover,.admin-shell .ex-list button:hover,.admin-shell .tpl-list button:hover,.admin-shell .wb-rows button:hover,.admin-shell .wb-toolbar button:not(.primary):hover,.admin-shell .wb-dialog [data-import-pick]:hover,.admin-shell .wb-dialog [data-copy-pick]:hover,.admin-shell .wb-dialog [data-import-close]:hover,.admin-shell .wb-dialog [data-copy-close]:hover,.admin-shell .wb-dialog [data-merge-cancel]:hover,.admin-shell .wb-dialog [data-template-cancel]:hover,.admin-shell .picker-results button:hover{color:var(--color-fg);border-color:var(--muted);filter:none}.admin-shell .cat-head,.admin-shell .wb-head{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap;margin-bottom:1rem}.admin-shell .cat-head h1,.admin-shell .wb-head h1{margin:0 auto 0 0}.admin-shell .ex-form{display:flex;flex-wrap:wrap;gap:.6rem;align-items:center;margin-bottom:1.25rem}.admin-shell .ex-form [data-name]{min-width:200px}.admin-shell .ex-form [data-category]{min-width:140px}.admin-shell .ex-form [data-description]{flex:1;min-width:220px}.admin-shell .ex-form button{white-space:nowrap}.admin-shell .ex-error,.admin-shell .wb-error{color:var(--color-coral);margin:0 0 1rem}.admin-shell .ex-list,.admin-shell .tpl-list{list-style:none;margin:0;padding:0;border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.admin-shell .ex-list:empty,.admin-shell .tpl-list:empty{display:none}.admin-shell .ex-list li,.admin-shell .tpl-list li{display:flex;align-items:center;gap:.75rem;padding:.7rem 1rem;border-top:1px solid var(--border)}.admin-shell .ex-list li:first-child,.admin-shell .tpl-list li:first-child{border-top:none}.admin-shell .ex-list .name,.admin-shell .tpl-list .name{font-weight:600;flex:none}.admin-shell .ex-list .desc,.admin-shell .ex-list .preview,.admin-shell .tpl-list .desc,.admin-shell .tpl-list .preview{color:var(--muted);font-size:.85rem;margin-right:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.admin-shell .ex-list .count,.admin-shell .tpl-list .count{font-size:.72rem;color:var(--muted);background:var(--surface-3);border-radius:999px;padding:.1rem .55rem;font-variant-numeric:tabular-nums;flex:none}.admin-shell .ex-list button,.admin-shell .tpl-list button{flex:none}.admin-shell .ex-list .desc{margin-left:.25rem}.admin-shell .ex-list .chip{font-size:.72rem;color:var(--color-amber);background:#f5a62326;border-radius:999px;padding:.1rem .55rem;font-weight:600;flex:none}.admin-shell .wb-toolbar{display:flex;flex-wrap:wrap;gap:.6rem;margin-bottom:1.25rem}.admin-shell .wb-rows{list-style:none;margin:0 0 1rem;padding:0}.admin-shell .wb-rows [data-line]{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;padding:.7rem .85rem;border:1px solid var(--border);border-radius:var(--radius-sm);margin-bottom:.6rem;background:var(--surface-1)}.admin-shell .wb-rows .ex-name{font-weight:600;min-width:150px}.admin-shell .wb-rows [data-sets]{width:56px}.admin-shell .wb-rows [data-reps],.admin-shell .wb-rows [data-dur]{width:64px}.admin-shell .wb-rows [data-weight]{width:96px}.admin-shell .wb-rows [data-line-note]{flex:1;min-width:140px}.admin-shell .wb-rows [data-mode-reps],.admin-shell .wb-rows [data-mode-time]{padding:.4rem .7rem}.admin-shell .wb-rows [data-mode-reps][data-on=true],.admin-shell .wb-rows [data-mode-time][data-on=true]{background:var(--color-accent);color:#06140c;border-color:transparent;font-weight:600}.admin-shell .wb-note{display:block;width:100%;max-width:360px;margin-bottom:.85rem}.admin-shell .picker{min-width:220px}.admin-shell .picker .picker-results{list-style:none;margin:.35rem 0 0;padding:0;display:flex;flex-wrap:wrap;gap:.35rem}.admin-shell .picker .chip{font-size:.68rem;color:var(--muted);margin-left:.4rem}.admin-shell .wb-dialog{margin-top:1rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-1);padding:1rem 1.15rem;max-width:560px}.admin-shell .wb-dialog h2{margin:0 0 .75rem}.admin-shell .wb-dialog p{margin:0 0 .85rem}.admin-shell .wb-dialog ul{list-style:none;margin:0 0 .85rem;padding:0;display:flex;flex-direction:column;gap:.5rem}.admin-shell .wb-dialog li button{width:100%;text-align:left}.admin-shell .wb-dialog [data-template-name]{width:100%;max-width:320px;margin-bottom:.75rem;display:block}.admin-shell .admin-tabbar,.admin-shell .admin-more-backdrop,.admin-shell .admin-more-sheet{display:none}.admin-shell .wb-line-controls,.admin-shell .wb-ctl,.admin-shell .wb-seg,.admin-shell .wb-line-menu{display:contents}.admin-shell .wb-ctl>span{display:none}.admin-shell .wb-pos,.admin-shell .wb-line-menu-btn{display:none}.landing{display:block}.landing section{max-width:1080px;margin:0 auto;padding:4rem 1.25rem}.landing section>h2{font-size:1.75rem;font-weight:700;text-align:center;margin:0 0 2rem}.landing .hero{max-width:none;min-height:72vh;display:flex;align-items:center;justify-content:center;text-align:center;padding:4rem 1.25rem;background-size:cover;background-position:center;position:relative}.landing .hero:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,#0a0a0a8c,#0a0a0acc)}.landing .hero .hero-inner{position:relative;z-index:1;max-width:720px}.landing .hero h1{font-size:clamp(2rem,5vw,3.25rem);font-weight:800;margin:0 0 1rem}.landing .hero .tagline{letter-spacing:3px;text-transform:uppercase;font-size:.85rem;color:var(--color-accent);font-weight:700}.landing .hero .sub{font-size:1.1rem;color:#d7d9de;margin:1rem 0 2rem}.landing .hero .cta{display:inline-block;background:var(--color-accent);color:#06140c;text-decoration:none;font-weight:700;padding:.85rem 2rem;border-radius:999px;transition:filter .15s,transform .15s}.landing .hero .cta:hover{filter:brightness(1.08);transform:translateY(-1px)}.landing .service-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1rem}.landing .service-card{background:var(--surface-1);border:1px solid var(--border);border-radius:var(--radius);padding:1.75rem 1.5rem;text-align:center;transition:transform .15s,border-color .15s}.landing .service-card:hover{transform:translateY(-3px)}.landing .service-card h3{margin:0;font-size:1.15rem}.landing .gallery-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:.85rem}.landing .gallery-grid img{width:100%;height:240px;object-fit:cover;border-radius:var(--radius);display:block}.landing .contact-grid{display:grid;grid-template-columns:1fr 1.3fr;gap:2rem;align-items:start}@media(max-width:720px){.landing .contact-grid{grid-template-columns:1fr}}.landing .contact-meta{display:flex;flex-direction:column;gap:1rem}.landing .contact-meta .meta-line{display:flex;align-items:center;gap:.6rem;margin:0;color:#d7d9de}.landing .contact-meta .meta-ico{width:20px;height:20px;flex:none;stroke:var(--color-accent)}.landing .contact-socials{display:flex;flex-wrap:wrap;gap:.6rem;margin-top:.5rem}.landing .contact-socials .social{display:inline-flex;align-items:center;gap:.5rem;text-decoration:none;font-weight:600;padding:.6rem 1.1rem;border-radius:999px;color:var(--color-fg);border:1px solid var(--border);transition:transform .15s,border-color .15s,background .15s}.landing .contact-socials .social svg{width:20px;height:20px}.landing .contact-socials .social:hover{transform:translateY(-1px)}.landing .contact-socials .social-ig:hover{border-color:#e1306c;background:#e1306c1f}.landing .contact-socials .social-wa:hover{border-color:#25d366;background:#25d3661f}.landing .contact-socials .social-call{border-color:var(--color-accent)}.landing .contact-socials .social-call svg{stroke:var(--color-accent)}.landing .contact-socials .social-call:hover{border-color:var(--color-accent);background:#36c27524}.landing .contact-form{display:flex;flex-direction:column;gap:.75rem}.landing .contact-form .field-row{display:flex;gap:.75rem}@media(max-width:480px){.landing .contact-form .field-row{flex-direction:column}}.landing .contact-form .field-row>*{flex:1}.landing .contact-form input,.landing .contact-form select,.landing .contact-form textarea{width:100%;background:var(--surface-2);color:var(--color-fg);border:1px solid var(--border);border-radius:var(--radius-sm);padding:.75rem .9rem;font:inherit;outline:none;transition:border-color .15s,box-shadow .15s}.landing .contact-form input:focus,.landing .contact-form select:focus,.landing .contact-form textarea:focus{border-color:var(--color-accent);box-shadow:0 0 0 3px #36c27533}.landing .contact-form textarea{resize:vertical;min-height:110px}.landing .contact-form button{background:var(--color-accent);color:#06140c;border:none;border-radius:var(--radius-sm);padding:.85rem 1rem;font:inherit;font-weight:700;cursor:pointer;transition:filter .15s}.landing .contact-form button:hover:not(:disabled){filter:brightness(1.08)}.landing .contact-form button:disabled{opacity:.45;cursor:not-allowed}.landing .success{background:#36c2751f;border:1px solid var(--color-accent);color:var(--color-fg);border-radius:var(--radius);padding:1.5rem;text-align:center;font-weight:600}.landing svg[viewBox="0 0 24 24"]{fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.landing-topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.8rem 1.5rem;background:#0a0a0ad1;backdrop-filter:blur(8px);border-bottom:1px solid var(--border)}.landing-topbar .brand{font-weight:800;letter-spacing:.5px;font-size:1.15rem;color:var(--color-fg);text-decoration:none}.landing-topbar .login-btn{display:inline-flex;align-items:center;gap:.45rem;background:var(--color-accent);color:#06140c;text-decoration:none;font-weight:700;font-size:.95rem;padding:.55rem 1.2rem;border-radius:999px;transition:filter .15s,transform .15s}.landing-topbar .login-btn:hover{filter:brightness(1.08);transform:translateY(-1px)}.landing-topbar .login-btn svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.landing-footer{display:flex;gap:1.5rem;justify-content:center;padding:2rem 1.25rem 3rem;border-top:1px solid var(--border)}.landing-footer a{color:var(--muted);text-decoration:none;font-size:.9rem}.landing-footer a:hover{color:var(--color-accent)}.portal{min-height:100vh}.portal .portal-topbar{display:flex;align-items:center;gap:.75rem;height:60px;padding:0 1.25rem;background:var(--surface-1);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:10}.portal .portal-brand{font-weight:800;letter-spacing:.5px;font-size:1.1rem;color:var(--color-fg);text-decoration:none}.portal .portal-brand .dot{color:var(--color-accent)}.portal .portal-nav{margin-left:auto;display:flex;align-items:center;gap:.35rem}.portal .portal-nav a,.portal .portal-nav button{color:var(--muted);text-decoration:none;padding:.5rem .85rem;border-radius:var(--radius-sm);font:inherit;font-weight:600;background:transparent;border:none;cursor:pointer;transition:background .15s,color .15s}.portal .portal-nav a:hover,.portal .portal-nav button:hover{color:var(--color-fg);background:var(--surface-2)}.portal .portal-nav .portal-signout{border:1px solid var(--border)}.portal .portal-bell{position:relative;display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:var(--radius-sm);text-decoration:none;transition:background .15s}.portal .portal-bell:hover{background:var(--surface-2)}.portal .portal-bell:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.portal .portal-bell .bell-icon{font-size:1.1rem;line-height:1}.portal .portal-bell .bell-badge{position:absolute;top:2px;right:2px;min-width:16px;height:16px;padding:0 4px;border-radius:999px;background:var(--color-accent);color:#06140c;font-size:.7rem;font-weight:700;line-height:16px;text-align:center}.portal .portal-main{max-width:720px;margin:0 auto;padding:1.75rem 1.25rem 4rem}.portal h1{font-size:1.6rem;font-weight:800;margin:0 0 1.25rem}.portal h2{font-size:1.05rem;font-weight:700;margin:1.75rem 0 .85rem}.portal .portal-card{background:var(--surface-1);border:1px solid var(--border);border-radius:var(--radius);padding:1.35rem 1.45rem;margin-bottom:1rem}.portal .plan-card .plan-head{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem}.portal .plan-card .plan-name{font-size:1.2rem;font-weight:700;margin:0}.portal .plan-card .plan-remaining{display:flex;align-items:baseline;gap:.45rem;margin-top:.9rem}.portal .plan-card .plan-remaining .num{font-size:2.1rem;font-weight:800;color:var(--color-accent);line-height:1}.portal .plan-card .plan-remaining .num.unltd{font-size:1.15rem}.portal .plan-card .plan-remaining .lbl{color:var(--muted);font-size:.9rem}.portal .plan-card .plan-bar{display:flex;align-items:stretch;height:8px;border-radius:999px;overflow:hidden;margin:.9rem 0 .5rem;background:var(--surface-2)}.portal .plan-card .plan-bar .seg{display:block;height:100%}.portal .plan-card .plan-bar .seg.attended{background:var(--muted)}.portal .plan-card .plan-bar .seg.booked{background:var(--color-amber)}.portal .plan-card .plan-bar .seg.left{background:var(--color-accent)}.portal .plan-card .plan-legend{display:flex;flex-wrap:wrap;gap:.9rem;color:var(--muted);font-size:.75rem}.portal .plan-card .plan-legend b{color:var(--color-fg);font-weight:700}.portal .plan-card .expiry{display:block;margin-top:.5rem;color:var(--muted);font-size:.8rem}.portal .announce-card .announce-head{display:flex;justify-content:space-between;align-items:baseline;gap:.75rem}.portal .announce-card .announce-title{margin:0;font-size:1.05rem}.portal .announce-card .announce-date{color:var(--muted);font-size:.8rem;white-space:nowrap}.portal .announce-card .announce-body{margin:.5rem 0 0;color:var(--color-fg);line-height:1.55;white-space:pre-wrap}.portal .badge{display:inline-flex;align-items:center;gap:.4rem;white-space:nowrap;padding:.35rem .8rem;border-radius:999px;font-size:.82rem;font-weight:700}.portal .badge.is-paid{background:#36c27526;color:var(--color-accent);border:1px solid rgba(54,194,117,.4)}.portal .badge.is-due{background:#f5a62326;color:var(--color-amber);border:1px solid rgba(245,166,35,.4)}.portal .badge.is-none{background:var(--surface-2);color:var(--muted);border:1px solid var(--border)}.portal .session-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.5rem}.portal .session-item{display:flex;align-items:center;gap:.75rem;background:var(--surface-1);border:1px solid var(--border);border-left:3px solid var(--color-accent);border-radius:var(--radius-sm);padding:.7rem .95rem}.portal .session-item .s-name{font-weight:600}.portal .session-item .s-when{margin-left:auto;color:var(--muted);font-size:.9rem;text-align:right}.portal .empty{color:var(--muted)}.portal label{display:block;font-weight:600;font-size:.95rem;margin-bottom:1rem}.portal label.field-inline{display:flex;align-items:center;margin-bottom:.25rem}.portal input{width:100%;margin-top:.4rem;background:var(--surface-2);color:var(--color-fg);border:1px solid var(--border);border-radius:var(--radius-sm);padding:.7rem .85rem;font:inherit;outline:none;transition:border-color .15s,box-shadow .15s}.portal input:focus{border-color:var(--color-accent);box-shadow:0 0 0 3px #36c27533}.portal input[type=checkbox]{width:auto;margin:0 .55rem 0 0;accent-color:var(--color-accent)}.portal .pw-field{position:relative;margin-top:.4rem}.portal .pw-field input{margin-top:0;padding-right:2.6rem}.portal .pw-field .pw-toggle{position:absolute;top:0;right:0;bottom:0;width:2.6rem;display:flex;align-items:center;justify-content:center;background:transparent;border:none;padding:0;cursor:pointer;color:var(--muted);transition:color .15s}.portal .pw-field .pw-toggle:hover{color:var(--color-fg)}.portal .pw-field .pw-toggle:focus-visible{outline:2px solid var(--color-accent);outline-offset:-2px;border-radius:var(--radius-sm)}.portal .pw-field .pw-toggle svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.portal .btn{display:inline-block;background:var(--color-accent);color:#06140c;border:none;border-radius:999px;padding:.8rem 1.6rem;font:inherit;font-weight:700;cursor:pointer;text-decoration:none;transition:filter .15s,transform .15s}.portal .btn:hover:not(:disabled){filter:brightness(1.08);transform:translateY(-1px)}.portal .btn:disabled{opacity:.45;cursor:not-allowed}.portal .btn-ghost{background:transparent;color:var(--color-fg);border:1px solid var(--border)}.portal .btn-ghost:hover:not(:disabled){border-color:var(--muted);filter:none;transform:none}.portal .row-actions{display:flex;flex-wrap:wrap;gap:.6rem;align-items:center}.portal .hint{color:var(--muted);font-size:.85rem;display:block}.portal .status-ok{color:var(--color-accent);font-weight:600}.portal .alert{background:#ff6f611f;border:1px solid var(--color-coral);color:var(--color-fg);border-radius:var(--radius-sm);padding:.6rem .8rem;margin:.1rem 0 .85rem;font-size:.9rem}.portal .notice{background:#f5a6231a;border:1px solid rgba(245,166,35,.35);color:#e9d6b0;border-radius:var(--radius-sm);padding:.7rem .85rem;margin-bottom:1.1rem;font-size:.92rem}.portal.portal-auth{display:flex;align-items:center;justify-content:center;padding:2rem 1.25rem}.portal .auth-card{width:100%;max-width:380px;background:var(--surface-1);border:1px solid var(--border);border-radius:var(--radius);padding:2rem 1.75rem;box-shadow:0 20px 60px #00000059}.portal .auth-card .auth-brand{text-align:center;font-weight:800;letter-spacing:.5px;font-size:1.35rem;margin:0 0 .3rem}.portal .auth-card .auth-brand .dot{color:var(--color-accent)}.portal .auth-card .auth-tag{text-align:center;color:var(--muted);font-size:.72rem;letter-spacing:2.5px;text-transform:uppercase;margin:0 0 1.6rem}.portal .auth-card h1{font-size:1.25rem;text-align:center;margin:0 0 1.3rem}.portal .auth-card form{display:flex;flex-direction:column}.portal .auth-card .btn{width:100%;text-align:center;margin-top:.4rem}.portal .auth-card .auth-link{display:block;text-align:center;margin-top:1rem;color:var(--muted);text-decoration:none;font-size:.9rem}.portal .auth-card .auth-link:hover{color:var(--color-accent)}.admin-shell .sw-head{display:flex;align-items:center;gap:.6rem;padding:.9rem 1rem}.admin-shell .sw-head h1{font-size:1rem;margin:0}.admin-shell .sw-cap{margin-left:auto;color:var(--muted);font-variant-numeric:tabular-nums}.admin-shell .sw-cap[data-full=true]{color:var(--color-coral)}.admin-shell .sw-tabs{display:flex;gap:.5rem;overflow-x:auto;padding:.5rem 1rem;-webkit-overflow-scrolling:touch}.admin-shell .sw-tab{flex:0 0 auto;display:flex;align-items:center;gap:.4rem;min-height:44px;padding:0 .9rem;border:1px solid var(--border);border-radius:22px;background:var(--surface-2);color:var(--color-fg);white-space:nowrap;cursor:pointer}.admin-shell .sw-tab[data-on=true]{background:var(--color-accent);color:#06210f;border-color:var(--color-accent);font-weight:600}.admin-shell .sw-tab .dot{width:7px;height:7px;border-radius:50%}.admin-shell .sw-tab .dot.done{background:var(--color-accent)}.admin-shell .sw-tab[data-on=true] .dot.done{background:#06210f}.admin-shell .sw-tab .dot.todo{background:var(--color-amber)}.admin-shell .sw-tab.dropin{border-style:dashed;color:var(--muted)}.admin-shell .sw-body{padding:.75rem 1rem 2rem}.admin-shell .sw-bodyhead{display:flex;align-items:center;gap:.6rem;margin-bottom:.6rem}.admin-shell .sw-bodyhead button{min-height:44px}.admin-shell .sw-saved{color:var(--color-accent);font-size:.85rem}.admin-shell .sw-saveerror{color:var(--color-coral);font-size:.85rem}.admin-shell .sw-more{margin-left:auto}.admin-shell .sw-overflow-btn{min-width:44px}.admin-shell .sw-overflow{display:flex;flex-direction:column;gap:.4rem;padding:.6rem;margin-bottom:.6rem;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius)}.admin-shell .slot-error{color:var(--color-coral);font-size:.85rem}.admin-shell .ap-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.5rem}.admin-shell .ap-line{display:flex;align-items:baseline;gap:.6rem;padding:.7rem .8rem;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius);flex-wrap:wrap}.admin-shell .ap-num{color:var(--muted);width:1.2rem;font-variant-numeric:tabular-nums}.admin-shell .ap-name{font-weight:600}.admin-shell .ap-det{color:var(--muted);font-variant-numeric:tabular-nums}.admin-shell .ap-note{flex-basis:100%;color:var(--muted);font-size:.85rem}.admin-shell .ap-empty{color:var(--muted);padding:1rem 0}.admin-shell .wb-undo{display:flex;align-items:center;gap:.6rem;margin:.5rem 0;color:var(--muted)}.admin-shell .sw-dialog{padding:1rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-1);margin:1rem}@media(max-width:600px){.admin-shell .sw-head h1{font-size:.95rem}}@media(max-width:600px){.admin-shell .admin-main{padding:.9rem .85rem 5rem}.admin-shell section{padding:1rem .9rem}.admin-shell button,.admin-shell .members-head a,.admin-shell .roster-head a,.admin-shell .week-head a,.admin-shell .day-head a,.admin-shell .sub-head a,.admin-shell input,.admin-shell select,.admin-shell textarea{min-height:44px}.admin-shell .field{display:flex;flex-direction:column;width:100%}.admin-shell .field>input,.admin-shell .field>select,.admin-shell .field>textarea{width:100%}.admin-shell label{width:100%}.admin-shell label>input,.admin-shell label>select,.admin-shell label>textarea{width:100%}.admin-shell .member-form input[type=checkbox]{width:auto;min-height:0}.admin-shell .member-form .check{min-height:44px;display:flex;align-items:center;gap:.5rem}.admin-shell .members-head input[type=search],.admin-shell .sub-head input[type=search]{min-width:0;width:100%}.admin-shell .pay-popover,.admin-shell .dialog{min-width:0;width:100%;max-width:none}.admin-shell .admin-nav{gap:0;min-height:48px}.admin-shell .admin-nav a[routerLink],.admin-shell .admin-nav .admin-signout{display:none}.admin-shell .admin-tabbar{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:40;height:62px;background:var(--surface-1);border-top:1px solid var(--border)}.admin-shell .admin-tabbar [data-tab]{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;background:transparent;border:none;color:var(--muted);font-size:.68rem;font-weight:600;text-decoration:none;min-height:44px}.admin-shell .admin-tabbar [data-tab] .ti{font-size:1.15rem;line-height:1}.admin-shell .admin-tabbar [data-tab].is-active{color:var(--color-accent)}.admin-shell .admin-more-backdrop{display:block;position:fixed;inset:0;background:#00000080;z-index:41}.admin-shell .admin-more-sheet{display:flex;flex-direction:column;gap:.25rem;position:fixed;left:0;right:0;bottom:62px;z-index:42;background:var(--surface-1);border-top:1px solid var(--border);padding:.75rem .85rem calc(.75rem + env(safe-area-inset-bottom))}.admin-shell .admin-more-sheet a,.admin-shell .admin-more-sheet .admin-signout{min-height:44px;display:flex;align-items:center;color:var(--color-fg);background:transparent;border:none;padding:0 .5rem;font-weight:600;text-decoration:none}.admin-shell .admin-more-sheet .admin-signout{border-top:1px solid var(--border);color:var(--muted)}.admin-shell .member-rows{border:none;border-radius:0;overflow:visible}.admin-shell .member-rows .member-head{display:none}.admin-shell .member-rows li[data-member-row]{display:grid;grid-template-columns:auto 1fr auto;grid-template-areas:"code name  pay" "code phone pay";align-items:center;gap:.1rem .6rem;background:var(--surface-1);border:1px solid var(--border);border-radius:var(--radius);padding:.75rem .9rem;margin-bottom:.6rem}.admin-shell .member-rows .member-code{grid-area:code;align-self:center}.admin-shell .member-rows .name{grid-area:name;font-size:1rem}.admin-shell .member-rows .phone{grid-area:phone}.admin-shell .member-rows .plans,.admin-shell .member-rows .remaining{display:none}.admin-shell .member-rows .pay-col{grid-area:pay;justify-self:end}.admin-shell .member-rows .pay-col button{min-height:44px}.admin-shell .wb-rows .wb-line{display:block;position:relative;background:var(--surface-1);border:1px solid var(--border);border-radius:var(--radius);padding:.75rem;padding-right:calc(44px + .75rem);margin-bottom:.75rem}.admin-shell .wb-rows .wb-pos{display:inline-flex;width:24px;height:24px;border-radius:7px;background:var(--surface-2);color:var(--muted);font-size:.8rem;font-weight:700;align-items:center;justify-content:center;vertical-align:middle;margin-right:.4rem}.admin-shell .wb-rows .wb-line .ex-name{font-weight:600}.admin-shell .wb-rows .wb-line .wb-line-picker{display:block;margin-top:.4rem}.admin-shell .wb-rows .wb-line-menu-btn{display:flex;align-items:center;justify-content:center;position:absolute;right:.4rem;top:.4rem;z-index:6;background:transparent;color:var(--muted);min-width:44px;min-height:44px;padding:0;font-size:1.2rem}.admin-shell .wb-rows .wb-line-menu{display:none}.admin-shell .wb-rows .wb-line[data-menu-open=true]{z-index:45}.admin-shell .wb-rows .wb-line[data-menu-open=true] .wb-line-menu{display:flex;flex-direction:column;gap:.25rem;position:absolute;right:.4rem;top:3rem;z-index:7;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:.35rem}.admin-shell .wb-rows .wb-line[data-menu-open=true] .wb-line-menu button{background:transparent;color:var(--color-fg);min-height:44px;text-align:left;padding:0 .75rem}.admin-shell .wb-rows .wb-line-controls{display:flex;flex-wrap:wrap;align-items:flex-end;gap:.5rem;margin-top:.6rem}.admin-shell .wb-rows .wb-ctl{width:auto;display:flex;flex-direction:column;gap:.2rem;color:var(--muted);font-size:.72rem}.admin-shell .wb-rows .wb-ctl>span{display:block}.admin-shell .wb-rows .wb-ctl input{width:72px;min-height:44px;text-align:center}.admin-shell .wb-rows .wb-seg{display:flex;align-self:flex-end;border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden}.admin-shell .wb-rows .wb-seg button{background:var(--surface-2);color:var(--muted);min-height:44px;padding:0 .8rem;border-radius:0}.admin-shell .wb-rows .wb-seg button[data-on=true]{background:var(--surface-3);color:var(--color-fg)}.admin-shell .wb-rows .wb-line-note{width:100%;margin-top:.6rem;min-height:44px}.admin-shell .wb-toolbar{display:flex;flex-wrap:wrap;gap:.5rem}.admin-shell .wb-toolbar button{flex:1 1 auto;min-height:44px}.admin-shell .wb-dialog{position:fixed;left:0;right:0;bottom:0;z-index:60;max-width:none;max-height:70vh;overflow-y:auto;border-radius:var(--radius) var(--radius) 0 0}.admin-shell .payments-matrix .frozen-col{max-width:120px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.admin-shell .payments-matrix .cell-btn{min-height:44px}.admin-shell .ex-list li[data-exercise-row],.admin-shell .tpl-list li[data-template-row]{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem .6rem}.admin-shell .ex-list .name,.admin-shell .tpl-list .name{flex:1 1 100%;font-weight:600}.admin-shell .ex-list .desc,.admin-shell .tpl-list .preview{flex:1 1 100%;color:var(--muted);font-size:.82rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.admin-shell .ex-list [data-category-chip],.admin-shell .tpl-list .count{display:none}.admin-shell .ex-list [data-edit],.admin-shell .ex-list [data-archive],.admin-shell .tpl-list [data-edit],.admin-shell .tpl-list [data-delete]{min-height:44px}.admin-shell .ex-list [data-edit],.admin-shell .tpl-list [data-edit]{margin-left:auto}.admin-shell .ex-list [data-archive],.admin-shell .tpl-list [data-delete]{margin-left:.3rem}.admin-shell .ex-form{flex-direction:column;align-items:stretch}.admin-shell .ex-form input,.admin-shell .ex-form button{width:100%}.admin-shell .week-head a,.admin-shell .day-head a{display:inline-flex;align-items:center}.admin-shell .grid-block{min-height:44px}.admin-shell .ah-head{flex-wrap:wrap}.admin-shell .ah-head strong{overflow:hidden;text-overflow:ellipsis}.admin-classes .class-form{flex-direction:column}.admin-classes .class-form select,.admin-classes .class-form input,.admin-classes .class-form button{width:100%;min-height:44px}}.portal .portal-cta{display:inline-block;margin:.25rem 0 1.25rem;padding:.7rem 1.2rem;background:var(--color-accent);color:#06140c;font-weight:700;border-radius:10px;text-decoration:none}.portal .book-head{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.portal .book-remaining{font-size:.8rem;color:var(--color-accent);border:1px solid var(--border);background:#36c2751f;padding:.25rem .6rem;border-radius:999px}.portal .book-remaining.zero{color:var(--color-coral);background:#ff6f611f}.portal .chip-row,.portal .date-strip{display:flex;gap:.5rem;overflow-x:auto;padding-bottom:.4rem}.portal .chip{white-space:nowrap;padding:.5rem .9rem;border-radius:999px;border:1px solid var(--border);background:var(--surface-2);color:var(--color-fg);font-size:.85rem}.portal .chip.on{background:var(--color-accent);color:#06140c;font-weight:600;border-color:transparent}.portal .datecell{flex:0 0 auto;display:flex;flex-direction:column;align-items:center;gap:2px;padding:.5rem .7rem;border-radius:12px;border:1px solid var(--border);background:var(--surface-1);color:var(--color-fg)}.portal .datecell.on{background:var(--color-accent);color:#06140c;border-color:transparent}.portal .datecell .dow{font-size:.65rem;color:var(--muted)}.portal .datecell.on .dow{color:#06140c}.portal .datecell .dom{font-size:1rem;font-weight:700}.portal .sess-list{list-style:none;padding:0;margin:1rem 0 0;display:flex;flex-direction:column;gap:.6rem}.portal .sess-item{display:flex;align-items:center;justify-content:space-between;background:var(--surface-1);border:1px solid var(--border);border-radius:14px;padding:.75rem .9rem}.portal .sess-time{font-size:1rem;font-weight:700}.portal .sess-trainer{display:block;font-size:.8rem;color:var(--muted)}.portal .sess-seats{display:block;font-size:.8rem;color:var(--color-accent)}.portal .sess-seats[data-full=true]{color:var(--color-coral)}.portal .sess-book,.portal .sess-cancel{border:none;border-radius:10px;padding:.55rem 1rem;font-size:.9rem;font-weight:700;background:var(--color-accent);color:#06140c}.portal .sess-book[disabled]{background:var(--surface-3);color:var(--muted)}.portal .sess-cancel{background:transparent;color:var(--color-coral);border:1px solid var(--border)}.portal .sess-booked{border-radius:10px;padding:.55rem 1rem;font-size:.9rem;font-weight:700;background:transparent;color:var(--color-accent);border:1px solid var(--color-accent)}.portal .book-ok{color:var(--color-accent);font-weight:600}.portal .book-err{color:var(--color-coral)}.portal .sess-closed{font-size:.8rem;color:var(--muted);padding:.55rem 0}.admin-classes .ac-head{display:flex;align-items:center;justify-content:space-between}.admin-classes .ac-list{list-style:none;padding:0;margin:1rem 0 0;display:flex;flex-direction:column;gap:.5rem}.admin-classes .ac-item{display:flex;align-items:center;gap:.75rem;background:var(--surface-1);border:1px solid var(--border);border-radius:12px;padding:.75rem .9rem}.admin-classes .ac-info{flex:1}.admin-classes .ac-meta{display:block;font-size:.8rem;color:var(--muted)}.admin-classes .ac-cap{font-size:.8rem;background:var(--surface-3);border:1px solid var(--border);border-radius:999px;padding:.2rem .6rem}.admin-classes .ac-end{background:transparent;color:var(--color-coral);border:1px solid var(--border);border-radius:8px;padding:.4rem .8rem}.admin-classes .class-form{display:flex;flex-wrap:wrap;gap:.5rem;margin:.75rem 0}.sw-source{font-size:.7rem;border-radius:999px;padding:2px 8px;border:1px solid var(--border);color:var(--muted);background:var(--surface-2)}.sw-source[data-source=booking]{color:var(--color-accent);background:#36c2751f}.sw-health{font-size:.7rem;border-radius:999px;padding:.1rem .5rem;border:1px solid rgba(245,166,35,.4);color:var(--color-amber);background:#f5a6231f}.sw-remove{margin-top:.75rem;padding:.75rem;background:var(--surface-2);border:1px solid var(--color-coral);border-radius:12px}.sw-remove textarea{width:100%;min-height:3rem;background:var(--color-bg);border:1px solid var(--border);border-radius:8px;color:var(--color-fg);padding:.5rem}.sw-remove-notify{display:flex;align-items:center;gap:.4rem;font-size:.8rem;color:var(--muted);margin:.5rem 0}.sw-remove-actions{display:flex;gap:.5rem;justify-content:flex-end}.sw-remove-actions .danger{background:var(--color-coral);color:#1a0603;border:none;border-radius:9px;padding:.5rem .9rem;font-weight:700}.toast-host{position:fixed;z-index:1000;left:50%;bottom:calc(env(safe-area-inset-bottom,0px) + 5rem);transform:translate(-50%);display:flex;flex-direction:column;gap:.5rem;width:min(92vw,22rem);pointer-events:none}@media(min-width:601px){.toast-host{left:auto;right:1.5rem;bottom:1.5rem;transform:none}}.toast{pointer-events:auto;display:flex;align-items:center;gap:.6rem;padding:.8rem 1rem;border-radius:var(--radius, 12px);background:var(--surface-3, #24262e);color:var(--color-fg, #f5f5f5);border:1px solid var(--border, #2c2f38);border-left:4px solid var(--color-accent, #36c275);box-shadow:0 8px 24px #0006;font-size:.92rem;cursor:pointer;animation:toast-in .18s ease-out}.toast-error{border-left-color:var(--color-coral, #ff6f61)}.toast-ico{flex:none;display:inline-flex;align-items:center;justify-content:center;width:1.2rem;height:1.2rem;border-radius:999px;font-size:.8rem;font-weight:700;color:#0a0a0a;background:var(--color-accent, #36c275)}.toast-error .toast-ico{background:var(--color-coral, #ff6f61)}.toast-text{flex:1;line-height:1.3}@keyframes toast-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@media(prefers-reduced-motion:reduce){.toast{animation:none}}
