:root{--red:#df0019;--ink:#15171c;--muted:#687084;--line:#e5e7ed;--bg:#f7f8fa}*{box-sizing:border-box}body{margin:0;color:var(--ink);background:var(--bg);font:15px -apple-system,BlinkMacSystemFont,'Segoe UI',Arial,sans-serif}button,input,select{font:inherit}button,a{touch-action:manipulation}button{cursor:pointer;border:0;color:inherit}a{color:inherit;text-decoration:none}button:disabled{cursor:wait;opacity:.6}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #e76377;outline-offset:3px}.loading{padding:80px 25px;text-align:center;color:var(--muted)}.demo{background:#fff2f3;border-bottom:1px solid #f7d8de;color:#a02032;font-size:11px;line-height:1.6;text-align:center;padding:8px 12px}.brand{display:flex;align-items:center;gap:9px;font-weight:900;font-size:18px;letter-spacing:-.7px}.logo{display:block;position:relative;width:37px;height:37px;overflow:hidden;flex:none;background:white}.logo img{position:absolute;width:72px;height:67px;max-width:none;left:-17px;top:-15px}.shell{max-width:1150px;margin:0 auto;min-height:100dvh;background:#fff}.topbar{height:76px;padding:0 30px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.topbar .right{display:flex;align-items:center;gap:13px}.role-label{font-size:11px;border-radius:20px;padding:8px 11px;background:#fff0f2;color:#b80620}.icon-btn{display:grid;place-items:center;width:40px;height:40px;border-radius:10px;background:#f5f6f8}.icon{width:23px;height:23px;flex:none;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.layout{display:grid;grid-template-columns:206px 1fr;min-height:calc(100dvh - 111px)}.nav{border-right:1px solid var(--line);padding:28px 16px;display:flex;flex-direction:column;gap:8px;background:white}.nav a{display:flex;align-items:center;gap:11px;padding:13px 12px;border-radius:9px;font-size:13px;color:#666e80;font-weight:600}.nav a.active{color:var(--red);background:#fff0f2}.content{padding:26px 30px 40px;min-width:0}.children{display:flex;gap:8px;margin-bottom:26px;padding:5px;background:#f2f3f6;border-radius:11px}.children button{flex:1;border:2px solid transparent;border-radius:8px;min-height:44px;padding:9px 10px;background:transparent;font-size:13px;color:#596273;font-weight:600;display:flex;align-items:center;justify-content:center;gap:8px}.children button.active{color:#15171c;background:#e8ebf0;border-color:#687084;font-weight:750;box-shadow:0 1px 3px #15171c14}.children button:focus-visible{outline:3px solid #263c66;outline-offset:-4px}.children svg{width:16px;height:16px}.heading{display:flex;justify-content:space-between;gap:10px;align-items:center;margin-bottom:20px}h1{font-size:27px;letter-spacing:-1px;line-height:1.15;margin:0}h2{font-size:18px;margin:0;letter-spacing:-.4px}h3{font-size:14px;margin:0}p{line-height:1.55}.muted{color:var(--muted)}.small{font-size:12px}.eyebrow{font-size:10px;letter-spacing:1.3px;text-transform:uppercase;font-weight:800;color:var(--muted)}.hero{position:relative;height:215px;border-radius:15px;overflow:hidden;background:#26262a;margin-bottom:17px}.hero img{width:100%;height:100%;object-fit:cover;object-position:center 57%}.hero:after{content:'';position:absolute;inset:0;background:linear-gradient(transparent 15%,#000b)}.hero p{position:absolute;z-index:1;bottom:20px;left:23px;margin:0;color:white;font-size:26px;line-height:1.12;font-weight:850;letter-spacing:-.7px}.columns{display:grid;grid-template-columns:1fr 1fr;gap:15px}.card{border:1px solid var(--line);border-radius:13px;background:#fff;padding:20px;margin-bottom:13px;min-width:0}.card.flat{background:#f8f9fb}.row{display:flex;gap:14px;align-items:center}.row .grow{flex:1;min-width:0}.card p{margin:5px 0 0;color:var(--muted);font-size:12px}.red{color:var(--red)}.metric{font-size:27px;font-weight:800;letter-spacing:-.7px}.metric small{font-size:15px;letter-spacing:0}.status{background:#f0faef;border-color:#dcedd8}.status .round{background:#079c45;color:white;width:40px;height:40px;border-radius:50%;display:grid;place-items:center;flex:none}.status .value{font-size:20px;font-weight:800;color:#07853a}.status.unpaid{background:#fff0f1;border-color:#f8d4da}.status.unpaid .round{background:#dc0925}.status.unpaid .value{color:#cb0a20}.medals{display:grid;grid-template-columns:repeat(3,1fr);gap:9px;margin-top:13px}.medal{display:flex;gap:9px;align-items:center}.medal>span{font-size:29px;color:#daa633}.medal:nth-child(2)>span{color:#9da4ae}.medal:nth-child(3)>span{color:#b86534}.medal b{display:block;font-size:23px}.medal small{font-size:10px;color:var(--muted)}.notice{padding:13px 14px;border-radius:10px;background:#f2f4f8;color:#626d80;font-size:12px;line-height:1.5;margin:16px 0}.notice strong{color:#414b5e}.linkrow{display:flex;align-items:center;gap:12px;min-height:60px;padding:15px;border-bottom:1px solid var(--line)}.linkrow:last-child{border:0}.linkrow>span{flex:1}.linkrow>.arrow{font-size:22px;color:#8991a0;flex:0}.list{border:1px solid var(--line);border-radius:13px;overflow:hidden}.back{display:inline-flex;align-items:center;gap:5px;margin-bottom:18px;font-size:12px;color:var(--muted)}.primary{background:var(--red);color:white;border-radius:9px;min-height:47px;font-size:14px;font-weight:700;padding:12px 18px}.secondary{background:#f2f3f6;color:#525c70;border-radius:9px;min-height:44px;padding:12px 16px}.primary.full,.secondary.full{width:100%}.placeholder{padding:35px 22px;border:1px dashed #d6dae3;background:#fafbfc;border-radius:15px;text-align:center}.placeholder .icon{height:38px;width:38px;color:#a4aab7;margin-bottom:17px}.placeholder h2{font-size:20px}.placeholder p{font-size:13px;max-width:390px;margin:12px auto;color:var(--muted)}.chip{font-size:10px;font-weight:700;display:inline-block;padding:6px 9px;border-radius:20px;background:#fff0f2;color:#b5253a}.footer{font-size:10px;color:#8a909c;line-height:1.6;margin-top:25px}.ranking{overflow-x:auto;border:1px solid var(--line);border-radius:12px}.ranking table{width:100%;border-collapse:collapse;font-size:13px;white-space:nowrap}.ranking th{background:#f3f4f7;color:#6b7486;font-weight:500;font-size:11px}.ranking th,.ranking td{text-align:left;padding:15px 11px;border-bottom:1px solid var(--line)}.ranking tr.selected{background:#fff0f2;color:#ce001b;font-weight:700}.ranking tr:last-child td{border:0}.points{display:flex;align-items:center;gap:17px}.points>b{font-size:41px;letter-spacing:-2px}.profile-item{display:flex;justify-content:space-between;gap:20px;padding:15px 0;font-size:13px;border-bottom:1px solid var(--line)}.profile-item:last-child{border:0}.profile-item span{color:var(--muted)}.staff-grid{display:grid;grid-template-columns:1fr 1fr;gap:15px}.staff-grid .metric{font-size:34px}.login-wrap{max-width:1040px;min-height:100dvh;margin:auto;display:grid;grid-template-columns:1.08fr 1fr;background:white}.login-art{position:relative;background:url('/assets/login-background.png') center center/cover;min-height:730px}.login-art .brand{position:absolute;top:55px;left:45px;font-size:25px}.login-art .brand .logo{width:52px;height:52px}.login-art .brand .logo img{width:101px;height:94px;left:-24px;top:-21px}.login-form{padding:75px 44px 35px;align-self:center}.login-form h1{font-size:35px}.login-form .subtitle{color:#6d7585;font-size:13px;margin:12px 0 30px}.field{display:block;font-size:12px;font-weight:600;margin:17px 0}.field input{display:block;width:100%;margin-top:8px;padding:14px 13px;border:1px solid #ccd2dd;border-radius:9px;background:white;color:var(--ink);font-size:15px}.login-form .primary{margin-top:8px}.login-form .explain{font-size:11px;color:#808797;line-height:1.6;margin-top:22px}.error{color:#b71128;font-size:12px;line-height:1.5;min-height:18px}.testaccounts{font-size:11px;line-height:1.8;color:#687084;background:#f4f5f8;border-radius:10px;padding:15px;margin-top:20px}.testaccounts summary{cursor:pointer;font-weight:600}.testaccounts code{font-family:monospace;overflow-wrap:anywhere}.empty{padding:25px;text-align:center;color:var(--muted);font-size:13px}.offline{max-width:480px;margin:90px auto;padding:25px}.offline h1{font-size:27px}.offline p{color:var(--muted);font-size:14px}#toast{position:fixed;z-index:20;bottom:95px;left:50%;transform:translateX(-50%);padding:13px 20px;border-radius:10px;background:#20232b;color:white;font-size:12px;max-width:90%;display:none;box-shadow:0 4px 30px #0002}
@media(min-width:1000px){.content{max-width:830px}.hero{height:250px}.login-wrap{margin-top:35px;margin-bottom:35px;border-radius:22px;overflow:hidden;min-height:760px;box-shadow:0 15px 65px #19203010}}
@media(max-width:680px){body{background:white}.shell{width:100%}.demo{font-size:10px;padding:6px 12px}.topbar{height:66px;padding:0 18px}.brand{font-size:17px}.layout{display:block;min-height:calc(100dvh - 97px)}.content{padding:14px 18px 100px}.nav{position:fixed;bottom:0;left:0;right:0;z-index:10;border:0;border-top:1px solid var(--line);padding:8px 5px calc(8px + env(safe-area-inset-bottom));flex-direction:row;gap:0;justify-content:space-around;background:#fffffff7;backdrop-filter:blur(15px)}.nav a{font-size:9px;flex:1;min-height:48px;justify-content:center;flex-direction:column;gap:5px;padding:4px 2px;border-radius:8px;background:none}.nav a.active{background:none}.nav a.active .icon{stroke-width:2.4}.children{margin-bottom:19px;gap:5px;padding:4px}.children button{font-size:12px;min-height:44px;padding:8px}.heading{margin-bottom:16px}h1{font-size:26px}.hero{height:183px;border-radius:12px;margin-bottom:13px}.hero p{font-size:23px;left:17px;bottom:17px}.columns{grid-template-columns:1fr;gap:0}.card{padding:15px;margin-bottom:10px;border-radius:11px}.metric{font-size:27px}.card p{font-size:11px}.row{gap:13px}.row>.icon{width:29px;height:29px}.medal{gap:8px}.medal b{font-size:24px}.medal>span{font-size:29px}.notice{margin:13px 0;font-size:11px}.footer{font-size:9px;margin-top:22px}.login-wrap{display:block;min-height:100dvh}.login-art{min-height:0;height:44dvh;max-height:390px;background-position:center 48%;background-size:cover}.login-art .brand{left:0;right:0;top:28px;justify-content:center;font-size:23px}.login-form{position:relative;margin-top:-21px;background:white;border-radius:22px 22px 0 0;padding:25px 25px 35px}.login-form h1{font-size:29px}.login-form .subtitle{margin:8px 0 20px;font-size:12px}.login-form .field{margin:14px 0}.login-form .explain{font-size:10px}.testaccounts{font-size:10px;padding:12px}.ranking th,.ranking td{padding:13px 9px;font-size:12px}.ranking th{font-size:10px}.role-label{font-size:9px;padding:7px 9px}.icon-btn{width:35px;height:35px}.staff-grid{gap:10px}.linkrow{min-height:57px;font-size:14px}.placeholder{padding:30px 18px}.points>b{font-size:36px}}
@media(prefers-reduced-motion:no-preference){button,a{transition:background .15s,color .15s} .content{animation:fade .15s ease}@keyframes fade{from{opacity:.6;transform:translateY(3px)}to{opacity:1;transform:translateY(0)}}}
/* Stage 2: real local group management and attendance */
.toolbar{display:flex;gap:10px;align-items:end;flex-wrap:wrap;margin:16px 0}.toolbar .field{flex:1;margin:0;min-width:120px}.toolbar select,.editor select,.toolbar input{display:block;width:100%;padding:11px;margin-top:6px;border:1px solid #ccd2dd;border-radius:8px;background:#fff;color:var(--ink)}.toolbar .primary,.toolbar .secondary{min-height:41px;font-size:12px}.editor{padding:20px;border:1px solid #efbac3;background:#fffbfc;border-radius:13px;margin-bottom:18px}.editor h2{margin-bottom:15px}.editor .field{margin:12px 0}.editor .buttons{display:flex;gap:9px;margin-top:18px}.checklist{max-height:220px;overflow:auto;border:1px solid var(--line);border-radius:9px;background:white;margin-top:12px}.checkline{display:flex;align-items:center;gap:10px;padding:12px;border-bottom:1px solid var(--line);font-size:12px;line-height:1.5}.checkline:last-child{border:0}.checkline input{width:17px;height:17px;accent-color:var(--red)}.checkline small{display:block;color:var(--muted);font-size:10px}.attendance-wrap{overflow:auto;max-height:460px;border:1px solid var(--line);border-radius:12px;margin-top:13px;overscroll-behavior:contain}.attendance-table{width:100%;border-collapse:separate;border-spacing:0;font-size:12px;background:white}.attendance-table th,.attendance-table td{min-width:46px;height:48px;text-align:center;border-right:1px solid var(--line);border-bottom:1px solid var(--line);padding:5px}.attendance-table th{background:#f5f6f8;position:sticky;top:0;z-index:1;font-size:10px}.attendance-table th:first-child,.attendance-table td:first-child{position:sticky;left:0;z-index:2;min-width:140px;max-width:170px;text-align:left;padding-left:12px;background:white;font-weight:600}.attendance-table th:first-child{z-index:3;background:#f5f6f8}.attendance-table .selected-date{background:#fff0f2}.mark{display:grid;place-items:center;width:30px;height:30px;margin:auto;background:#f6f7f9;border-radius:50%;font-size:15px;color:#8590a2}.mark.present{background:#df0019;color:white}.mark.absent{background:#ebedf2;color:#586174}.mark.unmarked{border:1px solid #b6bdc9;background:white}.mark.dirty{outline:2px solid #e79117;outline-offset:2px}.legend{display:flex;gap:15px;flex-wrap:wrap;margin:15px 0;font-size:11px;color:var(--muted)}.legend span{display:flex;gap:5px;align-items:center}.legend .mark{height:19px;width:19px;font-size:10px}.savebar{display:flex;gap:10px;align-items:end;margin-top:15px;flex-wrap:wrap}.savebar .field{flex:1;min-width:180px;margin:0}.savebar .field input{margin-top:6px}.savebar .primary{min-height:45px;font-size:12px}.group-title{display:flex;justify-content:space-between;align-items:center;gap:15px}.group-title .secondary{padding:8px 12px;min-height:36px;font-size:11px}.monthbar{display:flex;align-items:center;justify-content:space-between;gap:15px;margin:0 0 15px;font-size:11px;color:var(--muted)}.monthbar input{width:160px;padding:9px;border:1px solid var(--line);border-radius:8px;background:white;color:var(--ink);font-size:12px}.audit{margin:15px 0;padding:12px;background:#f4f6f8;border-radius:9px;font-size:11px;color:var(--muted)}.audit ol{padding-left:20px;line-height:1.7}.changed-note{color:#ad6a0d;font-size:11px;margin:12px 0}.staff-group-card{margin-bottom:15px}@media(max-width:680px){.editor{padding:15px}.toolbar{gap:8px}.attendance-table th:first-child,.attendance-table td:first-child{min-width:120px;max-width:140px}.savebar .primary{width:100%}.toolbar .field{min-width:105px}.group-title h1{font-size:24px}.legend{gap:10px;font-size:10px}.monthbar input{width:145px}.editor .buttons>*{flex:1;font-size:12px}.checklist{max-height:170px}}

.profile-item b{overflow-wrap:anywhere;text-align:right;min-width:0}.attendance-table td:first-child b{overflow-wrap:anywhere}
/* Stage 3: calendar-month manual payment ledger */
.payment-summary{display:flex;align-items:center;justify-content:space-between;gap:16px;background:#fafbfc}.payment-badge{display:inline-block;border-radius:20px;padding:7px 10px;font-size:11px;font-weight:700;background:#fff0f2;color:#ae1830;white-space:nowrap}.payment-badge.paid{background:#e9f6e9;color:#167442}.payment-history{margin-top:22px}.payment-history>h2{margin-bottom:13px}.payment-record{border:1px solid var(--line);border-radius:12px;padding:17px;margin:12px 0;background:white}.payment-record-heading{display:flex;align-items:start;justify-content:space-between;gap:13px}.payment-record p{font-size:12px;color:var(--muted);margin:6px 0}.payment-amount{display:flex;flex-direction:column;align-items:end;gap:9px}.payment-amount b{font-size:17px;white-space:nowrap}.muted-record{background:#fafbfc}.muted-record .payment-badge{background:#edf0f4;color:#626d80}.payment-record .buttons{display:flex;gap:8px;margin-top:15px}.payment-record .secondary{font-size:12px;min-height:38px;padding:9px 13px}.danger{color:#af1230}.payment-editor{margin-top:17px}.payment-editor fieldset{border:0;padding:0;margin:0;min-width:0}.payment-fields{display:grid;grid-template-columns:1fr 1fr;gap:0 14px}.payment-editor select,.payment-editor textarea{font:inherit;display:block;width:100%;padding:12px;margin-top:8px;border:1px solid #ccd2dd;border-radius:9px;background:white;color:var(--ink)}.payment-editor textarea{resize:vertical;font-size:14px;line-height:1.5}.confirm-payment{border:1px solid var(--line);border-radius:9px;background:white;margin:12px 0;align-items:start}.confirm-payment input{flex:none;margin:1px 0 0}.payment-editor fieldset:disabled{opacity:.7}.payment-error{padding:14px 17px;border:1px solid #f0bac5;border-radius:10px;background:#fff4f5;color:#9e1530;font-size:12px;margin:16px 0}.payment-error p{margin:0 0 8px}.payment-error p:last-child{margin-bottom:0}.payment-audit li{margin:13px 0;overflow-wrap:anywhere}.payment-filters select{min-width:180px}.payment-editor .buttons{flex-wrap:wrap}.payment-editor .buttons button{min-width:100px}
@media(max-width:680px){.payment-fields{grid-template-columns:1fr;gap:0}.payment-record{padding:14px}.payment-record-heading{gap:9px}.payment-record-heading h3{font-size:13px}.payment-amount b{font-size:15px}.payment-badge{font-size:10px;padding:6px 8px}.payment-filters .field:first-child{flex-basis:100%}.payment-filters select{min-width:0}.payment-summary h2{font-size:17px}.payment-record .buttons{flex-wrap:wrap}.payment-editor .buttons{flex-direction:column}.payment-error .primary{width:100%}}
/* Stage 4: medal ledger, audit and ranking filters. Existing navigation is unchanged. */
.medal-history{margin-top:22px}.medal-history>h2{margin-bottom:13px}.medal-record{border:1px solid var(--line);border-radius:12px;padding:17px;margin:12px 0;background:white}.medal-record-heading{display:flex;justify-content:space-between;align-items:start;gap:13px}.medal-record p{font-size:12px;color:var(--muted);margin:6px 0;overflow-wrap:anywhere}.medal-record .medal-title{color:var(--ink)}.medal-record-heading>div{min-width:0}.medal-status{display:inline-block;flex:none;border-radius:20px;padding:7px 10px;font-size:11px;font-weight:700;background:#edf0f4;color:#626d80}.medal-status.active{background:#fff0f2;color:#ae1830}.medal-record .buttons{display:flex;flex-wrap:wrap;gap:8px;margin-top:15px}.medal-record .secondary{font-size:12px;min-height:38px;padding:9px 13px}.medal-editor{margin-top:17px}.medal-editor fieldset{border:0;padding:0;margin:0;min-width:0}.medal-editor fieldset:disabled{opacity:.7}.medal-fields{display:grid;grid-template-columns:1fr 1fr;gap:0 14px}.medal-editor select,.medal-editor textarea{font:inherit;display:block;width:100%;padding:12px;margin-top:8px;border:1px solid #ccd2dd;border-radius:9px;background:white;color:var(--ink)}.medal-editor textarea{resize:vertical;font-size:14px;line-height:1.5}.medal-error{padding:14px 17px;border:1px solid #f0bac5;border-radius:10px;background:#fff4f5;color:#9e1530;font-size:12px;margin:16px 0}.medal-error p{margin:0 0 8px}.medal-error p:last-child{margin-bottom:0}.medal-audit li{margin:13px 0;overflow-wrap:anywhere}.medal-refresh{display:flex;justify-content:end;margin-bottom:14px}.medal-refresh .secondary{font-size:12px;min-height:38px;padding:9px 13px}.medal-filters select{min-width:180px}.medal-editor .buttons{flex-wrap:wrap}.medal-editor .buttons button{min-width:100px}.medal-editor textarea:focus-visible{outline:3px solid #e76377;outline-offset:3px}
@media(max-width:680px){.medal-fields{grid-template-columns:1fr;gap:0}.medal-record{padding:14px}.medal-record-heading{gap:9px}.medal-record-heading h3{font-size:13px}.medal-status{font-size:10px;padding:6px 8px}.medal-filters select{min-width:0}.medal-editor .buttons{flex-direction:column}.medal-error .primary{width:100%}.ranking-filters .field:first-child{flex-basis:100%}}
/* Approved Page 1: phone/password access on the existing BJJ artwork. */
.auth-page .login-art{background-position:center top}.auth-page .login-art .brand{left:0;right:0;justify-content:center;top:43px}.auth-art-heading{position:absolute;top:120px;left:20px;right:20px;text-align:center}.auth-art-heading h1{font-size:32px;letter-spacing:-1px}.auth-art-heading p{font-size:12px;color:#515969;margin:8px 0}.auth-page .login-form{padding-top:45px}.auth-heading.long-heading{font-size:29px;line-height:1.15;letter-spacing:-.7px}.auth-link{display:flex;align-items:center;justify-content:center;gap:6px;color:var(--red);font-size:13px;font-weight:600;min-height:44px;text-decoration:underline;text-underline-offset:3px;margin-top:8px}.auth-link .icon{width:17px;height:17px}.forgot-link{justify-content:flex-end}.auth-divider{position:relative;text-align:center;margin:19px 0 13px;color:var(--muted);font-size:11px}.auth-divider:before{content:'';position:absolute;left:0;right:0;top:50%;height:1px;background:var(--line)}.auth-divider span{position:relative;background:white;padding:0 12px}.auth-register{display:flex;justify-content:center;align-items:center;text-align:center}.auth-trust{font-size:11px;line-height:1.5;color:var(--muted);margin-top:22px}.password-help{font-size:11px;line-height:1.45;color:var(--muted);margin:-5px 0 10px}.auth-status{padding:20px 0;text-align:center}.auth-status p{font-size:14px;line-height:1.6;color:#5c6577}.auth-status-icon{display:grid;place-items:center;background:#fff0f2;color:var(--red);border-radius:50%;width:56px;height:56px;margin:0 auto 16px}.auth-status-icon .icon{width:29px;height:29px}.auth-page .field input{min-height:48px}.auth-page .primary{background:linear-gradient(110deg,#e6001e,#c90016)}.auth-page .login-form .eyebrow{display:block;margin-bottom:9px}.auth-page .testaccounts{font-size:11px}
@media(max-width:680px){.auth-page .login-art{height:390px;max-height:48dvh;background-size:100% auto;background-position:center top}.auth-page .login-art .brand{top:22px;font-size:21px}.auth-page .login-art .brand .logo{width:44px;height:44px}.auth-page .login-art .brand .logo img{width:87px;height:81px;left:-21px;top:-18px}.auth-art-heading{top:82px}.auth-art-heading h1{font-size:27px}.auth-art-heading p{font-size:11px;margin-top:5px}.auth-page .login-form{padding:25px 23px 35px;margin-top:-21px}.auth-page .auth-heading{font-size:26px}.auth-page .auth-heading.long-heading{font-size:26px}.auth-page .login-form .subtitle{font-size:12px}.auth-page .login-form .eyebrow{font-size:9px}.auth-page .auth-trust{font-size:10px;margin-top:18px}.auth-page .testaccounts{font-size:10px}}
@media(max-width:680px){.auth-page[data-auth-view="login"] .login-form>.eyebrow,.auth-page[data-auth-view="login"] .login-form>.auth-heading,.auth-page[data-auth-view="login"] .login-form>.subtitle{display:none}.auth-page[data-auth-view="login"] .login-form{padding-top:9px}}
.access-panel h2{font-size:18px;line-height:1.3}.access-panel>.secondary{margin-top:14px}.access-list{display:grid;gap:10px}.access-record{padding:14px;border:1px solid var(--line);border-radius:10px}.access-record h3{overflow-wrap:anywhere}.access-record .buttons{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}.access-record>.secondary{margin-top:10px}.access-record .secondary{font-size:12px;padding:9px 13px;min-height:37px}.access-subheading{margin:24px 0 13px}.access-editor{margin-top:20px}.access-editor fieldset{border:0;margin:0;padding:0}.access-editor textarea,.issued-token textarea{display:block;width:100%;font:inherit;font-size:13px;padding:12px;border:1px solid #ccd2dd;border-radius:9px;line-height:1.5;margin-top:8px;resize:vertical}.access-editor .buttons{flex-wrap:wrap}.issued-token{margin-top:18px;border:1px solid #e9bc8f;background:#fffaf2;padding:16px;border-radius:10px}.issued-token textarea{font-family:monospace;background:white;word-break:break-all}.issued-token p{font-size:12px}.access-panel .group-title{align-items:start}@media(max-width:680px){.access-panel .group-title{flex-wrap:wrap}.access-panel h2{font-size:17px}.access-editor .buttons>*{width:100%}.issued-token{padding:13px}}
/* Page 2: selected-child home and parent-only child creation. */
.children{overflow-x:auto;overscroll-behavior:contain}.children button{min-width:130px;flex:1 0 auto;max-width:260px;white-space:normal;text-align:center}.home-tools{display:flex;gap:15px;align-items:center;justify-content:space-between;margin:0 0 18px}.home-tools h1{font-size:23px;line-height:1.2;margin-top:6px;overflow-wrap:anywhere}.home-tools .secondary{font-size:12px;flex:none;padding:10px 13px}.home-columns .next-training{border-color:#ecc1c6}.next-training .training-time{color:var(--ink);font-weight:600;font-size:13px}.home-group{display:flex;flex-direction:column;gap:5px;padding:12px 0;border-bottom:1px solid var(--line);font-size:13px}.home-group:last-child{border-bottom:0;padding-bottom:0}.home-group span{font-size:12px;color:var(--muted)}.waiting-training h3{font-size:15px;line-height:1.4}.documents-metadata ul{list-style:none;margin:13px 0;padding:0}.documents-metadata li{display:flex;gap:10px;justify-content:space-between;align-items:start;font-size:12px;padding:9px 0;border-bottom:1px solid var(--line)}.documents-metadata li:last-child{border-bottom:0}.documents-metadata li b{color:#a51b31;font-size:10px;text-align:right}.home-refresh{display:flex;gap:14px;align-items:center;margin:12px 0}.home-refresh span{font-size:11px;line-height:1.45;color:var(--muted)}.home-refresh button{flex:none;font-size:12px}.empty-family{text-align:center;padding:35px 25px}.empty-family .round{display:block;margin-bottom:16px}.empty-family .icon{width:38px;height:38px}.empty-family h2{font-size:23px}.empty-family p{max-width:420px;margin:13px auto 22px;font-size:14px}.child-editor fieldset{border:0;padding:0;margin:0;min-width:0}.child-editor .buttons{flex-wrap:wrap}.child-editor input{min-height:48px}.child-editor fieldset:disabled{opacity:.7}
@media(max-width:680px){.home-tools{gap:10px;margin-bottom:14px}.home-tools h1{font-size:20px}.home-tools .secondary{font-size:11px;padding:9px 11px;max-width:145px}.children button{font-size:11px;min-width:125px;max-width:210px}.home-columns .card{padding:15px}.documents-metadata li{font-size:11px}.home-refresh{flex-direction:column;align-items:stretch;gap:9px}.home-refresh span{text-align:center}.child-editor .buttons{flex-direction:column}.child-editor .buttons>*{width:100%}.empty-family{padding:27px 18px}.empty-family h2{font-size:22px}.empty-family p{font-size:13px}}

/* Approved Page 1 landing: local BJJ artwork, emblem and a rounded white sheet. */
.auth-page{display:flex;flex-direction:column;max-width:520px;min-height:100dvh;background:#f5f4f1;margin:0 auto;border-radius:0;overflow:hidden;box-shadow:0 10px 45px #15171c12}
.auth-page .login-art{flex:none;width:100%;height:auto;min-height:0;max-height:none;aspect-ratio:941/1420;background-size:100% auto;background-position:center top}
.auth-brand{position:absolute;left:0;right:0;top:7.5%;display:flex;justify-content:center}
.auth-page .auth-brand .logo{width:82px;height:82px;background:transparent;mix-blend-mode:multiply}
.auth-page .auth-brand .logo img{width:160px;height:149px;left:-38px;top:-33px}
.auth-page .auth-art-heading{top:23%;left:14px;right:14px}
.auth-page .auth-art-heading h1{font-size:clamp(30px,7.5vw,42px);font-weight:850;color:#08090b;letter-spacing:-1.2px}
.auth-page .auth-art-heading p{font-size:clamp(12px,3.3vw,17px);color:#55565a;line-height:1.35;margin-top:10px}
.auth-page .login-form{align-self:stretch;position:relative;margin-top:-26px;border-radius:28px 28px 0 0;background:white;padding:27px 28px 30px;z-index:1}
.auth-page .login-form>.eyebrow{display:none}
.auth-page .auth-heading{font-size:28px;line-height:1.18;margin-bottom:9px}
.auth-page .auth-heading.long-heading{font-size:26px}
.auth-page .login-form>.subtitle{font-size:13px;margin:9px 0 20px}
.auth-page[data-auth-view="welcome"] .login-form>.auth-heading,.auth-page[data-auth-view="welcome"] .login-form>.subtitle{display:none}
.auth-landing-actions{display:grid;gap:12px}
.auth-page .primary{background:linear-gradient(105deg,#b30815,#a90812);border-radius:13px;min-height:54px;font-size:17px;font-weight:650}
.auth-page .auth-register.secondary{background:white;border:1.5px solid #ad0b16;color:#a50c17;border-radius:13px;min-height:54px;font-size:16px;font-weight:650}
.auth-page .login-form .primary{margin-top:0}
.auth-page .field{font-size:14px;margin:17px 0}
.auth-page .field input{border-color:#b7b8bd;border-radius:12px;min-height:54px;font-size:16px}
.auth-page .auth-back{color:#53565d;margin-top:12px}
.auth-page .auth-trust{font-size:10px;line-height:1.55;text-align:center;margin:19px 0 12px;color:#747780}
.auth-page .notice{font-size:10px;padding:10px 12px;margin:10px 0 0}
.auth-page:not([data-auth-view="welcome"]) .login-art{aspect-ratio:941/1160}
.auth-page:not([data-auth-view="welcome"]) .auth-art-heading{top:28%}
@media(max-width:680px){.auth-page .auth-brand .logo{width:69px;height:69px}.auth-page .auth-brand .logo img{width:135px;height:125px;left:-32px;top:-28px}.auth-page .login-form{padding:24px 24px calc(26px + env(safe-area-inset-bottom))}.auth-page[data-auth-view="login"] .login-form{padding-top:24px}.auth-page[data-auth-view="login"] .login-form>.auth-heading{display:block}.auth-page[data-auth-view="login"] .login-form>.subtitle{display:none}.auth-page .auth-heading,.auth-page .auth-heading.long-heading{font-size:25px}}
@media(min-width:681px){.auth-page{margin:24px auto;border-radius:24px;min-height:0}.auth-page .login-form{padding:30px 36px 32px}}

/* Home keeps only a confirmed metadata-completeness check beside the child name. */
.child-document-check{display:inline-flex;vertical-align:middle;align-items:center;justify-content:center;width:25px;height:25px;margin-left:8px;border-radius:50%;color:#168342;background:#edf8ee;flex:none}
.child-document-check .icon{width:18px;height:18px;stroke-width:2.5}

/* Weekly calendar follows the approved white/red day strip and training cards. */
.calendar-tools{display:flex;align-items:center;gap:12px;padding:8px;border:1px solid var(--line);border-radius:12px;margin-bottom:10px}.calendar-tools>div{flex:1;text-align:center;font-size:14px}.calendar-tools span{display:block;color:var(--muted);font-size:11px;margin-top:4px}.calendar-tools .secondary{min-width:42px;font-size:24px;line-height:1;padding:7px}.calendar-jump{display:flex;align-items:end;gap:8px;margin:10px 0 17px;flex-wrap:wrap}.calendar-jump .field{margin:0;flex:1;min-width:155px}.calendar-jump button{font-size:11px;padding:12px}.calendar-week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));padding:5px;gap:3px;background:#f4f5f7;border-radius:11px;margin:0 0 20px}.calendar-week button{padding:8px 3px;border-radius:8px;background:transparent;display:flex;flex-direction:column;align-items:center;gap:4px}.calendar-week button small{font-size:10px;color:#667084}.calendar-week button b{font-size:17px}.calendar-week button span{font-size:10px;color:var(--muted);height:12px}.calendar-week button.today{background:var(--red);color:white}.calendar-week button.today small,.calendar-week button.today span{color:white}.calendar-day{scroll-margin-top:18px;margin:0 0 20px}.calendar-day>h2{font-size:15px;margin:0 0 10px}.calendar-event{padding:17px}.calendar-event-top{display:flex;gap:10px;align-items:center;justify-content:space-between;margin-bottom:7px}.calendar-event-top>b{font-size:23px;letter-spacing:-.5px}.calendar-event-top small{font-size:10px;font-weight:500;color:var(--muted)}.calendar-event h3{font-size:14px}.calendar-status{font-size:10px;padding:5px 8px;border-radius:20px;background:#f3f4f7;color:#5a6272}.calendar-event.cancelled,.calendar-event.moved_from{background:#fafafb;border-style:dashed}.calendar-event.cancelled .calendar-status{color:#a6192b;background:#fff0f2}.calendar-event.cancelled .calendar-event-top>b,.calendar-event.moved_from .calendar-event-top>b{text-decoration:line-through}.calendar-event.moved_to{border-color:#efb9c1}.calendar-event.moved_to .calendar-status,.calendar-event.moved_from .calendar-status{color:#a21a2c;background:#fff0f2}.calendar-event-actions{margin-top:13px;display:flex;gap:8px;flex-wrap:wrap}.calendar-event-actions button{font-size:11px;padding:10px 12px;min-height:40px}.calendar-conflict{background:#fff2f3;color:#a21a2c}.calendar-recurring{margin-top:30px;padding-top:20px;border-top:1px solid var(--line)}.calendar-recurring .group-title{gap:10px}.calendar-recurring .group-title button{font-size:11px;flex:none}.calendar-recurring .card p{line-height:1.7}.schedule-editor fieldset{border:0;padding:0;margin:0;min-width:0}.schedule-editor select,.schedule-editor input{width:100%;max-width:100%}.schedule-editor .check input{width:auto}.schedule-editor .buttons{display:flex;gap:10px;flex-wrap:wrap}.schedule-editor>button{margin:5px 8px 5px 0}.schedule-editor fieldset:disabled{opacity:.65}
@media(max-width:680px){.calendar-tools>div{font-size:12px}.calendar-jump .field{flex-basis:100%}.calendar-jump>button{flex:1}.calendar-event{padding:14px}.calendar-event-top>b{font-size:22px}.calendar-event .row>.red{display:flex}.calendar-event .row>.red .icon{width:28px;height:28px}.calendar-recurring h2{font-size:16px}.schedule-editor .buttons>*{flex:1}.calendar-event-actions>*{flex:1}.calendar-week button b{font-size:16px}}

/* Published all-club News: approved red filters and white editorial cards. */
.news-filters{display:flex;gap:8px;margin:0 0 17px}.news-filters a{display:flex;align-items:center;justify-content:center;min-height:43px;padding:10px 17px;border-radius:9px;background:#f2f3f6;color:#596274;font-size:13px;font-weight:650}.news-filters a.active{background:var(--red);color:white}.news-list{display:grid;grid-template-columns:1fr 1fr;gap:15px}.news-card{border:1px solid var(--line);border-radius:13px;background:white;overflow:hidden;min-width:0}.news-card>a{display:block;height:100%}.news-cover{height:165px;background:#f5f5f5;overflow:hidden}.news-cover img{height:100%;width:100%;object-fit:cover;object-position:center 58%;display:block}.news-card-copy{padding:17px}.news-category{display:inline-block;border-radius:5px;padding:5px 8px;margin-bottom:9px;color:#626b7b;background:#f2f3f6;font-size:10px;font-weight:700}.news-category.competition{color:white;background:var(--red)}.news-card h2{font-size:19px;line-height:1.22;overflow-wrap:anywhere}.news-teaser{color:#626b7b;font-size:12px;line-height:1.55;margin:9px 0 12px;white-space:pre-line}.news-dates p{font-size:10px;color:#737b8b;margin:5px 0;line-height:1.5}.news-dates .news-event-date{display:flex;align-items:center;gap:7px;color:#414957}.news-event-date .icon{width:16px;height:16px;color:var(--red)}.news-read{display:flex;justify-content:space-between;align-items:center;margin-top:13px;font-size:12px;color:#b0051c;font-weight:650}.news-read>span{font-size:24px;line-height:1}.news-footer{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:18px}.news-footer>span{font-size:11px;color:var(--muted)}.news-footer button{font-size:12px}.news-detail .heading{margin:5px 0 10px}.news-detail h1{line-height:1.2;overflow-wrap:anywhere}.news-detail .news-dates{margin-bottom:18px}.news-detail-cover{height:280px;border-radius:13px;margin:18px 0}.news-body p{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.7;margin:18px 0;font-size:15px}.news-list+#moreNews{margin-top:15px}
@media(max-width:680px){.news-list{grid-template-columns:1fr;gap:12px}.news-filters{gap:7px;margin-bottom:13px}.news-filters a{font-size:12px;min-height:41px;padding:10px 14px}.news-card-copy{padding:14px}.news-card h2{font-size:18px}.news-cover{height:182px}.news-card:not(.news-featured).has-cover>a{display:grid;grid-template-columns:95px 1fr;align-items:stretch}.news-card:not(.news-featured).has-cover .news-cover{height:100%;min-height:145px}.news-card:not(.news-featured).has-cover .news-card-copy{padding:12px}.news-card:not(.news-featured) h2{font-size:15px}.news-card:not(.news-featured) .news-teaser{font-size:11px}.news-card:not(.news-featured) .news-category{font-size:9px}.news-detail-cover{height:205px}.news-body p{font-size:14px}.news-footer{align-items:center}.news-footer>span{font-size:10px}.news-detail .heading h1{font-size:25px}.news-card .news-dates p{font-size:10px}}

/* Page 5: approved compact club ranking, with a text marker for the selected child. */
.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.ranking-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:-9px 0 15px}.ranking-heading>p{margin:0;font-size:14px}.ranking-tabs{display:flex;gap:4px;background:#f1f2f5;border-radius:9px;padding:3px;min-width:260px}.ranking-tabs a{flex:1;display:flex;align-items:center;justify-content:center;min-height:42px;border-radius:7px;font-size:12px;font-weight:650;padding:9px 13px;white-space:nowrap}.ranking-tabs a.active{color:#fff;background:var(--red)}.ranking-month{max-width:270px;margin:5px 0 14px}.ranking-period{margin:0 0 14px}.ranking table{table-layout:fixed;white-space:normal;font-variant-numeric:tabular-nums}.ranking .rank-place{width:13%}.ranking .rank-name{width:32%}.ranking .rank-medal{width:12%}.ranking .rank-points{width:19%}.ranking th,.ranking td{text-align:center;overflow-wrap:anywhere}.ranking th:nth-child(2),.ranking td:nth-child(2){text-align:left}.ranking thead th{font-weight:500;background:#f3f4f7}.ranking thead th span[aria-hidden]{font-size:23px}.ranking tbody th{background:inherit;color:inherit;font-size:13px;font-weight:600}.ranking tbody tr:last-child th{border-bottom:0}.ranking tr.selected td:first-child{box-shadow:inset 3px 0 0 var(--red)}.rank-own{display:block;font-size:9px;line-height:1.4;margin-top:3px;font-weight:650}.ranking-selection{font-size:12px;padding:10px 12px;background:#fff0f2;border-left:3px solid var(--red);border-radius:6px;color:#a90018}.ranking-formula{text-align:center;border-radius:8px;background:#f2f3f6;padding:11px 7px;margin-top:10px;font-size:12px;font-weight:650}.ranking-rules{margin-top:10px}.ranking-rules p{margin:7px 0}.ranking-rules p:first-child{display:flex;align-items:center;gap:10px}.ranking-rules .icon{width:20px;height:20px}.ranking-refresh{display:flex;align-items:center;justify-content:space-between;gap:12px}.ranking-zero{font-size:12px;line-height:1.5;color:var(--muted);margin:12px 0}.ranking:focus-visible{outline:3px solid #e76377;outline-offset:3px}
@media(max-width:680px){.ranking-heading{flex-direction:column;align-items:stretch;gap:12px}.ranking-heading>p{font-size:13px}.ranking-tabs{width:100%;min-width:0}.ranking-tabs a{min-height:42px;font-size:12px}.ranking th,.ranking td{padding:12px 5px;font-size:12px;line-height:1.35}.ranking thead th{font-size:10px}.ranking tbody th{font-size:12px}.ranking thead th span[aria-hidden]{font-size:22px}.ranking .rank-place{width:13%}.ranking .rank-name{width:31%}.ranking .rank-medal{width:12%}.ranking .rank-points{width:20%}.ranking-formula{font-size:11px}.ranking-month{max-width:none}.ranking-month input{max-width:100%;min-width:0}.ranking-selection{font-size:11px}.rank-own{font-size:9px}}

/* Approved screen 10: own-child medal summary and factual award history. */
.achievement-counts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:0 0 12px}.achievement-count{display:flex;align-items:center;justify-content:center;gap:10px;border:1px solid var(--line);border-radius:10px;padding:13px 10px}.achievement-count>span{font-size:35px;line-height:1}.achievement-count b{display:block;font-size:29px;line-height:1.15}.achievement-count small{display:block;font-size:11px;color:var(--muted);margin-top:3px}.achievement-points,.achievement-latest{display:flex;align-items:center;gap:16px}.achievement-points>.red .icon{width:35px;height:35px}.achievement-points h2{font-size:29px;letter-spacing:-.8px}.achievement-points p{font-size:14px}.achievement-latest>span{display:grid;place-items:center;border-radius:8px;background:#f1f2f5;color:#969ca8;width:47px;height:47px;flex:none}.achievement-latest .icon{width:29px;height:29px}.achievement-latest p{margin:0 0 4px}.achievement-latest h3{font-size:16px;overflow-wrap:anywhere}.achievement-latest h3+p{margin:5px 0 0}.achievement-history{margin:24px 0 15px}.achievement-history h2{margin-bottom:13px}.achievement-record{display:flex;gap:13px;border:1px solid var(--line);border-radius:11px;padding:16px;margin:10px 0}.achievement-medal{font-size:32px;line-height:1.2;flex:none}.achievement-record-copy{min-width:0}.achievement-record h3{overflow-wrap:anywhere;line-height:1.4;font-size:15px}.achievement-record p{font-size:12px;color:var(--muted);margin:5px 0 9px}.achievement-record-status{display:flex;flex-wrap:wrap;gap:7px;align-items:center}.achievement-corrected{font-size:10px;border:1px solid #dce0e8;border-radius:15px;padding:5px 8px;color:#576174}.achievement-record.muted-record{background:#f7f8fa}.achievement-ranking-link{display:flex;justify-content:center;align-items:center;gap:10px;color:var(--red);border:1px solid var(--red);border-radius:8px;min-height:46px;padding:10px 12px;font-size:13px;font-weight:650}.achievements-parent .medal-refresh{margin-top:15px}
@media(max-width:680px){.achievement-counts{gap:5px}.achievement-count{gap:6px;padding:12px 5px}.achievement-count>span{font-size:29px}.achievement-count b{font-size:25px}.achievement-count small{font-size:9px}.achievement-points h2{font-size:27px}.achievement-points p{font-size:12px}.achievement-record{padding:13px;gap:10px}.achievement-record h3{font-size:13px}.achievement-record p{font-size:11px}.achievement-medal{font-size:29px}}

/* Approved screens 7 and 8: information-only tariffs and current-month subscription. */
.subscription-status h2{font-size:25px;color:#07853a}.subscription-status.unpaid h2{color:#cb0a20}.subscription-status .subscription-month{font-size:17px;color:var(--ink);margin-top:7px}.subscription-status .round{width:47px;height:47px;font-size:24px;font-weight:700}.subscription-receipt{margin:17px 0 0;border-top:1px solid #cce7d0;padding-top:8px}.subscription-receipt>div{display:flex;justify-content:space-between;gap:16px;font-size:12px;line-height:1.5;margin:8px 0}.subscription-receipt dt{color:var(--muted)}.subscription-receipt dd{margin:0;font-weight:650;text-align:right}.subscription-training h2{font-size:15px;line-height:1.35}.subscription-training h3{margin-top:6px}.subscription-training .training-time{font-weight:650;color:var(--ink)}.training-link:hover{border-color:#e39aab}.subscription-access{display:flex;flex-wrap:wrap;gap:14px;margin:16px 0}.subscription-access a{display:inline-flex;align-items:center;min-height:42px;padding:8px 12px;background:#f2f3f6;border-radius:8px;font-size:12px;color:#535d70}.subscription-history{margin:24px 0 16px}.subscription-history>h2{margin-bottom:14px}.subscription-record .payment-record-heading p{margin:6px 0}.subscription-corrected{display:inline-block;font-size:10px;color:#566174;border:1px solid #dce0e8;border-radius:14px;padding:5px 8px;margin-top:8px}.subscription-parent>.small{line-height:1.6;margin-top:17px}
@media(max-width:680px){.subscription-status h2{font-size:23px}.subscription-status .subscription-month{font-size:16px}.subscription-receipt>div{font-size:11px}.subscription-receipt dd{overflow-wrap:anywhere}.subscription-record .payment-record-heading{flex-wrap:wrap}.subscription-record .payment-amount{margin-left:auto;max-width:100%}.subscription-access a{flex:1;justify-content:center}.subscription-training .icon{width:28px;height:28px}}

/* Own-child Profile and Documents: approved red/white cards. */
.profile-account h2,.child-profile h2,.document-detail h2,.document-history h2{font-size:20px;margin:0 0 16px}.child-profile h3{margin-top:22px}.child-profile .primary{margin-top:18px}.document-completeness{display:flex;gap:12px;align-items:flex-start;padding:16px;border:1px solid var(--border,#e5e7eb);border-radius:14px;margin-bottom:16px;background:#fff}.document-completeness>.icon{flex-shrink:0;color:#777}.document-completeness.complete{background:#effaf2;border-color:#b9dfc3}.document-completeness.complete>.icon{color:#268a44}.document-completeness p{margin:6px 0 0}.document-list{display:grid;gap:12px}.document-row{display:flex;align-items:center;gap:14px;text-decoration:none;color:inherit;margin:0}.document-row small{display:block;color:#b20e20;margin-top:5px}.document-row .arrow{margin-left:auto}.document-icon{border-radius:10px;padding:12px;display:flex;color:#cb0920;background:#fff1f2}.document-icon.provided{background:#eaf6ee;color:#2a9449}.document-icon.provided+span small{color:#268a44}.document-detail .field{margin-bottom:12px}.document-detail input[type=file]{width:100%;padding:12px;background:#fafafa;font-size:14px}.selected-file{overflow-wrap:anywhere}.document-version{display:flex;align-items:center;justify-content:space-between;gap:16px;border-bottom:1px solid #e8e9ed;padding:16px 0}.document-version p{margin:6px 0;font-size:13px;color:#666}.document-version small{color:#666}.document-version button{flex-shrink:0}.document-progress{padding:16px;background:#f6f6f8;border-radius:12px;margin-top:16px}.document-progress progress{width:100%;accent-color:#d40920}.document-progress p{font-size:14px}.child-profile .profile-item b{max-width:65%;overflow-wrap:anywhere}#childProfileForm fieldset{border:0;margin:0;padding:0}#childProfileForm .field{margin-bottom:16px}@media(max-width:520px){.document-version{align-items:flex-start;flex-direction:column}.document-version button{width:100%}.document-row{padding:16px 12px}.document-icon{padding:9px}.profile-item{gap:12px}.profile-item b{overflow-wrap:anywhere}.document-completeness{padding:14px}}

/* Trainer: names-only roster and two scoped destinations from approved screen 11. */
.trainer-shell .content{min-width:0}.trainer-intro{font-size:13px;color:var(--muted);margin:-7px 0 17px}.trainer-toolbar{align-items:end}.trainer-toolbar .field{min-width:0;flex-basis:60%}.trainer-toolbar select{max-width:100%;text-overflow:ellipsis}.trainer-roster{border:1px solid var(--line);border-radius:12px;padding:17px;margin:16px 0 20px}.trainer-roster h2{font-size:17px}.trainer-roster .group-title{gap:14px;margin-bottom:10px}.trainer-students{padding:0;margin:0;list-style:none;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:20px}.trainer-students li{padding:11px 0;border-top:1px solid var(--line);font-size:13px;overflow-wrap:anywhere}.trainer-empty h2{font-size:19px;margin-bottom:10px}.trainer-empty p{line-height:1.6;margin:0 0 18px}.trainer-clock{padding-bottom:12px;line-height:1.5}.attendance-hint{line-height:1.5;margin-bottom:7px}.attendance-wrap:focus-visible{outline:3px solid #e76377;outline-offset:3px}.attendance-table tbody th.student-name{top:auto;min-width:140px;max-width:170px;width:140px;white-space:normal;overflow-wrap:anywhere;font-size:12px;line-height:1.4;box-shadow:2px 0 0 var(--line)}.attendance-table thead th:first-child{box-shadow:2px 0 0 var(--line)}.trainer-shell .attendance-wrap{width:100%;max-width:100%;-webkit-overflow-scrolling:touch}.trainer-shell .attendance-table{width:max-content;min-width:100%;table-layout:fixed}.trainer-shell .attendance-table td,.trainer-shell .attendance-table thead th:not(:first-child){min-width:46px;width:46px}.trainer-shell .attendance-table th:last-child,.trainer-shell .attendance-table td:last-child{min-width:70px;width:70px}.trainer-shell .attendance-table button.mark{width:38px;height:38px}.trainer-shell .savebar .field{min-width:0}.trainer-shell .savebar input{max-width:100%}
@media(max-width:680px){.trainer-shell .nav a{font-size:11px;max-width:180px}.trainer-shell .trainer-roster{padding:14px}.trainer-shell .trainer-students{grid-template-columns:1fr}.trainer-shell .trainer-toolbar .field{flex-basis:100%}.trainer-shell .trainer-toolbar>button{width:100%;min-height:44px}.trainer-clock{flex-basis:100%;padding-bottom:0}.trainer-shell .attendance-table tbody th.student-name,.trainer-shell .attendance-table thead th:first-child{min-width:118px;max-width:118px;width:118px;padding-left:9px}.trainer-shell .attendance-table td,.trainer-shell .attendance-table thead th:not(:first-child){min-width:44px;width:44px}.trainer-shell .attendance-wrap{max-height:55dvh}.trainer-shell .savebar{align-items:stretch}.trainer-shell .savebar>.field,.trainer-shell .savebar>.primary{width:100%}.trainer-shell .savebar .primary{min-height:46px}.trainer-shell .calendar-event h3{overflow-wrap:anywhere}}

/* Immutable attendance provenance is separate from the editable mark. */
.history-cell{display:block;margin:4px auto 0;padding:5px 2px;min-height:28px;background:none;color:#a30a20;text-decoration:underline;font-size:9px;line-height:1.3}.attendance-history,.attendance-provenance{margin:18px 0;padding:16px;border:1px solid var(--line);border-radius:12px;background:#fff}.attendance-history .group-title{align-items:flex-start;gap:12px}.attendance-history h3,.attendance-provenance h3{font-size:15px;line-height:1.4}.attendance-history .group-title>.secondary{font-size:11px;flex:none;min-height:38px}.attendance-history-list{list-style:none;margin:12px 0 0;padding:0;max-height:360px;overflow:auto;overscroll-behavior:contain}.attendance-history-event{border-top:1px solid var(--line);padding:13px 0;line-height:1.5;overflow-wrap:anywhere}.attendance-history-event>b,.attendance-history-event>time{display:block;font-size:12px}.attendance-history-event>time{font-size:11px;color:var(--muted);margin-top:4px}.attendance-history-event>p{margin:7px 0}.attendance-provenance>ul{list-style:none;padding:0;margin:10px 0 0}.attendance-provenance li{padding:12px 0;border-top:1px solid var(--line);display:flex;flex-direction:column;gap:5px;font-size:12px;overflow-wrap:anywhere}.attendance-provenance time{font-size:11px;color:var(--muted)}.attendance-provenance .history-cell{font-size:11px;align-self:flex-start;margin:0;padding-left:0}.parent-attendance-history{margin-top:14px;padding-top:12px;border-top:1px solid var(--line)}.parent-attendance-history>.secondary{font-size:12px;min-height:40px}.parent-attendance-history .attendance-history{padding:12px;margin-bottom:0}.attendance-history .field input{max-width:100%}@media(max-width:680px){.trainer-shell .attendance-table td{height:74px}.attendance-history{padding:13px}.attendance-history-list{max-height:45dvh}.attendance-history .group-title{flex-wrap:wrap}.parent-attendance-history .attendance-history{padding:10px}.attendance-history-event>b{font-size:11px}.attendance-provenance{padding:13px}.history-cell{min-height:30px}}

/* Native trainer taps stay available while their serialized saves are healthy. */
.trainer-tap-hint{line-height:1.6;max-width:650px}.trainer-tap-status{font-size:12px;color:#815015;line-height:1.5;margin:12px 0}.trainer-shell button.mark{touch-action:manipulation}.trainer-shell button.mark:focus-visible{outline:3px solid #15243b;outline-offset:3px}.trainer-shell button.mark.dirty:focus-visible{box-shadow:0 0 0 2px #e79117}

.attendance-correction-overlay{position:fixed;inset:0;z-index:40;display:grid;place-items:center;background:#15243b80;padding:20px;overflow:auto}.attendance-correction-dialog{background:#fff;color:var(--ink);width:min(100%,460px);max-height:calc(100dvh - 40px);overflow:auto;border-radius:16px;padding:24px;box-shadow:0 14px 60px #15243b33}.attendance-correction-dialog h2{font-size:22px;line-height:1.3}.attendance-correction-dialog p{margin:16px 0;line-height:1.6;overflow-wrap:anywhere}.attendance-correction-dialog .buttons{justify-content:flex-end;gap:10px;flex-wrap:wrap}.attendance-correction-dialog button:focus-visible{outline:3px solid #15243b;outline-offset:3px}

/* Administrator student catalog and one private card, separate from parent screens. */
.admin-shell .content{min-width:0}.admin-students-root{min-width:0}.admin-students-intro{font-size:14px;line-height:1.6;color:var(--muted);margin:-5px 0 20px}.admin-students-search{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(0,1fr) auto;align-items:end;gap:12px;margin:20px 0}.admin-students-search .field{min-width:0;margin:0}.admin-students-search input,.admin-students-search select{display:block;width:100%;min-width:0;min-height:48px;margin-top:8px;padding:12px;border:1px solid #cdd1da;border-radius:9px;background:#fff;font:inherit;font-size:14px;color:var(--ink)}.admin-students-search button,.admin-search-reset{min-height:48px;display:flex;justify-content:center;align-items:center}.admin-search-reset{grid-column:1/-1;justify-self:start;font-size:12px;padding:9px 14px}.admin-students-count{margin:17px 0 12px}.admin-students-list{list-style:none;padding:0;margin:0;border:1px solid var(--line);border-radius:13px;overflow:hidden;background:#fff}.admin-students-list li+li{border-top:1px solid var(--line)}.admin-student-row{display:flex;align-items:center;gap:14px;min-width:0;min-height:82px;padding:16px 18px}.admin-student-row:hover{background:#fff5f6}.admin-student-avatar{display:grid;place-items:center;flex:none;width:44px;height:44px;border-radius:11px;background:#f5f5f7;color:var(--red)}.admin-student-avatar .icon{width:25px;height:25px}.admin-student-copy{flex:1;min-width:0}.admin-student-copy strong{display:block;font-size:15px;line-height:1.45;overflow-wrap:anywhere}.admin-student-copy small{display:block;font-size:12px;color:var(--muted);line-height:1.5;overflow-wrap:anywhere;margin-top:5px}.admin-student-row .arrow{color:#89909f;font-size:25px;flex:none}.admin-students-pagination{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:22px 0;font-size:12px;flex-wrap:wrap}.admin-students-pagination .secondary{display:flex;align-items:center;justify-content:center;min-height:44px}.admin-students-pagination>span{text-align:center;flex:1}.admin-student-back{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:18px}.admin-student-back a{min-height:44px;display:inline-flex;align-items:center;line-height:1.4}.admin-student-back .back{margin:0}.admin-student-back .small{flex:none}.admin-student-heading{display:flex;align-items:flex-start;gap:15px;margin:6px 0 24px}.admin-student-heading>div{min-width:0}.admin-student-heading h1{font-size:29px;line-height:1.25;overflow-wrap:anywhere;margin:6px 0 0}.admin-student-heading .eyebrow{font-size:10px;color:var(--muted);letter-spacing:1.2px}.admin-student-heading .admin-student-avatar{width:54px;height:54px}.admin-student-sections{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;margin:0 0 22px}.admin-student-sections a{display:flex;align-items:center;justify-content:center;gap:9px;min-height:52px;padding:11px 9px;border:1px solid var(--line);border-radius:10px;font-size:12px;font-weight:650;background:#f5f6f8;line-height:1.4}.admin-student-sections a.active{color:#fff;background:var(--red);border-color:var(--red)}.admin-student-sections .icon{width:20px;height:20px;flex:none}.admin-students-root .card{padding:21px}.admin-students-root h2{font-size:18px;line-height:1.4}.admin-student-profile dl{margin:10px 0 17px}.admin-student-profile dl>div{display:flex;justify-content:space-between;align-items:start;gap:20px;border-bottom:1px solid var(--line);padding:15px 0;font-size:13px;line-height:1.5}.admin-student-profile dt{color:var(--muted);flex:none}.admin-student-profile dd{text-align:right;margin:0;font-weight:650;overflow-wrap:anywhere;min-width:0}.admin-students-root button,.admin-students-root .secondary,.admin-students-root summary{min-height:44px}.admin-parent-record{padding:17px 0;border-bottom:1px solid var(--line)}.admin-parent-record:last-child{border-bottom:0;padding-bottom:0}.admin-parent-record h3{font-size:15px;line-height:1.5;margin:5px 0;overflow-wrap:anywhere}.admin-parent-record p{margin:7px 0 12px;font-size:13px;overflow-wrap:anywhere}.admin-student-weight{margin-top:20px}.admin-student-weight fieldset{padding:0;margin:0;border:0;min-width:0}.admin-student-weight .field{margin:15px 0}.admin-student-weight input,.admin-student-weight textarea{display:block;width:100%;min-height:48px;margin-top:8px;border:1px solid #ccd2dd;border-radius:9px;padding:12px;font:inherit;color:var(--ink);background:#fff}.admin-student-weight textarea{resize:vertical;line-height:1.5}.admin-student-weight .buttons{display:flex;flex-wrap:wrap;gap:10px;margin-top:17px}.admin-student-weight fieldset:disabled{opacity:.7}.admin-student-metrics{display:grid;grid-template-columns:1fr 1fr;gap:20px}.admin-student-metrics>div{display:flex;gap:12px;align-items:center}.admin-student-metrics b{font-size:32px;letter-spacing:-1px}.admin-student-metrics span{font-size:12px;color:var(--muted)}.admin-student-sessions{list-style:none;padding:0;margin:18px 0}.admin-student-sessions li{display:flex;gap:15px;justify-content:space-between;align-items:center;padding:15px 0;border-bottom:1px solid var(--line)}.admin-student-sessions b{font-size:13px;line-height:1.5}.admin-student-sessions small{display:block;margin-top:5px;font-size:11px;line-height:1.5;color:var(--muted);overflow-wrap:anywhere}.admin-student-document summary{display:flex;gap:14px;align-items:center;cursor:pointer}.admin-student-document summary>span:last-child{min-width:0}.admin-student-document summary b{font-size:15px;line-height:1.5;overflow-wrap:anywhere}.admin-student-document summary small{display:block;margin-top:5px;font-size:12px;color:var(--muted)}.admin-student-documents .document-completeness h2{font-size:17px}.admin-student-link{display:inline-flex;align-items:center;min-height:44px;color:var(--red);text-decoration:underline;text-underline-offset:3px;overflow-wrap:anywhere;max-width:100%;line-height:1.5}.admin-selected-student{margin:0 0 12px}.admin-return{display:inline-flex;align-items:center;min-height:44px}.admin-students-root a:focus-visible,.admin-students-root button:focus-visible,.admin-students-root summary:focus-visible,.admin-student-link:focus-visible{outline:3px solid #18202e;outline-offset:3px}.admin-student-document[open] summary{padding-bottom:15px;border-bottom:1px solid var(--line)}
@media(max-width:760px){.admin-student-sections{grid-template-columns:repeat(2,minmax(0,1fr))}.admin-student-sections .student-overview-tab{grid-column:1/-1}.admin-student-sections a{justify-content:flex-start;min-height:52px;font-size:13px;padding:12px 15px}.admin-students-search{grid-template-columns:minmax(0,1fr) auto}.admin-students-search .field:first-child{grid-column:1/-1}.admin-students-search .field:nth-child(2){grid-column:1}.admin-students-search button{grid-column:2}.admin-student-heading h1{font-size:25px}}
@media(max-width:420px){.admin-students-root .card{padding:16px}.admin-student-heading{gap:11px}.admin-student-heading h1{font-size:23px}.admin-student-heading .admin-student-avatar{width:43px;height:43px}.admin-student-row{padding:15px 12px;gap:10px}.admin-student-copy strong{font-size:14px}.admin-student-copy small{font-size:11px}.admin-student-back{gap:9px}.admin-student-back .small{font-size:10px}.admin-student-profile dl>div{gap:12px;font-size:12px}.admin-student-profile dd{max-width:63%}.admin-student-weight .buttons{flex-direction:column}.admin-student-weight .buttons>*{width:100%}.admin-student-metrics{gap:10px}.admin-student-metrics>div{flex-direction:column;align-items:flex-start;gap:4px}.admin-student-sections{gap:7px}.admin-student-sections a{font-size:12px;padding:11px 12px}.admin-student-sessions li{gap:10px}.admin-student-document summary{gap:10px}}

/* Parent activation and child groups are bounded, inline student-workspace actions. */
.admin-activation{margin:0 0 26px;border-color:#e5c7cd}.admin-activation-heading{display:flex;justify-content:space-between;align-items:flex-start;gap:14px}.admin-activation-heading h2{margin:0}.admin-activation-heading p{margin:8px 0 0;line-height:1.6}.admin-activation-heading>.secondary{flex:none}.admin-activation-list{list-style:none;padding:0;margin:18px 0 0}.admin-activation-list>li{display:flex;align-items:center;justify-content:space-between;gap:18px;border-top:1px solid var(--line);padding:18px 0}.admin-activation-list>li:last-child{padding-bottom:0}.admin-activation-person{min-width:0}.admin-activation-person h3{font-size:15px;line-height:1.5;overflow-wrap:anywhere}.admin-activation-person p{font-size:13px;margin:6px 0}.admin-activation-person time{display:block;color:var(--muted);font-size:11px;line-height:1.5}.admin-activation .buttons,.admin-group-assignment .buttons{display:flex;flex-wrap:wrap;gap:10px}.admin-activation-list .buttons{flex:none}.admin-activation .buttons>button,.admin-group-assignment .buttons>button,.admin-activation-heading>button{min-height:44px}.admin-activation-empty{font-size:14px;margin:20px 0 0;color:var(--muted);line-height:1.6}.admin-activation-review{margin-top:20px;padding-top:18px;border-top:1px solid var(--line)}.admin-activation-review h3{font-size:16px;line-height:1.5;overflow-wrap:anywhere}.admin-activation-review .small{line-height:1.6}.admin-activation-review fieldset,.admin-group-assignment fieldset{min-width:0;padding:0;margin:16px 0;border:0}.admin-activation-review textarea{display:block;width:100%;min-height:80px;margin-top:8px;padding:12px;border:1px solid #cdd1da;border-radius:9px;resize:vertical;background:#fff;color:var(--ink);font:inherit;font-size:14px;line-height:1.5}.admin-group-assignment{border-top:1px solid var(--line);margin-top:20px;padding-top:14px}.admin-group-assignment>.small{line-height:1.6}.admin-group-options{display:grid;gap:10px;margin:16px 0}.admin-group-option{display:flex;align-items:flex-start;gap:14px;min-height:76px;padding:15px;border:1px solid var(--line);border-radius:10px;cursor:pointer;background:#fafafb}.admin-group-option:has(input:checked){border-color:#d70824;background:#fff5f6}.admin-group-option input{flex:none;width:22px;height:22px;margin:1px 0 0;accent-color:var(--red)}.admin-group-option>span{min-width:0}.admin-group-option b{display:block;font-size:14px;line-height:1.5;overflow-wrap:anywhere}.admin-group-option small{display:block;font-size:12px;line-height:1.6;color:var(--muted);margin-top:4px;overflow-wrap:anywhere}.admin-group-option input:focus-visible,.admin-activation-review textarea:focus-visible{outline:3px solid #18202e;outline-offset:3px}.admin-group-assignment fieldset:disabled,.admin-activation-review fieldset:disabled{opacity:.7}.admin-student-groups>#editAdminStudentGroups{margin-top:16px}.admin-group-assignment .sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.admin-activation .payment-error,.admin-group-assignment .payment-error{overflow-wrap:anywhere}
@media(max-width:680px){.admin-activation-heading{gap:10px}.admin-activation-heading>.secondary{padding:10px;font-size:12px}.admin-activation-list>li{align-items:stretch;flex-direction:column;gap:13px}.admin-activation-list .buttons>button{flex:1}.admin-activation-review .buttons>button,.admin-group-assignment .buttons>button{flex:1;min-width:140px}.admin-group-option{padding:13px;gap:12px}}

/* Complete administrator workflow, preserving the approved parent and trainer shells. */
.admin-student-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:20px 0 26px}.admin-student-actions>a{display:flex;align-items:center;gap:12px;min-height:76px;padding:18px;text-align:left;text-decoration:none;border-radius:14px;line-height:1.35}.admin-student-actions>a .icon{flex:none;width:26px;height:26px}.admin-operation-link{display:flex;align-items:center;gap:10px;min-height:48px;margin-bottom:16px;text-decoration:none}.admin-operation-return{min-height:44px;overflow-wrap:anywhere}.admin-tariff-panel{border-top:4px solid var(--red);margin-top:18px}.admin-tariff-panel fieldset,.admin-news-editor fieldset,.admin-group-editor fieldset{border:0;margin:0;padding:0;min-width:0}.admin-tariff-panel select,.admin-news-editor select,.admin-news-editor textarea,.admin-group-editor select{display:block;width:100%;min-height:46px;font:inherit;padding:12px;border:1px solid #ccd2dd;border-radius:9px;margin-top:8px;background:white;color:var(--ink)}.admin-news-editor textarea{resize:vertical;line-height:1.6}.admin-news-editor fieldset:disabled,.admin-tariff-panel fieldset:disabled,.admin-group-editor fieldset:disabled{opacity:.7}.admin-news-list{display:grid;gap:14px}.admin-news-card h2{margin:15px 0 8px;overflow-wrap:anywhere}.admin-news-card p,.admin-news-preview{overflow-wrap:anywhere}.admin-news-card .buttons,.admin-news-editor .buttons,.admin-group-actions{display:flex;gap:10px;flex-wrap:wrap}.admin-news-card .buttons>a{display:flex;align-items:center;text-decoration:none}.admin-news-fields{display:grid;grid-template-columns:1fr 1fr;gap:0 16px}.admin-news-entry{display:inline-flex;align-items:center;min-height:46px;margin-bottom:20px;text-decoration:none}.admin-news-preview{border:1px solid var(--line);border-radius:12px;padding:18px;margin-bottom:20px}.admin-news-preview h3{font-size:23px;margin-top:14px}.admin-group-summary h2{font-size:25px;margin:9px 0}.admin-group-times{display:flex;gap:8px;flex-wrap:wrap;margin:17px 0 22px;color:var(--muted);font-size:13px}.admin-group-times span{padding:8px 12px;border-radius:8px;background:#f4f5f7}.admin-group-actions>a{display:flex;align-items:center;text-decoration:none}.admin-shell .group-title .secondary,.admin-shell .payment-record .secondary,.admin-shell .medal-record .secondary,.admin-shell .primary,.admin-shell .secondary{min-height:44px}.admin-shell .field input,.admin-shell .field select{min-height:46px}.admin-shell .buttons{gap:10px}.admin-shell .calendar-recurring h3{font-size:17px}.admin-shell #refreshAdminNews{margin-top:18px}.admin-shell .footer{max-width:600px}
@media(max-width:680px){.admin-student-actions{gap:9px}.admin-student-actions>a{padding:15px 12px;min-height:84px;flex-direction:column;align-items:flex-start;gap:10px;font-size:13px}.admin-news-fields{grid-template-columns:1fr}.admin-news-card .buttons,.admin-news-editor .buttons,.admin-group-actions{flex-direction:column}.admin-news-card .buttons>*{width:100%}.admin-news-editor .buttons>*{width:100%}.admin-group-actions>*{justify-content:center;text-align:center}.admin-shell .group-title{flex-wrap:wrap}.admin-news-preview{padding:15px}.admin-tariff-panel{padding:17px}.admin-shell .payment-record-heading{flex-wrap:wrap}.admin-shell .payment-amount{align-items:flex-start}}

/* Tariff poster: presentation only; every rule is scoped to this screen. */
.tariffs-view{
  container-type:inline-size;
  min-width:0;
  padding:clamp(12px,3vw,28px);
  color:#f7f7f8;
  background:linear-gradient(132deg,transparent 76%,#80071120 76%,#80071120 81%,transparent 81%),linear-gradient(115deg,#08090b,#191a1d 57%,#0b0c0e);
  border:1px solid #24262a;
  border-radius:8px;
}
.tariffs-view .tariff-poster{min-width:0}
.tariffs-view .tariff-chess{margin-top:24px;min-width:0}
.tariffs-view .tariff-chess>h2{margin:0 0 12px;color:#fff;font-size:20px;line-height:1.4;letter-spacing:.04em;text-transform:uppercase;overflow-wrap:anywhere}
.tariffs-view .tariff-heading{position:relative;padding:4px 0 24px;margin-bottom:20px}
.tariffs-view .tariff-heading::after{content:'';position:absolute;bottom:0;left:0;width:72px;height:3px;background:#ce1421}
.tariffs-view .tariff-kicker{margin:0 0 18px;color:#f3f3f4;font-size:10px;font-weight:800;letter-spacing:2.1px;line-height:1.5}
.tariffs-view .tariff-kicker span{color:#ed2635;letter-spacing:1px;margin-left:4px}
.tariffs-view .tariff-heading h2{margin:0;color:#fff;font-size:54px;font-size:clamp(46px,16cqi,84px);font-weight:900;letter-spacing:-1.5px;line-height:.95}
.tariffs-view .tariff-subtitle{margin:12px 0 0;color:#bfc1c6;font-size:10px;font-size:clamp(10px,2.3cqi,13px);line-height:1.6;letter-spacing:2px;text-transform:uppercase;overflow-wrap:anywhere}
.tariffs-view .tariff-cards{display:grid;gap:10px;min-width:0;margin:0}
.tariffs-view .tariff-card{position:relative;display:grid;grid-template-columns:34px minmax(0,1fr) minmax(112px,32%);grid-template-columns:clamp(34px,9cqi,68px) minmax(0,1fr) minmax(112px,32%);align-items:stretch;gap:0;min-width:0;min-height:74px;margin:0;padding:0;border:1px solid #54565b;border-radius:3px;background:linear-gradient(110deg,#0b0c0e,#202124 66%,#111214);color:#fff}
.tariffs-view .tariff-icon{position:relative;display:grid;place-items:center;align-self:stretch;min-width:0;width:auto;height:auto;border-radius:0;background:none;color:#f5f5f6}
.tariffs-view .tariff-icon::before{content:'';position:absolute;inset:0 -10px 0 0;background:#08090bc4;clip-path:polygon(0 0,100% 0,calc(100% - 13px) 100%,0 100%)}
.tariffs-view .tariff-people{position:relative;width:100%;max-width:58px;height:42px;padding:0 3px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.tariffs-view .tariff-details{display:flex;flex-direction:column;justify-content:center;min-width:0;padding:14px 6px 14px 8px}
.tariffs-view .tariff-details h3{margin:0;color:#fff;font-size:12px;font-size:clamp(12px,2.8cqi,18px);font-weight:700;line-height:1.4;letter-spacing:.045em;text-transform:uppercase;overflow-wrap:anywhere}
.tariffs-view .tariff-details p{margin:5px 0 0;color:#bfc1c6;font-size:10px;font-size:clamp(10px,2.3cqi,13px);line-height:1.45;letter-spacing:.01em;overflow-wrap:anywhere}
.tariffs-view .tariff-price{position:relative;isolation:isolate;display:flex;align-items:center;justify-content:flex-end;min-width:0;margin:0;padding:12px 9px 12px 18px;color:#fff;font-size:20px;font-size:clamp(20px,6cqi,36px);font-weight:850;line-height:1.15;letter-spacing:-.6px;white-space:nowrap;font-variant-numeric:tabular-nums}
.tariffs-view .tariff-price::before{content:'';position:absolute;z-index:-1;inset:-1px -1px -1px 0;background:linear-gradient(135deg,#d51a26,#a00813 68%,#75030b);clip-path:polygon(20px 0,100% 0,100% calc(100% - 11px),calc(100% - 11px) 100%,0 100%)}
.tariffs-view .tariff-conditions{margin:24px 0 0;padding:18px 16px;border:1px solid #37393e;border-radius:4px;background:#ffffff05;color:#c4c6cb;min-width:0}
.tariffs-view .tariff-conditions h2{margin:0;color:#f4f4f5;font-size:16px;line-height:1.4;letter-spacing:-.2px;overflow-wrap:anywhere}
.tariffs-view .tariff-conditions ul{margin:12px 0 0;padding-left:17px;font-size:12px;line-height:1.65;overflow-wrap:anywhere}
.tariffs-view .tariff-conditions li+li{margin-top:9px}
.tariffs-view .tariff-conditions li::marker{color:#e23743}
.tariffs-view .tariff-notice{display:flex;align-items:flex-start;gap:11px;margin:16px 0 0;padding:0;color:#bec1c7;font-size:12px;line-height:1.5;background:none;border-radius:0;min-width:0}
.tariffs-view .tariff-notice>.icon{width:21px;height:21px;color:#e23743;margin-top:2px}
.tariffs-view .tariff-notice>div{min-width:0;overflow-wrap:anywhere}
.tariffs-view .tariff-notice strong{color:#f3f3f5;font-size:13px}
.tariffs-view .tariff-notice p{margin:3px 0 0;color:#bec1c7;font-size:12px;line-height:1.5}
@media(max-width:359px){
  .tariffs-view .tariff-conditions{padding:16px 12px}
  .tariffs-view .tariff-details{padding-left:6px}
  .tariffs-view .tariff-details h3{letter-spacing:.02em}
}

/* The primary navigation stays at the viewport bottom on every device and role. */
:root{--bottom-nav-height:72px}
html{scroll-padding-bottom:calc(var(--bottom-nav-height) + env(safe-area-inset-bottom,0px) + 24px)}
.shell .layout{display:block}
.shell .content{max-width:940px;margin:0 auto;padding-bottom:calc(var(--bottom-nav-height) + env(safe-area-inset-bottom,0px) + 32px)}
.shell .nav{position:fixed;inset:auto 0 0;top:auto;bottom:0;left:0;right:0;z-index:30;display:flex;flex-direction:row;justify-content:center;gap:0;min-height:calc(var(--bottom-nav-height) + env(safe-area-inset-bottom,0px));margin:0;padding:8px 8px calc(8px + env(safe-area-inset-bottom,0px));border:0;border-top:1px solid var(--line);background:#fffffff7;backdrop-filter:blur(15px);box-shadow:0 -3px 18px #15243b08}
.shell .nav a{flex:1;max-width:160px;min-width:0;min-height:56px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;padding:5px 3px;border-radius:10px;font-size:11px;text-align:center;line-height:1.25}
.shell .nav a.active{background:#fff0f2}
.shell .nav a.active .icon{stroke-width:2.4}
#toast{bottom:calc(var(--bottom-nav-height) + env(safe-area-inset-bottom,0px) + 16px);z-index:70}
.status .value,.status.unpaid .value{font-weight:800}
.status h2,.status.unpaid h2{font-weight:700}
.status.unpaid .value,.status.unpaid h2,.payment-badge:not(.paid){color:#cb0a20}
.medal-child-search{margin-bottom:18px}.medal-child-search .field{margin-bottom:9px}.medal-search-results{list-style:none;margin:0;padding:0;border:1px solid var(--line);border-radius:10px;max-height:310px;overflow:auto}.medal-search-results li+li{border-top:1px solid var(--line)}.medal-search-results button{display:block;width:100%;text-align:left;padding:14px;background:#fff;min-height:48px}.medal-search-results button:hover{background:#fff4f5}.medal-selected{display:flex;align-items:center;justify-content:space-between;gap:12px}.medal-history>summary{cursor:pointer;font-size:18px;font-weight:700;padding:18px 0;min-height:48px}.medal-fields{grid-template-columns:repeat(3,minmax(0,1fr))}.ranking-types{margin:0 0 20px}.admin-news-image{max-width:520px;margin:16px 0}.admin-news-image img{width:100%;max-height:280px;object-fit:contain;border-radius:12px}.admin-news-image button{margin-top:10px}
@media(max-width:680px){.shell .nav a{font-size:10px;max-width:none}.medal-fields{grid-template-columns:1fr}.shell .content{padding-bottom:calc(var(--bottom-nav-height) + env(safe-area-inset-bottom,0px) + 26px)}}
.admin-home-actions{display:flex;flex-wrap:wrap;gap:10px;margin:0 0 20px}.admin-home-actions>a{display:flex;align-items:center;gap:9px}.admin-group-roster{margin:22px 0}.admin-group-roster>.group-title{margin-bottom:6px}.admin-roster-list{list-style:none;margin:16px 0;padding:0;border:1px solid var(--line);border-radius:12px;overflow:hidden}.admin-roster-list>li+li{border-top:1px solid var(--line)}.admin-roster-row{display:flex;align-items:center;gap:12px;padding:13px 16px;min-width:0}.admin-roster-row .admin-student-link{flex:1;font-size:14px;min-width:0}.admin-roster-row .secondary{font-size:12px;padding:10px 12px;flex:none}.admin-roster-row .payment-badge{font-weight:700}.payment-badge.payment-unknown{background:#f0f2f5;color:var(--muted)}.group-payment-editor{padding:0 18px 20px;background:#fafbfc;border-top:1px solid var(--line)}.group-payment-editor .payment-editor{margin-top:10px}.group-payment-editor>details>summary,.admin-attendance-panel>summary{cursor:pointer;font-weight:650;min-height:48px;padding:16px 0}.group-payment-editor .payment-history{margin-top:12px}.group-payment-editor .admin-tariff-panel{margin-top:0}.admin-attendance-panel{margin-top:22px}.admin-attendance-panel>summary{font-size:18px}.admin-attendance-panel>h2{display:none}
@media(max-width:680px){.admin-home-actions>a{flex:1;font-size:12px;min-width:130px}.admin-roster-row{padding:13px 12px;gap:9px;flex-wrap:wrap}.admin-roster-row .admin-student-link{flex-basis:calc(100% - 110px)}.admin-roster-row .secondary{width:100%}.group-payment-editor{padding:0 12px 16px}}

/* Screenshot feedback: recognisable line icons, debt priority, and actual lesson days. */
.payment-debt-badge,.payment-paid-badge{display:inline-flex;align-items:center;gap:6px;max-width:100%;padding:6px 9px;margin:6px 0;border-radius:7px;background:#c90020;color:#fff;font-size:12px;font-weight:800;line-height:1.35;overflow-wrap:anywhere}
.payment-debt-badge .icon{width:17px;height:17px;flex:none;stroke-width:2.3}
.card.status.payment-debt{background:#c90020;border:2px solid #a5001a;color:#fff;box-shadow:0 4px 14px #c900201c}
.card.status.payment-debt .value,.card.status.payment-debt h3,.card.status.payment-debt p,.card.status.payment-debt a{color:#fff}
.card.status.payment-debt .value{font-size:clamp(25px,4.5vw,32px);font-weight:900;line-height:1.2}
.card.status.payment-debt .round{color:#fff;background:#ffffff1f}
.card.status.payment-debt a{display:inline-block;margin-top:8px;font-weight:700;text-decoration:underline;text-underline-offset:3px}
.card.status.payment-debt .payment-current-month{border-top:1px solid #ffffff55;margin-top:12px;padding-top:12px}
.calendar-week.reader-days{display:flex;flex-wrap:wrap;gap:9px}
.calendar-week.reader-days:empty{display:none}
.calendar-week.reader-days button{flex:0 1 76px;min-width:56px}
.calendar-date-context{font-size:12px;line-height:1.5;color:var(--muted);margin:10px 0 14px}
.attendance-table th.today-date{box-shadow:inset 0 3px 0 var(--red);font-weight:800}
.attendance-today-label{display:block;color:var(--red);font-size:9px;line-height:1.4;margin-top:4px}
.attendance-table th.selected-date .attendance-today-label{color:inherit}
.medal-symbol{display:flex;align-items:center}.medal-symbol .icon{width:32px;height:32px}
.medal-symbol.gold,.rank-medal-icon.gold{color:#a87808}.medal-symbol.silver,.rank-medal-icon.silver{color:#687786}.medal-symbol.bronze,.rank-medal-icon.bronze{color:#9d541d}
.rank-medal-icon{display:flex;justify-content:center}.rank-medal-icon .icon{width:26px;height:26px}.rank-medal-label{display:block;font-size:10px;margin-top:5px}
@media(max-width:420px){.admin-roster-row .payment-debt-badge{order:2}.rank-medal-label{font-size:8px}.ranking thead th{padding-left:3px;padding-right:3px}}

/* Consistent current nonpayment and assigned debt across directory and student card. */
.admin-student-row.has-debt,.student-payment-overview.has-debt{background:#fff2f4;border-left:4px solid #b8001a}.admin-student-row.is-paid,.student-payment-overview.is-paid{background:#effaf3;border-left:4px solid #087340}.payment-paid-badge{background:#087340;color:#fff}.payment-unknown-badge{color:#6c7585;font-size:12px}.student-payment-months{list-style:none;margin:16px 0 0;padding:0}.student-payment-months li{padding:12px 0;border-top:1px solid #e1e4eb}.student-payment-months li>div{display:flex;align-items:center;justify-content:space-between;gap:10px}.student-payment-months .admin-operation-link{margin-top:10px}
/* Paid and unpaid share visual weight; status calculation is unchanged. */
.payment-debt-badge,.payment-paid-badge{border:1px solid transparent}
.payment-debt-badge{border-color:#a5001a}.payment-paid-badge{border-color:#065b33}
.card.status[data-payment-month]:not(.unpaid){background:#087340;border:2px solid #065b33;color:#fff;box-shadow:0 4px 14px #0873401c}
.card.status[data-payment-month]:not(.unpaid) .value,.card.status[data-payment-month]:not(.unpaid) h3,.card.status[data-payment-month]:not(.unpaid) p,.card.status[data-payment-month]:not(.unpaid) a{color:#fff}
.card.status[data-payment-month]:not(.unpaid) .value{font-size:clamp(25px,4.5vw,32px);font-weight:900;line-height:1.2}
.card.status[data-payment-month]:not(.unpaid) .round{color:#fff;background:#ffffff1f}
/* Header logo: preserve the complete supplied asset instead of negative-offset cropping. */
.topbar .brand .logo{width:44px;height:44px;flex:0 0 44px;overflow:visible;background:#fff}
.topbar .brand .logo img{display:block;position:static;width:100%;height:100%;max-width:100%;left:auto;top:auto;object-fit:contain;object-position:center}

/* Own-group directory: the roster and journal open from an explicit group card. */
.trainer-groups-directory{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin:22px 0}
.trainer-group-card{display:flex;align-items:center;gap:16px;min-width:0;min-height:132px;padding:22px;border:1px solid #343434;border-radius:16px;background:#191919;color:#fff;text-decoration:none;transition:border-color .15s,background .15s}
.trainer-group-card:hover{border-color:#d41430;background:#212121}
.trainer-group-card:focus-visible{outline:3px solid #e42843;outline-offset:4px}
.trainer-group-card-icon{display:grid;place-items:center;flex:0 0 46px;width:46px;height:46px;border-radius:13px;background:#342025;color:#f04b65}
.trainer-group-card-icon svg{width:25px;height:25px}
.trainer-group-card-body{display:flex;flex:1;min-width:0;flex-direction:column;gap:8px}
.trainer-group-card-body strong{font-size:19px;line-height:1.35;overflow-wrap:anywhere}
.trainer-group-times{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:13px;line-height:1.5}
.trainer-group-card .trainer-group-times{color:#c6c6cb}
.trainer-roster-details{margin-top:18px}
.trainer-roster-details .trainer-student-list{padding-left:22px;line-height:1.8}
.group-members-disclosure>summary{cursor:pointer;font-size:16px;font-weight:750;line-height:1.5;overflow-wrap:anywhere}
.group-members-disclosure>summary:focus-visible{outline:3px solid #d41430;outline-offset:5px;border-radius:4px}
.group-members-disclosure[open]>summary{margin-bottom:16px}
.trainer-group-count{font-size:16px;font-weight:750;color:#f2f2f2}
.trainer-group-open{font-size:13px;line-height:1.4;color:#a9a9ad}
.trainer-groups-back{display:inline-flex;min-height:44px;align-items:center;margin-bottom:10px;color:#eee;text-decoration:none;font-weight:650}
@media(max-width:620px){.trainer-groups-directory{grid-template-columns:minmax(0,1fr);gap:12px}.trainer-group-card{padding:18px;min-height:122px}}

/* Native disclosure: count itself is the accessible trigger; each rendered child starts closed. */
.parent-attendance-disclosure{display:block;min-width:0}.parent-attendance-disclosure>summary{display:flex;align-items:center;gap:14px;min-height:52px;cursor:pointer;list-style:none}.parent-attendance-disclosure>summary::-webkit-details-marker{display:none}.parent-attendance-disclosure>summary:focus-visible{outline:3px solid #df0019;outline-offset:5px;border-radius:6px}.attendance-summary-copy{display:flex;flex:1;flex-direction:column;gap:5px;min-width:0}.attendance-summary-title{font-weight:700;font-size:14px}.attendance-summary-copy strong{font-size:27px;line-height:1.2}.attendance-summary-copy>span:last-child{font-size:12px;color:#667085}.attendance-disclosure-arrow{font-size:24px;font-weight:700;flex:none}.parent-attendance-disclosure[open] .attendance-disclosure-arrow{transform:rotate(180deg)}.parent-attendance-disclosure .parent-attendance-visits{width:100%;min-width:0}

.parent-payment-disclosure{margin:18px 0;border:1px solid #e1e4eb;border-radius:12px;padding:0 16px;background:#fff;min-width:0}.parent-payment-disclosure>summary{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:56px;cursor:pointer;list-style:none;font-size:18px;font-weight:700}.parent-payment-disclosure>summary::-webkit-details-marker{display:none}.parent-payment-disclosure>summary:focus-visible{outline:3px solid #df0019;outline-offset:4px;border-radius:6px}.parent-payment-disclosure>summary .subscription-history-title{margin:0;font-size:18px}.parent-payment-disclosure>summary>span:last-child{font-size:24px}.parent-payment-disclosure[open]>summary>span:last-child{transform:rotate(180deg)}.parent-payment-disclosure[open]{padding-bottom:16px}

/* Installed-app viewport: only #app scrolls; fixed navigation never rides document scrolling. */
html.paradigma-standalone{height:100%;overflow:hidden;overscroll-behavior:none}
html.paradigma-standalone body{position:fixed;inset:0;width:100%;height:100%;height:100dvh;min-height:0;margin:0;overflow:hidden;display:flex;flex-direction:column;overscroll-behavior:none;padding-top:env(safe-area-inset-top,0px);box-sizing:border-box}
html.paradigma-standalone body>.sim-banner{flex:0 0 auto}
html.paradigma-standalone #app{flex:1 1 auto;min-width:0;min-height:0;overflow:auto;overscroll-behavior-y:contain;scroll-padding-top:16px;scroll-padding-bottom:calc(var(--paradigma-nav-height,var(--bottom-nav-height,72px)) + env(safe-area-inset-bottom,0px) + 24px)}

/* Own-group roster: one accessible row per pupil, minimal payment status only. */
.trainer-roster ul{display:flex;flex-direction:column;flex-wrap:nowrap;gap:0;list-style:none;padding:0;margin:0}
.trainer-roster li.trainer-student-row{display:grid;grid-template-columns:minmax(0,1fr) max-content;align-items:center;gap:12px;min-height:48px;padding:10px 0;margin:0;border:0;border-bottom:1px solid #e6e8ee;border-radius:0;background:transparent;box-sizing:border-box}
.trainer-roster li.trainer-student-row:last-child{border-bottom:0}
.trainer-student-name{min-width:0;overflow-wrap:anywhere;word-break:normal;font-size:14px;line-height:1.4}
.trainer-student-payment{justify-self:end;max-width:130px;padding:6px 8px;border:1px solid transparent;border-radius:7px;font-size:12px;line-height:1.3;font-weight:800;text-align:center;white-space:normal;overflow-wrap:anywhere}
.trainer-student-payment.is-paid{color:#fff;background:#087340;border-color:#065b33}
.trainer-student-payment.is-unpaid{color:#fff;background:#b8001a;border-color:#9a0016}
.trainer-student-payment.is-unknown{color:#586273;background:#f1f3f6;border-color:#dce1e8}

/* The whole authorized row, including its chevron, remains one card link. */
.admin-student-row>.arrow{min-width:44px;min-height:44px;display:inline-flex;align-items:center;justify-content:center;flex:0 0 44px}
.admin-student-row:focus-visible{outline:3px solid #bd001c;outline-offset:-3px}

/* Read-only parent visits: same month and snapshot as the Home count. */
.parent-attendance-visits{margin-top:16px;padding-top:12px;border-top:1px solid #e1e4eb}.parent-attendance-visits h3{margin:0 0 8px;font-size:15px}.parent-visit-list{list-style:none;margin:0;padding:0}.parent-visit-list li{display:flex;flex-direction:column;gap:4px;padding:10px 0;border-bottom:1px solid #e9ebf0;overflow-wrap:anywhere}.parent-visit-list li:last-child{border-bottom:0}.parent-visit-list time{font-size:14px;font-weight:700}.parent-visit-list span{font-size:13px;line-height:1.45;color:#667085}.parent-attendance-visits p{font-size:12px;line-height:1.5}.home-card .parent-attendance-visits{width:100%;min-width:0}

/* Whole-card, native keyboard link into the selected child's read-only ledger. */
a.payment-home-link{display:block;text-decoration:none;color:inherit;cursor:pointer}
a.payment-home-link:focus-visible{outline:3px solid #18202e;outline-offset:4px}
.payment-home-cta{display:inline-flex;align-items:center;min-height:44px;margin-top:8px;font-weight:750;text-decoration:underline;text-underline-offset:3px}
.subscription-debt{margin:20px 0;overflow-wrap:anywhere}.subscription-debt.has-debt{border-left:4px solid #b8001a;background:#fff5f6}.subscription-debt h2{font-size:18px}.subscription-debt ul{list-style:none;padding:0;margin:14px 0}.subscription-debt li{display:flex;justify-content:space-between;align-items:baseline;gap:14px;flex-wrap:wrap;padding:12px 0;border-top:1px solid var(--line)}.subscription-debt li span{font-size:14px}.subscription-debt p{font-size:12px;line-height:1.6;color:var(--muted)}

/* Read-only administrator accounting. No external chart library. */
.accounting-page{max-width:1100px;margin:0 auto;color:#18181b;min-width:0}.accounting-page *{box-sizing:border-box}.accounting-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:24px}.accounting-heading h1{margin:0 0 8px;font-size:30px;line-height:1.2}.accounting-heading p{margin:0;color:#68686f;font-size:14px}.accounting-period{display:flex;align-items:flex-end;gap:10px;width:max-content;max-width:100%}.accounting-period .field{margin:0;display:flex;flex-direction:column;gap:6px;min-width:160px;font-size:12px;color:#616168}.accounting-period input{width:100%;min-height:44px;border:1px solid #d8d8dd;border-radius:10px;padding:9px 12px;color:#18181b;background:#fff;font:inherit;font-size:15px}.accounting-period .accounting-arrow{width:44px;height:44px;min-width:44px;padding:0;font-size:27px;line-height:1}.accounting-month-title{font-size:13px;color:#68686f;margin:10px 0 24px}.accounting-metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-bottom:18px}.accounting-metric{background:#fff;border:1px solid #e4e4e8;border-radius:18px;padding:22px;min-width:0}.accounting-metric h2{font-size:13px;font-weight:600;color:#626269;margin:0 0 18px;line-height:1.45}.accounting-value{display:block;font-size:clamp(24px,3.2vw,36px);line-height:1.15;letter-spacing:-1px;overflow-wrap:anywhere;font-variant-numeric:tabular-nums}.accounting-metric p{font-size:12px;line-height:1.5;color:#73737a;margin:14px 0 0}.accounting-metric.is-received{border-top:3px solid #df0019;padding-top:20px}.accounting-metric .accounting-unknown{font-size:21px;letter-spacing:0}.accounting-detail{display:block;margin-top:7px;color:#242428}.accounting-chart-card{background:#fff;border:1px solid #e4e4e8;border-radius:18px;padding:24px;margin:0 0 16px}.accounting-chart-card h2{font-size:18px;line-height:1.35;margin:0 0 6px}.accounting-chart-card>p{font-size:13px;line-height:1.5;color:#6b6b72;margin:0 0 22px}.accounting-chart{display:flex;align-items:center;gap:30px}.accounting-ring{width:168px;height:168px;flex:0 0 168px}.accounting-ring circle{fill:none;stroke-width:16}.accounting-ring .remainder{stroke:#e9e9ed}.accounting-ring .paid{stroke:#df0019}.accounting-legend{margin:0;flex:1;min-width:0}.accounting-legend>div{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:13px 0;border-bottom:1px solid #eeeef0}.accounting-legend>div:last-child{border-bottom:0}.accounting-legend dt{display:flex;align-items:center;gap:9px;font-size:14px}.accounting-legend dd{margin:0;font-size:17px;font-weight:650;font-variant-numeric:tabular-nums;text-align:right}.accounting-key{width:10px;height:10px;flex:0 0 10px;border-radius:3px;background:#df0019}.accounting-key.is-remaining{background:#e9e9ed;border:1px solid #b8b8be}.accounting-notice{border:1px solid #e5e5e9;background:#fafafa;border-radius:12px;padding:14px 16px;font-size:13px;line-height:1.6;margin:16px 0;color:#54545c}.accounting-chart-unavailable{padding:28px 0 12px;color:#54545c;font-size:14px;line-height:1.6}.accounting-footnote{color:#76767d;font-size:12px;line-height:1.6;margin:20px 0}.accounting-error{background:#fff;border:1px solid #f0bdc4;border-radius:16px;padding:24px;margin:20px 0}.accounting-error h2{font-size:18px;margin:0 0 8px}.accounting-error p{font-size:14px;line-height:1.5}.accounting-placeholder span,.accounting-placeholder b{display:block;background:#eeeeF1;border-radius:5px;height:10px;width:75%;margin:4px 0 24px}.accounting-placeholder b{height:34px;width:60%}.accounting-placeholder span:last-child{margin:0;width:90%}.accounting-loading>p{color:#6b6b72;font-size:14px}.accounting-page button:focus-visible,.accounting-page input:focus-visible{outline:3px solid #161618;outline-offset:3px}.accounting-page button:disabled{opacity:.4;cursor:default}@media(max-width:700px){.accounting-metrics{grid-template-columns:1fr;gap:10px}.accounting-metric{padding:18px}.accounting-metric.is-received{padding-top:16px}.accounting-metric h2{margin-bottom:10px}.accounting-value{font-size:31px}.accounting-metric p{margin-top:10px}.accounting-heading h1{font-size:27px}.accounting-heading{margin-bottom:20px}.accounting-heading>.secondary{font-size:12px;padding:10px 12px}.accounting-chart-card{padding:20px}.accounting-chart{gap:22px;flex-direction:column;align-items:stretch}.accounting-ring{align-self:center}.accounting-legend dd{font-size:16px}.accounting-period{width:100%}.accounting-period .field{flex:1;min-width:0}}


/* Compact private belt badges; no degree marks or remote assets. */
.private-belt-badge{display:inline-flex;vertical-align:middle;align-items:center;flex:0 0 auto;margin-inline:6px 2px;line-height:1}
.private-belt-badge .private-belt-icon{width:48px;height:29px;max-width:none;overflow:visible}
.private-belt-editor{border-top:1px solid #dedee2;margin-top:20px;padding-top:18px;max-width:100%}
.private-belt-editor h3{margin:0 0 12px}
.private-belt-editor .field{max-width:360px;width:100%}
.private-belt-editor select{width:100%;min-height:48px;max-width:100%;font:inherit;background:#fff;border:1px solid #a2a4ae;border-radius:10px;padding:10px;color:#202124}
.private-belt-value,.private-belt-preview{display:flex;align-items:center;gap:8px;min-height:38px}
.private-belt-preview{margin:10px 0 16px}
.private-belt-editor .buttons{display:flex;gap:10px;flex-wrap:wrap}
.private-belt-editor button{min-height:44px}
.private-belt-editor select:focus-visible,.private-belt-editor button:focus-visible{outline:3px solid #df0019;outline-offset:3px}

/* Separate trial attendance, with one bounded administrator disclosure. */
.trial-visits,.trial-admin-disclosure{margin:24px 0;padding:18px;border:1px solid #e3e7eb;border-radius:14px;background:#fff}
.trial-admin-disclosure>summary{cursor:pointer;font-weight:700;padding:4px 0}
.trial-admin-disclosure[open]>summary{margin-bottom:16px}
.trial-list{list-style:none;margin:12px 0;padding:0}
.trial-list>li{display:flex;align-items:center;justify-content:space-between;gap:16px;border-top:1px solid #edf0f3;padding:13px 0}
.trial-list>li>div{display:grid;gap:4px;min-width:0;overflow-wrap:anywhere}
.trial-list small,.trial-list span:not(.trial-badge){color:#5e6672;font-size:13px}
.trial-badge{padding:5px 9px;border:1px solid #c5ced8;border-radius:8px;font-size:12px;white-space:nowrap;color:#475769}
.trial-form{margin:16px 0;padding:18px;border:1px solid #c7d0dc;border-radius:12px;background:#f8fafc}
.trial-context{line-height:1.6}
.trial-review-name{font-size:18px;font-weight:650;overflow-wrap:anywhere}
.trial-actions,.trial-matches{display:flex;flex-wrap:wrap;gap:10px;margin-top:12px}
.trial-matches{margin-bottom:16px}
.trial-form input{width:100%;min-height:44px}
.trial-visits .group-title{display:flex;align-items:center;justify-content:space-between;gap:12px}
@media(max-width:600px){.trial-list>li{align-items:flex-start;flex-wrap:wrap}.trial-visits .group-title{align-items:flex-start;flex-direction:column}.trial-actions>button{flex:1}.trial-visits,.trial-admin-disclosure,.trial-form{padding:14px}}

/* Independent monthly directions; concise labels, no extra payment controls for parents. */
.direction-badge{display:inline-flex;align-items:center;max-width:100%;padding:3px 7px;border-radius:6px;background:#f0f1f4;color:#565b65;font-size:11px;font-weight:600;line-height:1.4;vertical-align:middle;white-space:nowrap}
.payment-direction-field{max-width:340px;margin:16px 0}.payment-direction-field select{min-height:44px}
.subscription-directions ul{list-style:none;padding:0;margin:0}.subscription-directions li{display:flex;justify-content:space-between;gap:16px;padding:13px 0;border-bottom:1px solid #e8e8ed}.subscription-directions li>span:last-child{text-align:right}.subscription-directions small{display:block;margin-top:4px;font-size:12px}.direction-total{display:flex;justify-content:space-between;gap:12px;padding-top:8px}.direction-total.has-debt,.payment-due-text{color:#b91c3a}.payment-paid-text{color:#357450}.parent-visit-list .direction-badge{margin-right:4px}
@media(max-width:480px){.subscription-directions li{gap:10px}.subscription-directions li>span{min-width:0}.direction-total{flex-wrap:wrap}.payment-direction-field{max-width:none}}

/* The annual ranking picker stays readable and touch-friendly on narrow screens. */
.ranking-year{width:100%;max-width:340px;font-size:14px;gap:8px}.ranking-year select{box-sizing:border-box;display:block;width:100%;min-width:0;min-height:48px;padding:12px 16px;font-size:16px;line-height:1.4;border:1px solid #bcc1cc;border-radius:10px;background:#fff;color:#171b24}.ranking-year select:focus-visible{outline:3px solid #e76377;outline-offset:2px}@media(max-width:680px){.ranking-year{max-width:none}}

.attendance-lesson-status{display:block;max-width:44px;overflow-wrap:anywhere;margin:4px auto 0;font-size:9px;line-height:1.3;font-weight:500;color:var(--muted)}

/* Scoped private portraits. The fallback remains visible until the authenticated image decodes. */
.private-photo-avatar{position:relative;display:inline-flex;align-items:center;justify-content:center;width:42px;height:42px;flex:0 0 42px;border-radius:50%;overflow:hidden;background:#f3e9eb;color:#831e30;font-size:14px;font-weight:750;line-height:1;isolation:isolate}.private-photo-avatar img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;border-radius:50%;background:#f3e9eb}.private-photo-large{width:82px;height:82px;flex-basis:82px;font-size:24px}.private-trainer-person{display:inline-flex;gap:10px;align-items:center;min-width:0}.private-trainer-person>span:last-child{overflow-wrap:anywhere}.private-training-trainer{display:flex;align-items:center;gap:10px 16px;flex-wrap:wrap;margin-top:10px;font-size:14px}.private-training-trainer>span{color:#6e6770}.private-photo-panel{background:#fff;border:1px solid #e9e3e6;border-radius:16px;padding:20px;margin:16px 0}.private-photo-heading{display:flex;align-items:center;gap:16px;margin-bottom:16px}.private-photo-heading h3{margin:0 0 5px}.private-photo-heading p{margin:4px 0}.private-photo-panel .field{display:flex;flex-direction:column;gap:8px;margin:14px 0}.private-photo-panel input[type=file]{max-width:100%;min-width:0;padding:10px;border:1px solid #d9d3d7;border-radius:9px;box-sizing:border-box}.private-photo-panel .buttons{display:flex;gap:10px;flex-wrap:wrap}.private-photo-panel progress{display:block;width:100%;max-width:420px;margin:10px 0}.private-photo-file{overflow-wrap:anywhere;font-size:13px}.private-admin-photos{border-top:1px solid #e8e1e4;padding-top:18px;margin:18px 0}.private-photo-title{display:flex;align-items:center;justify-content:space-between;gap:12px}.private-photo-title h2{margin:0}.private-admin-photos select{max-width:100%}.private-photo-panel .error{white-space:normal;overflow-wrap:anywhere}@media(max-width:440px){.private-photo-panel{padding:16px}.private-photo-heading{gap:12px}.private-photo-large{width:68px;height:68px;flex-basis:68px}.private-photo-panel .buttons>button{width:100%}.private-photo-title{align-items:flex-start}.private-photo-title h2{font-size:20px}}

/* Explicit touch sizes, independent of native file-input metrics. */
.private-photo-panel input,.private-photo-panel select,.private-admin-photos select{min-height:44px}.private-photo-heading>div{min-width:0;overflow-wrap:anywhere}

/* Intrinsic child chips: keep each name and belt inside its own hit target. */
.children{flex-wrap:nowrap;min-width:0;max-width:100%;gap:8px;overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain;scroll-padding-inline:5px}
.children > button{display:inline-flex;align-items:center;justify-content:flex-start;gap:8px;flex:0 0 auto;width:max-content;min-width:max-content;max-width:none;min-height:44px;white-space:nowrap;text-align:left}
.children > button > span{flex:0 0 auto;margin:0}
.children > button > .private-belt-badge{margin:0}
/* Personal Home: selected-child facts first; compact photo composition, no asset edits. */
.personal-home{display:flex;flex-direction:column;gap:12px;min-width:0;color:#15171c;container-type:inline-size}
.personal-home-heading h1{font-size:28px;margin:0}.personal-home-actions{display:flex;align-items:center;gap:12px}
.personal-home-achievements{min-width:0;border:1px solid #e4e6ee;border-radius:14px;padding:14px 16px;background:linear-gradient(135deg,#fff,#fcfcfe)}
.personal-home-section-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:8px}
.personal-home-section-heading h2{font-size:21px;line-height:1.2;letter-spacing:-.5px;min-width:0;overflow-wrap:anywhere;margin:0;font-weight:800}
.personal-home-all{display:inline-flex;gap:8px;align-items:center;justify-content:flex-end;color:#c90020;min-height:44px;flex:none;font-size:15px;font-weight:650;margin:-6px 0}
.personal-home-medals{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.personal-home-medal{display:flex;align-items:center;justify-content:center;gap:12px;padding:10px 8px;min-width:0;border-radius:11px;background:#f2f3f7}
.personal-home-medal>div{min-width:0}.personal-home-medal b{display:block;font-size:32px;font-weight:850;line-height:1.05;letter-spacing:-.8px;overflow-wrap:anywhere}.personal-home-medal>div>span{display:block;margin-top:4px;font-size:13px;color:#5d6472}
.personal-home-medallion{display:block;flex:0 0 56px;width:56px;height:56px;object-fit:contain;border:0;border-radius:0;background:none;box-shadow:none}
/* One full-card image plane and a broad blend, rather than adjacent solid panels. */
.personal-home-hero{position:relative;display:block;min-width:0;min-height:0;aspect-ratio:12/5;isolation:isolate;overflow:hidden;border:1px solid #dcdee6;border-radius:14px;background:#f5f5f8}
.personal-home-hero::after{content:'';position:absolute;z-index:1;inset:0;pointer-events:none;background:linear-gradient(90deg,#f5f5f8 0%,#f5f5f8 36%,rgba(245,245,248,.99) 45%,rgba(245,245,248,.96) 53%,rgba(245,245,248,.83) 60%,rgba(245,245,248,.42) 68%,rgba(245,245,248,0) 77%)}
.personal-home-copy{position:relative;z-index:2;width:62%;min-width:0;min-height:41.6667cqi;padding:clamp(12px,3.3cqi,28px);background:transparent;color:#111318;display:flex;flex-direction:column;justify-content:center}
.personal-home-copy h2{font-size:clamp(18px,5.8cqi,34px);line-height:1.03;letter-spacing:-.75px;overflow-wrap:anywhere;margin:0;font-weight:850}
.personal-home-belt{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:clamp(6px,1.9cqi,13px);color:#596273;font-size:clamp(10px,3cqi,14px);line-height:1.25}
.personal-home-belt .private-belt-badge{margin:0;flex:0 0 auto}.personal-home-belt .private-belt-icon{width:clamp(30px,9cqi,48px);height:auto}.personal-home-belt>span:last-child{min-width:0;overflow-wrap:anywhere}
.personal-home-accent{display:block;width:clamp(26px,8cqi,38px);height:3px;border-radius:5px;background:#df0019;margin:clamp(8px,2.4cqi,17px) 0 clamp(7px,2cqi,14px)}
.personal-home-copy p{font-size:clamp(12px,3.6cqi,22px);line-height:1.12;letter-spacing:-.25px;font-weight:800;margin:0;color:#111318;overflow-wrap:anywhere}
.personal-home-portrait{position:absolute;z-index:0;inset:0;min-width:0;min-height:0;background:radial-gradient(ellipse at 76% 34%,#f1edf1,#dddce3);overflow:hidden}
.personal-home-portrait.has-photo{background:#121214}
.personal-home-portrait img{position:absolute;inset:0 -3% 0 auto;width:66%;height:100%;max-width:none;object-fit:cover;object-position:50% 24%;background:#121214}
/* Exact approved collage metadata only. The front face sits at ~79% of the card;
   the second figure and lower body fall outside this reversible CSS display crop. */
.personal-home-portrait.is-front-collage img{inset:-4% auto auto 45%;width:120%;height:auto;max-width:none;object-fit:fill;object-position:initial}
.personal-home-initials{position:absolute;left:calc(78% - clamp(33px,10.5cqi,60px));top:calc(50% - clamp(33px,10.5cqi,60px));display:grid;place-items:center;width:clamp(66px,21cqi,120px);height:clamp(66px,21cqi,120px);aspect-ratio:1;border-radius:50%;background:#fff6;color:#8f3446;font-size:clamp(24px,7.7cqi,44px);font-weight:750;border:1px solid #fff9;overflow:hidden}
.personal-home-stack{display:flex;flex-direction:column;gap:11px;min-width:0}.personal-home-stack>.card,.personal-home-stack>.home-card{margin:0;border-radius:13px;min-width:0}
/* Keep the current read-only payment information in a compact horizontal strip. */
.personal-home .card.payment-home-link,.personal-home .home-card.home-payment{background:#fafafb;border:1px solid #e4e6ee;box-shadow:none;padding:13px 16px;color:#15171c}
.personal-home .card.status.unpaid.payment-home-link,.personal-home .home-card.home-payment.is-debt{background:#fff0f3;border-color:#f6dbe2;color:#15171c}
.personal-home .card.status:not(.unpaid).payment-home-link,.personal-home .home-card.home-payment.is-paid{background:#eef8f2;border-color:#cde6d7;color:#15171c}
.personal-home .card.payment-home-link>.row,.personal-home .home-card.home-payment{display:grid;grid-template-columns:40px minmax(0,1fr) minmax(68px,20%);column-gap:12px;row-gap:3px;align-items:center}
.personal-home .card.payment-home-link>.row>div,.personal-home .home-card.home-payment>div{display:contents}
.personal-home .card.payment-home-link>.row>span,.personal-home .home-card.home-payment>.home-card-icon{grid-column:1;grid-row:1/3;align-self:center}
.personal-home .card.payment-home-link h3,.personal-home .home-card.home-payment h2{grid-column:2;grid-row:1;color:#596273;font-size:12px;font-weight:500;line-height:1.2;margin:0}
.personal-home .card.payment-home-link .value,.personal-home .home-card.home-payment strong{grid-column:2;grid-row:2;font-size:clamp(16px,4.8cqi,22px);font-weight:850;line-height:1.1;letter-spacing:-.45px;overflow-wrap:anywhere}
.personal-home .card.unpaid.payment-home-link .value,.personal-home .home-card.home-payment.is-debt strong{color:#c90020}
.personal-home .card.status:not(.unpaid).payment-home-link .value,.personal-home .home-card.home-payment.is-paid strong{color:#087340}
.personal-home .card.payment-home-link p,.personal-home .home-card.home-payment p{grid-column:2/-1;color:#596273;font-size:12px;line-height:1.35;margin:0}
/* These qualified rules intentionally outrank later legacy paid/debt white text. */
.personal-home .card.status.payment-home-link p,.personal-home .card.status.payment-home-link h3,.personal-home .home-card.home-payment.is-debt p,.personal-home .home-card.home-payment.is-debt h2,.personal-home .home-card.home-payment.is-paid p,.personal-home .home-card.home-payment.is-paid h2{color:#596273}
.personal-home .card.payment-home-link .round,.personal-home .home-card.home-payment .home-card-icon{background:#d00022;color:#fff;display:grid;place-items:center;width:40px;height:40px;min-width:40px;flex:0 0 40px;border-radius:50%;font-size:25px}
.personal-home .card.status:not(.unpaid).payment-home-link .round,.personal-home .home-card.home-payment.is-paid .home-card-icon{background:#087340;color:#fff}
.personal-home .home-card.home-payment.is-neutral .home-card-icon{background:#e9ecf1;color:#596273}
.personal-home .card.payment-home-link .payment-current-month,.personal-home .home-card.home-payment .home-month-payment{border:0;padding:0;margin:0}
.personal-home .payment-home-cta,.personal-home .home-payment-cta{grid-column:3;grid-row:1/3;display:inline-flex;align-items:center;justify-content:flex-end;gap:5px;min-height:44px;font-size:11px;line-height:1.25;text-align:right;white-space:nowrap;font-weight:650;color:#ac1530;text-decoration:underline;text-underline-offset:3px;margin:0}
.personal-home .card.status:not(.unpaid).payment-home-link .payment-home-cta,.personal-home .home-card.home-payment.is-paid .home-payment-cta{color:#087340}
.personal-home .home-card>div{min-width:0;flex:1}.personal-home .next-training,.personal-home .training-card{padding:18px 16px;border-color:#e4e6ee;align-items:flex-start;gap:14px;background:#fff}
.personal-home .next-training>.red>.icon{width:32px;height:32px}.personal-home .next-training h3,.personal-home .training-card h2{font-size:16px;line-height:1.3;font-weight:750;margin:0 0 6px}
.personal-home .next-training .metric,.personal-home .training-card strong{font-size:25px;font-weight:850;line-height:1.2;overflow-wrap:anywhere;letter-spacing:-.4px}
.personal-home .next-training .training-time,.personal-home .training-card .home-training-date{font-size:15px!important;line-height:1.45;color:#454c5b!important;font-weight:500;margin:7px 0 0}
.personal-home .private-training-trainer{font-size:14px;gap:10px 14px}.personal-home .private-trainer-person{min-width:0;max-width:100%;font-size:14px}
.personal-home .personal-home-week{display:inline-flex;align-items:center;gap:7px;min-height:44px;padding:0;margin:4px 0 0;background:none;color:#c90020;font-size:14px;text-decoration:underline;text-underline-offset:3px}
.personal-home .parent-attendance-disclosure{display:block;padding:14px 16px;border-color:#e4e6ee;background:#fff}
.personal-home .attendance-summary-title{font-size:16px;line-height:1.3;font-weight:750}.personal-home .personal-home-attendance-count{display:block;font-size:13px;line-height:1.5;color:#687084}
.personal-home .personal-home-attendance-count strong{display:inline;font-size:15px;line-height:1.5;letter-spacing:0;color:#414957;font-weight:650}.personal-home .parent-attendance-disclosure>summary{gap:14px}
.personal-home .parent-attendance-disclosure>summary>.red>.icon{width:32px;height:32px}.personal-home .attendance-disclosure-arrow{color:#858d9d}
.personal-home-groups{padding:5px 4px;margin:0;border:0;border-radius:0;background:none}.personal-home .personal-home-groups h2,.personal-home .personal-home-groups h3{font-size:13px;color:#687084}.personal-home-groups .home-group{padding:10px 0;font-size:12px}.personal-home-groups .home-group span{font-size:12px}
@media(max-width:680px){
 .personal-home{gap:10px}.personal-home-heading h1{font-size:26px}.personal-home-achievements{padding:12px;border-radius:13px}.personal-home-section-heading{gap:10px;margin-bottom:7px}.personal-home-section-heading h2{font-size:18px}.personal-home-all{font-size:13px}.personal-home-medals{gap:7px}.personal-home-medal{padding:9px 6px;gap:7px;border-radius:10px}.personal-home-medallion{width:44px;height:44px;flex-basis:44px}.personal-home-medal b{font-size:28px}.personal-home-medal>div>span{font-size:11px}.personal-home-hero{border-radius:12px}.personal-home-belt{gap:6px}.personal-home-stack{gap:10px}.personal-home .card.payment-home-link,.personal-home .home-card.home-payment{padding:12px;column-gap:9px}.personal-home .card.payment-home-link>.row{column-gap:9px}.personal-home .card.payment-home-link p,.personal-home .home-card.home-payment p{font-size:11px}.personal-home .next-training,.personal-home .training-card{padding:16px 13px;gap:12px}.personal-home .next-training .metric,.personal-home .training-card strong{font-size:24px}.personal-home .next-training h3,.personal-home .training-card h2{font-size:15px}.personal-home .next-training .training-time,.personal-home .training-card .home-training-date{font-size:14px!important}.personal-home .private-training-trainer,.personal-home .private-trainer-person{font-size:13px}.personal-home .parent-attendance-disclosure{padding:12px 13px}.personal-home .attendance-summary-title{font-size:15px}.personal-home .personal-home-attendance-count{font-size:12px}.personal-home .home-refresh{margin-top:0}
}
@media(max-width:380px){.personal-home-medal{gap:5px;padding:8px 5px;flex-direction:row}.personal-home-medallion{width:37px;height:37px;flex-basis:37px}.personal-home-medal b{font-size:25px}.personal-home-medal>div>span{font-size:10px}.personal-home-section-heading h2{font-size:17px}.personal-home .card.payment-home-link>.row,.personal-home .home-card.home-payment{grid-template-columns:34px minmax(0,1fr) 68px;column-gap:8px}.personal-home .card.payment-home-link .round,.personal-home .home-card.home-payment .home-card-icon{width:34px;height:34px;min-width:34px;font-size:23px}.personal-home .payment-home-cta,.personal-home .home-payment-cta{font-size:10px}}
/* Archive confirmation keeps long financial rows inside their own scroll area. */
.archive-card{min-width:0;max-width:100%;box-sizing:border-box}
.archive-table-scroll{max-width:100%;min-width:0;overflow-x:auto;margin:14px 0}
.archive-table-scroll table{border-collapse:collapse;width:100%}
.archive-table-scroll th,.archive-table-scroll td{text-align:left;padding:8px;white-space:nowrap}
.archive-card .field{display:grid;gap:8px;margin:16px 0;font-weight:600}
.archive-card textarea,.archive-card select{box-sizing:border-box;width:100%;min-width:0;font:inherit;padding:12px;border:1px solid #c8cdd4;border-radius:10px;background:#fff;color:#15171c}
.archive-card textarea{min-height:92px;resize:vertical}
.archive-card button{max-width:100%;white-space:normal;min-height:44px}

.deletion-card input[type=text]{box-sizing:border-box;width:100%;min-width:0;padding:12px;font:inherit;border:1px solid #c8cdd4;border-radius:10px}
.deletion-checkbox{display:flex;align-items:flex-start;gap:10px;margin:18px 0}.deletion-checkbox input{flex:0 0 auto;width:20px;height:20px}

.admin-password-card{max-width:560px}.admin-password-card .field{display:flex;flex-direction:column;gap:8px;margin:16px 0}.admin-password-card input{box-sizing:border-box;width:100%;min-width:0;padding:12px;border:1px solid #d9dfe8;border-radius:10px;background:#fff;color:#132033;font:inherit}.admin-password-card p{overflow-wrap:anywhere}.admin-password-card button{max-width:100%}

.trainer-account-card{max-width:600px;margin-bottom:20px}.trainer-account-card .field{display:flex;flex-direction:column;gap:8px;margin:16px 0}.trainer-account-card input{box-sizing:border-box;width:100%;min-width:0;padding:12px;border:1px solid #d9dfe8;border-radius:10px;background:#fff;color:#132033;font:inherit}.trainer-account-card p,.trainer-account-list li{overflow-wrap:anywhere}.trainer-account-list{padding-left:20px}.trainer-account-list li{margin:14px 0}.trainer-account-list span{display:block}

/* Keep admin page actions separate from the following content. */
.admin-page-heading{margin-bottom:20px}
.admin-page-heading>.heading{min-width:0;margin-bottom:0}
.admin-page-heading+.admin-students-intro{margin-top:0}
#staffGroup{min-height:44px}

/* Keep the two right-aligned footer actions clear of the fixed chat button. */
.shell.has-chat-fab .ranking-refresh,.shell.has-chat-fab .news-footer{padding-right:64px;flex-wrap:wrap}
.trainer-account-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:16px}
.trainer-account-actions>a{display:inline-flex;align-items:center;justify-content:center;text-align:center}

/* Let valid long names and native group choices stay inside the layout. */
#page .heading{min-width:0}
#page .heading>h1{min-width:0}
#page h1,#page h2,#page h3{overflow-wrap:anywhere}
.children button{overflow-wrap:anywhere}
.personal-home-hero{aspect-ratio:auto}
.personal-home-copy{min-height:calc(41.6667cqi - 2px)}
#calendarGroup,#adminAttendanceGroup{display:block;width:100%;max-width:100%;min-width:0;min-height:44px}
.archive-navigation{display:flex;align-items:center;flex-wrap:wrap;gap:10px;margin-bottom:16px}
.archive-navigation>.back{margin:0}
.archive-navigation>.secondary{display:inline-flex;align-items:center;justify-content:center;text-align:center}

.archive-students-list .secondary{display:inline-flex;align-items:center;justify-content:center}

/* Keep the archive action in flow above the parent-activation card. */
.admin-students-actions{display:flex;flex-wrap:wrap;gap:10px;margin:0 0 20px}
.admin-students-actions>.secondary{display:inline-flex;align-items:center;justify-content:center;max-width:100%;text-align:center}

/* Native WebKit menu text must not enlarge the document scroll area. */
select{contain:paint}

/* viewport-fit=cover needs a top reserve in ordinary tabs as well as PWA. */
body{padding-top:env(safe-area-inset-top,0px)}
/* Keep enlarged text in the header without changing the normal-size row. */
.topbar{height:auto;min-height:74px;flex-wrap:wrap;gap:12px;padding-top:12px;padding-bottom:12px}
@media(max-width:680px){.topbar{min-height:66px}}

/* Let text-only enlargement retain the same controls and reading order. */
.primary,.secondary{max-width:100%;overflow-wrap:anywhere}
#page .heading{flex-wrap:wrap}
#page{overflow-wrap:anywhere}
.personal-home-heading{flex-wrap:wrap}
.document-row>span{min-width:0}
.document-row .arrow{flex:none}
.achievement-count{flex-wrap:wrap;min-width:0}
.achievement-count>div{min-width:0;max-width:100%}
.subscription-directions li{flex-wrap:wrap}
.subscription-directions li>span:last-child{margin-left:auto}
.tournament-page .tournament-types{grid-template-columns:repeat(2,minmax(0,1fr))}
.tournament-page .tournament-types button{min-width:0;max-width:100%;overflow-wrap:anywhere}
.shell .nav a>span{min-width:0;max-width:100%;overflow-wrap:anywhere}
:root{--bottom-nav-height:max(72px,4.8em)}
.shell .chat-fab{bottom:calc(max(var(--chat-nav-height,72px),calc(var(--bottom-nav-height,72px) + env(safe-area-inset-bottom,0px))) + 16px)}
.parent-club-social .parent-club-social-link{text-align:center;overflow-wrap:anywhere}
.parent-club-social-link>span{min-width:0;max-width:100%}
.calendar-week button span{height:auto;min-height:12px;line-height:1.2}
.trainer-shell .attendance-table button.mark{width:max(38px,1.5em);height:max(38px,1.5em);line-height:1}
.accounting-period .accounting-arrow{width:max(44px,1.5em);height:max(44px,1.5em);min-width:max(44px,1.5em);flex:none}
.admin-student-sections a>span{min-width:0;overflow-wrap:anywhere}
.tournament-page .tournament-division{grid-template-columns:minmax(34px,max-content) repeat(3,minmax(0,1fr))}
.tournament-page .tournament-check{right:0;top:0;min-width:14px;width:1.5em;line-height:1.5}
@media(max-width:380px){.tournament-page .tournament-division{grid-template-columns:minmax(28px,max-content) repeat(3,minmax(0,1fr))}}

/* Keep ordinary medal labels on one line without changing their type or colours. */
@media(min-width:381px) and (max-width:680px){.personal-home-medal{gap:5px;padding-left:4px;padding-right:4px}}
@media(max-width:380px){.personal-home-medal{gap:1px;padding-left:1px;padding-right:1px}}

/* Admission uses the existing buttons/cards; only the requested action positions change. */
.admin-student-intake-toolbar{align-items:stretch;flex-wrap:nowrap}
.admin-student-intake-toolbar>button,.admin-student-intake-toolbar>a{min-width:0;white-space:normal;text-align:center}
.student-intake-form fieldset{border:0;padding:0;margin:0;min-width:0}
.admin-student-message{grid-column:1/-1;grid-row:2;min-width:0}
.admin-student-message-button{width:100%;justify-content:center;min-height:48px}
.admin-student-message .field{margin-bottom:10px}
.admin-student-message form{margin-top:14px}
.student-parent-choice{display:flex;gap:10px;align-items:flex-start;margin:14px 0;overflow-wrap:anywhere}
.student-parent-choice input{flex:0 0 auto;margin-top:4px}
.student-parent-choice span{min-width:0}
@media(max-width:480px){.admin-student-intake-toolbar>button,.admin-student-intake-toolbar>a{flex:1 1 0;padding-left:10px;padding-right:10px}}

/* Keep notification settings within the existing Profile card. */
#pushPreferences input[type="checkbox"]{width:auto;min-height:auto;margin-right:.5rem}
#pushPreferences fieldset{border:0;padding:0;margin:0;min-width:0}

.student-intake-form select{display:block;width:100%;min-height:48px;margin-top:8px;padding:12px;border:1px solid #ccd2dd;border-radius:9px;background:#fff;color:var(--ink);font:inherit}
#pushPreferences .field span{display:flex;align-items:center;gap:.5rem}
#pushPreferences .field input[type="checkbox"]{display:inline-block;margin:0;flex:0 0 auto}

/* Reserve room for the chat icon, intact label and unread counter. */
.admin-home-actions>a{flex:1 1 150px;min-width:min(150px,100%)}
.admin-home-actions .chat-admin-home-entry>span:not(.chat-unread){white-space:nowrap;overflow-wrap:normal}

/* A selected student's name wraps before the independent refresh action. */
.medal-selected>span{min-width:0;flex:1}
.medal-selected>#refreshMedals{flex:0 0 auto;min-height:44px;white-space:nowrap;overflow-wrap:normal;word-break:normal}

/* Let a contextual save label take a full row before squeezing its words. */
.schedule-editor .buttons{flex-wrap:wrap}
.schedule-editor .buttons>.primary{flex:1 1 220px;min-width:0;overflow-wrap:break-word;word-break:normal}
.schedule-editor .buttons>.secondary{flex:0 0 auto;min-width:100px}

/* Narrow approval and trial actions wrap before their words are squeezed. */
@media(max-width:680px){.admin-activation-list .buttons>button{flex:1 1 140px;min-width:0;overflow-wrap:normal;word-break:normal}}
@media(max-width:600px){.trial-actions>button{flex:1 1 150px;min-width:0;overflow-wrap:break-word;word-break:normal}}

/* The photo heading may wrap while its close action keeps its own width. */
.private-photo-title>h2{min-width:0;flex:1}
.private-photo-title>#closeTrainerPhotos{flex:0 0 auto;min-height:44px;white-space:nowrap;overflow-wrap:normal;word-break:normal}

/* Account labels keep their width beside a long user name. */
.profile-account .profile-item>span{flex:0 0 auto;white-space:nowrap;overflow-wrap:normal}

/* Activate the spacing and wrapping already defined for correction actions. */
.attendance-correction-dialog .buttons{display:flex}

/* Ranking footer: stable separation from the table and the fixed chat entry. */
.ranking-refresh{margin-top:20px;min-height:44px;justify-content:flex-end;flex-wrap:wrap}.ranking-refresh>span{margin-right:auto}.ranking-refresh>.secondary{min-height:44px}.ranking-selection{overflow-wrap:anywhere}.private-photo-file{overflow-wrap:anywhere;line-height:1.6}
.shell.has-chat-fab .ranking-refresh{padding-right:72px;margin-bottom:16px}
@media(max-width:680px){.shell.has-chat-fab .ranking-refresh{padding-right:72px;padding-bottom:16px}.content{padding-bottom:calc(116px + env(safe-area-inset-bottom))}}

/* The chosen filename is owned by the photo controller across rerenders. */
.private-photo-picker{position:relative}.private-photo-choose{display:inline-flex;align-items:center;justify-content:center;min-height:44px;align-self:flex-start;cursor:pointer}.private-photo-picker:focus-within .private-photo-choose{outline:3px solid #e76377;outline-offset:3px}.private-photo-picker input:disabled+.private-photo-choose{opacity:.55;cursor:default}#privatePhotoFeedback:focus{outline:2px solid #e76377;outline-offset:4px;border-radius:3px}


/* Cabinet links preserve the existing hash router and its unsaved-change guards. */
.topbar .brand{color:inherit;text-decoration:none;min-height:44px}
.topbar .brand:focus-visible{outline:3px solid #e76377;outline-offset:4px;border-radius:6px}

/* Medal labels keep their intrinsic width; the full child name wraps in its column. */
.rank-medal-label{white-space:nowrap;overflow-wrap:normal;word-break:normal}
@media(max-width:680px){
 .ranking table{table-layout:auto}
 .ranking .rank-place,.ranking .rank-medal,.ranking .rank-points{width:1%;padding-left:3px;padding-right:3px;white-space:nowrap}
 .ranking .rank-name{width:auto}
}

/* Only a chat in the installed app follows the keyboard's visual viewport. */
html.paradigma-standalone.chat-view body{height:var(--chat-viewport-bottom,100dvh)}
html.chat-view.chat-keyboard-open .shell .nav{visibility:hidden;pointer-events:none}
html.chat-view:not(.paradigma-standalone).chat-keyboard-open .chat-workspace{padding-bottom:calc(var(--chat-keyboard-inset,0px) + 16px)}

.push-onboarding{margin-bottom:18px}.push-onboarding h2{font-size:17px;line-height:1.4}.push-onboarding p,.push-onboarding li{font-size:13px;line-height:1.5}.push-onboarding .buttons{display:flex;flex-wrap:wrap;gap:10px}.push-onboarding button{min-height:44px}
@media(max-width:680px){.shell.has-chat-fab .medal-refresh{padding-right:72px;padding-bottom:16px}.medal-refresh .secondary{max-width:100%;min-height:44px;white-space:normal}}

/* Preserve readable edge headings with intrinsic medal columns. */
.ranking thead th:first-child,.ranking thead th:last-child{white-space:nowrap;overflow-wrap:normal;word-break:normal}

/* Scoped family review; existing page layout and ranking remain unchanged. */
.admin-family-panel,.admin-family-review{min-width:0;overflow-wrap:anywhere}
.admin-family-review{padding:12px 0;border-bottom:1px solid var(--line,#eee)}
.admin-family-panel fieldset{min-width:0;margin:12px 0;border:1px solid var(--line,#eee);border-radius:12px;padding:10px}
.admin-family-panel button,.admin-student-message button{white-space:normal;max-width:100%;min-height:44px}
.admin-family-panel .student-parent-choice,.admin-student-message .student-parent-choice{align-items:flex-start;min-width:0}
.admin-family-panel .student-parent-choice span,.admin-student-message .student-parent-choice span{min-width:0;overflow-wrap:anywhere}
.admin-family-counts{width:100%;table-layout:fixed;border-collapse:collapse;margin:14px 0;font-size:12px}
.admin-family-counts th,.admin-family-counts td{padding:8px 4px;border-bottom:1px solid var(--line,#eee);white-space:normal;overflow-wrap:anywhere;text-align:center}
.admin-family-counts th:first-child{width:48%;text-align:left}
.admin-family-counts caption{text-align:left;font-weight:700;margin-bottom:8px}
.admin-student-message .field{min-width:0;max-width:100%}
.admin-student-message select{width:100%;min-width:0;max-width:100%;box-sizing:border-box}

/* Family controls share full-width action rows and explicit vertical gaps. */
.admin-student-message{display:grid;gap:12px;align-items:stretch}
.admin-student-message>button,.admin-student-message form>button,.admin-family-panel>button,.admin-family-panel form>button{display:flex;align-items:center;justify-content:center;width:100%;text-align:center}
.admin-student-message>p,.admin-student-message>.field,.admin-student-message>.student-parent-choice,.admin-student-message form>.field{margin:0}
.admin-student-message form,.admin-family-panel>form{display:grid;gap:12px;margin:0}
.admin-family-panel{display:grid;gap:12px;align-items:stretch}
.admin-family-panel>h2,.admin-family-panel>p,.admin-family-panel>.student-parent-choice,.admin-family-panel>fieldset,.admin-family-panel>.admin-family-counts,.admin-family-panel>form>.field{margin:0}

/* One weekly group, one roster; compact day selection. */
.weekly-group-days{min-width:0}.weekly-group-days>div{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px}.weekly-group-days .student-parent-choice{margin:0;min-height:44px;justify-content:center;flex-wrap:wrap;gap:6px;padding:8px 4px}.weekly-group-days input{margin:0}.admin-duplicate-candidates{display:grid;gap:12px;min-width:0}.admin-duplicate-candidates>h2,.admin-duplicate-candidates>p{margin:0}.admin-duplicate-candidates ul{margin:0;padding-left:20px}.admin-duplicate-candidates li{overflow-wrap:anywhere}.admin-duplicate-candidates>section{display:grid;gap:12px;min-width:0}.admin-duplicate-candidates>section>button{width:100%;min-height:44px;white-space:normal}.admin-duplicate-candidates .buttons{flex-wrap:wrap}@media(max-width:430px){.weekly-group-days>div{grid-template-columns:repeat(4,minmax(0,1fr))}}

/* One shared interval for the selected weekly days. */
.group-time-interval{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.group-time-interval>.field{min-width:0;margin:0}.group-time-interval select{display:block;width:100%;min-width:0;max-width:100%;box-sizing:border-box}

/* Award totals: icons and counts stay readable in three mobile columns. */
.medals{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.medals>.medal{flex-direction:column;gap:6px;align-items:center;text-align:center;min-width:0}.medals .medal-symbol{display:block;font-family:"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji",sans-serif;font-size:30px;line-height:1.2}.medals .medal b{font-size:24px;line-height:1.2;font-variant-numeric:tabular-nums}.medals .medal small{display:block;font-size:12px;line-height:1.4;white-space:nowrap}.achievement-count small{white-space:nowrap}

/* Group removal is deliberately separated from routine group actions. */
.admin-group-danger{margin-top:24px;padding-top:16px;border-top:1px solid var(--line)}.admin-group-danger>#deleteCurrentGroup{display:block;width:100%;min-height:48px;padding:12px 16px;white-space:nowrap;background:var(--red);color:#fff}.group-lifecycle-confirm,.group-archive-panel,.group-archive-item{display:grid;gap:12px;min-width:0}.group-lifecycle-confirm{margin-top:16px}.group-lifecycle-confirm>h3,.group-lifecycle-confirm>p,.group-archive-panel>h2,.group-archive-panel>p,.group-archive-item>h3,.group-archive-item>p{margin:0}.group-archive-item{padding:16px 0;border-top:1px solid var(--line);overflow-wrap:anywhere}.group-archive-panel .buttons,.group-lifecycle-confirm .buttons{display:grid;grid-template-columns:1fr;gap:12px}.group-archive-panel button,.group-lifecycle-confirm button{width:100%;min-height:44px;white-space:normal}.group-lifecycle-confirm input[type=text],.group-lifecycle-confirm input:not([type]){width:100%;min-width:0}.admin-page-heading{flex-wrap:wrap}

.group-weekly-interval{min-inline-size:0;margin:12px 0;padding:14px;border:1px solid #e5e8ed;border-radius:14px}.group-weekly-interval legend{padding:0 6px;font-weight:700}.group-weekly-interval .group-time-interval{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.group-roster-panel{margin:18px 0;padding:18px;border:1px solid #e5e8ed;border-radius:16px;background:#fff}.group-roster-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-top:16px}.group-roster-heading h3{margin:0}.group-roster-list{max-height:440px;overflow:auto;overscroll-behavior:contain;margin-top:10px}.group-roster-row{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:13px 4px;border-bottom:1px solid #edf0f3}.group-roster-row:last-child{border-bottom:0}.group-roster-person{min-width:0;display:flex;flex-direction:column;gap:5px;overflow-wrap:anywhere}.group-roster-person small{color:#677284;line-height:1.4}.group-roster-add{flex:0 0 42px;width:42px;height:42px;border:1px solid #df0019;border-radius:50%;background:#fff;color:#df0019;font-size:25px;line-height:1;cursor:pointer}.group-roster-add.is-member{border-color:#c9e9d4;background:#edf9f0;color:#21763a}.group-roster-add:disabled{opacity:1;cursor:default}.group-roster-add:focus-visible{outline:3px solid #f4b8bf;outline-offset:3px}.group-roster-create{padding:14px;margin-bottom:6px}.group-roster-create .group-roster-list{max-height:340px}@media(max-width:540px){.group-roster-panel{padding:14px}.group-roster-row{gap:10px}.group-roster-person strong{font-size:14px}.group-roster-heading .secondary{padding:8px 12px}}

/* First-photo entry only; replacement stays in the profile. */
.personal-home-portrait.is-initials .personal-home-initials{top:calc(42% - clamp(33px,10.5cqi,60px))}
.personal-home-add-photo{position:absolute;z-index:3;left:78%;top:calc(42% + clamp(33px,10.5cqi,60px) + 4px);transform:translateX(-50%);display:inline-flex;align-items:center;justify-content:center;min-height:44px;max-width:calc(44% - 12px);padding:6px 9px;border:1px solid #d9b9c1;border-radius:18px;background:#fff;color:#9b1733;font-size:clamp(12px,3cqi,13px);font-weight:700;line-height:1.2;text-align:center;text-decoration:none;white-space:nowrap}
.personal-home-add-photo:focus-visible{outline:3px solid #a60026;outline-offset:2px}
.trainer-day-picker{display:flex;align-items:end;flex-wrap:wrap;gap:12px;margin-top:18px}.trainer-day-picker .field{flex:1;min-width:180px;margin:0}.trainer-day-picker>.small{flex-basis:100%}.trainer-training-list{display:grid;gap:12px;list-style:none;padding:0}.trainer-training-card{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:0}.trainer-training-card>div{display:grid;gap:7px;min-width:0}.trainer-training-card small{color:var(--muted)}.trainer-session-heading h2{margin-top:0}.trainer-session-heading p:last-child{margin-bottom:0}.trainer-session-journal .attendance-table{min-width:100%}.trainer-session-journal .attendance-table .mark{min-width:44px;min-height:44px}
@media(max-width:520px){.trainer-training-card{align-items:stretch;flex-direction:column}.trainer-training-card>a{text-align:center}.trainer-day-picker>button{width:100%}}

@media(max-width:520px){.personal-home-portrait.is-initials .personal-home-initials{top:calc(34% - clamp(33px,10.5cqi,60px))}.personal-home-add-photo{top:calc(34% + clamp(33px,10.5cqi,60px) + 4px)}}
/* Private avatar positioning keeps the full normalized source intact. */
.private-photo-crop-frame{position:relative;width:min(100%,320px);aspect-ratio:1;overflow:hidden;margin:12px 0;border:2px solid #a51d35;border-radius:14px;background:#e7e5e7;touch-action:none;user-select:none;cursor:grab;isolation:isolate}
.private-photo-crop-frame:active{cursor:grabbing}
.private-photo-crop-frame:focus-visible{outline:3px solid #d3173b;outline-offset:4px}
.private-photo-crop-frame[aria-disabled=true]{cursor:wait}
.private-photo-crop-frame img{position:absolute;inset:0;width:100%;height:100%;max-width:none;object-fit:cover;pointer-events:none;user-select:none;-webkit-user-drag:none}
.private-photo-crop-guide{position:absolute;inset:0;border-radius:50%;box-shadow:0 0 0 48px #0005;pointer-events:none}
.private-photo-crop h4{font-size:18px;margin:12px 0 6px}

/* Scoped invitation layout; retain CSP style-src self and existing cabinet styles. */
.competition-external-link,.competition-answer-buttons{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0}
.competition-invite-form,.competition-invite-form .field{min-width:0;max-width:100%}
.competition-invite-form select{display:block;width:100%;min-width:0;max-width:100%;font:inherit;padding:10px;border:1px solid var(--line);border-radius:9px;background:#fff;color:var(--ink)}

/* Compact roster action; long names wrap beside the existing cabinet button. */
.trainer-roster-details .trainer-student-list{list-style:none;padding:0;margin:0;border:1px solid #dce5e3;border-radius:10px}
.trainer-pupil-row{display:grid;grid-template-columns:minmax(0,1fr) max-content;align-items:center;gap:6px 12px;padding:12px;border-bottom:1px solid #dce5e3}
.trainer-pupil-row:nth-child(even){background:#f6f9f8}
.trainer-pupil-row:last-child{border-bottom:0;border-radius:0 0 10px 10px}
.trainer-pupil-name{min-width:0;overflow-wrap:anywhere;line-height:1.5;font-weight:600}
.trainer-roster-details .trainer-pupil-invite{min-width:44px;min-height:44px;white-space:nowrap;background:#e5ede8;border-color:#708479;color:#29463b;font-weight:650;box-shadow:inset 0 0 0 1px #708479}
.trainer-roster-details .trainer-pupil-invite:hover{background:#d8e4dc;border-color:#61776a;color:#29463b}
.trainer-roster-details .trainer-pupil-invite:focus-visible{outline:3px solid #526f60;outline-offset:3px}
.trainer-pupil-invitations,.trainer-pupil-status{grid-column:1/-1;min-width:0;overflow-wrap:anywhere}
.trainer-pupil-invitations summary{display:flex;flex-wrap:wrap;align-items:center;gap:6px;width:fit-content;max-width:100%;cursor:pointer;font-size:13px;color:var(--muted);line-height:1.6;padding:3px 0;list-style:none}
.trainer-pupil-invitations summary::-webkit-details-marker{display:none}
.trainer-pupil-invitations summary::after{content:'⌄';padding:0 2px}
.trainer-pupil-invitations[open] summary::after{content:'⌃'}
.trainer-invite-badge{display:inline-flex;align-items:center;gap:4px;padding:5px 9px;border:1px solid transparent;border-radius:7px;font-size:12px;font-weight:750;line-height:1.4}
.trainer-invite-badge.is-yes{background:#edf3ee;border-color:#bfcfc2;color:#355a3e}
.trainer-invite-badge.is-pending,.trainer-invite-badge.is-reconfirm{background:#f5f1e6;border-color:#d2c5a3;color:#6d592c}
.trainer-invite-badge.is-no{background:#f5eceb;border-color:#d7bebb;color:#7b4540}
.trainer-pupil-invitations p{margin:7px 0;line-height:1.5}
.trainer-pupil-invitations summary:focus-visible{outline:3px solid var(--red);outline-offset:3px;border-radius:4px}
.competition-external-link .news-open-link{display:inline-flex;align-items:center;justify-content:center;min-height:44px;background:#e5ede8;border-color:#708479;color:#29463b;font-weight:650;box-shadow:inset 0 0 0 1px #708479}
.competition-external-link .news-open-link:hover{background:#d8e4dc;border-color:#61776a;color:#29463b}
.competition-external-link .news-open-link:focus-visible{outline:3px solid #526f60;outline-offset:3px}

/* Group-scoped invitation selection, using the approved soft palette. */
.trainer-roster-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:12px}
.trainer-roster-heading h2{margin:0;min-width:0;overflow-wrap:anywhere}
.trainer-roster-heading .trainer-pupil-invite{margin:0}
.trainer-batch-selection{padding:12px;background:#f6f9f8;border:1px solid #dce5e3;border-radius:10px;margin:12px 0}
.trainer-roster-details .trainer-pupil-select{min-width:44px;padding:8px;font-size:20px;justify-self:end}
.trainer-roster-details .trainer-pupil-select[aria-pressed=true]{background:#d8e4dc;box-shadow:inset 0 0 0 2px #61776a}
.trainer-batch-review,.trainer-batch-results{padding-left:20px;overflow-wrap:anywhere}
.competition-invite-form{min-width:0;overflow-wrap:anywhere}
.competition-invite-form select{max-width:100%;min-width:0;width:100%}
.competition-invite-form .buttons{flex-wrap:wrap}
.competition-invite-form .buttons button{max-width:100%;white-space:normal;min-height:44px}

/* Parent feed type filters: preserve full words and 44px touch targets. */
.news-type-filters{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.news-type-filters a{display:flex;align-items:center;justify-content:center;min-height:44px;min-width:0;width:auto;white-space:nowrap;word-break:normal;overflow-wrap:normal}
@media(min-width:720px){.news-type-filters{grid-template-columns:repeat(4,minmax(0,1fr))}}

.news-card.has-external-link>a{height:auto}
.news-card.has-external-link>.competition-external-link{margin:0;padding:0 14px 14px}
.news-card.has-cover.has-external-link>.competition-external-link{padding-top:12px}

/* Manual service-notice controls; existing styles and news-link gap stay intact. */
.debt-notice-panel .field{display:grid;gap:8px;margin:16px 0}
.debt-notice-panel select{width:100%;min-width:0;min-height:44px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:#fff;font:inherit;color:inherit}
.debt-notice-confirm{display:flex;align-items:center;gap:10px;min-height:44px;margin:16px 0}
.debt-notice-confirm input{flex:0 0 20px;width:20px;height:20px;min-height:20px;margin:0}
.home-debtor-line{display:flex;justify-content:space-between;align-items:center;gap:14px}.home-debtor-line label{display:flex;align-items:center;gap:12px;min-height:44px;min-width:0;overflow-wrap:anywhere}.home-debtor-line input{width:22px;height:22px;flex:none;accent-color:var(--red)}.debt-selection-tools{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:15px 0}.debt-selection-tools button{min-height:44px}.debt-batch-review{margin:18px 0}.debt-batch-review ul{padding-left:20px}.debt-batch-review li{margin:12px 0;overflow-wrap:anywhere}.debt-batch-review li span{display:block;margin-top:5px;font-size:13px}.debt-notice-confirm input{width:22px;height:22px;flex:none}
.trainer-group-entry{display:grid;gap:10px;align-content:start}.trainer-today-entry{text-align:center;min-height:44px}.trainer-shell .trainer-day-list-wrap{overflow:visible;max-height:none!important;width:100%;border:0;border-radius:0;overscroll-behavior:auto}.trainer-day-list{list-style:none;margin:0;padding:0}.trainer-day-pupil{display:flex;align-items:center;flex-wrap:wrap;gap:12px;border:1px solid var(--line);border-radius:12px;padding:16px;margin:12px 0;background:#fff}.trainer-day-name{flex:1;min-width:160px;overflow-wrap:anywhere}.trainer-day-name strong{font-size:15px;line-height:1.5}.trainer-day-name small{display:block;font-size:12px;line-height:1.5;color:var(--muted);margin-top:4px}.trainer-day-actions{display:flex;gap:9px;flex-wrap:wrap}.trainer-day-mark{display:flex;align-items:center;justify-content:center;gap:7px;min-width:86px;min-height:46px;border:1px solid var(--line);border-radius:10px;padding:10px 12px;background:white;color:var(--ink);font-size:14px}.trainer-day-mark>span:first-child{font-size:20px}.trainer-day-mark.present.is-selected{background:var(--red);color:#fff;border-color:var(--red)}.trainer-day-mark.absent.is-selected{background:#e7ebf1;border-color:#8793a7}.trainer-day-mark.is-pending{outline:2px solid #d69a2d;outline-offset:1px}.trainer-day-mark:focus-visible{outline:3px solid #e76377;outline-offset:3px}.trainer-day-pupil .history-cell{flex-basis:100%;margin:0;text-align:left;font-size:12px}.trainer-day-report p{line-height:1.6}.trainer-day-report h3{margin-top:0}@media(max-width:480px){.home-debtor-line{align-items:flex-start;flex-wrap:wrap}.home-debtor-line strong{padding-left:34px}.debt-selection-tools{align-items:stretch}.debt-selection-tools #debtSelectionCount{flex-basis:100%}.trainer-day-pupil{padding:13px}.trainer-day-name{flex-basis:100%}.trainer-day-actions{width:100%}.trainer-day-mark{flex:1;min-width:74px;padding:9px}.trainer-day-picker .field{min-width:0;flex-basis:100%}}
