.main-frame{overflow:auto;background:#f7f7f7;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Arial,sans-serif;color:#191919}.page{padding:28px}.title,.welcome{display:flex;justify-content:space-between;gap:20px;align-items:flex-start;margin-bottom:22px}.title h1,.welcome h1{font-size:var(--ry-font-page);margin:0 0 7px}.title p,.welcome p,.welcome span{margin:0;color:#666;font-size:var(--ry-font-secondary)}.welcome p{font-size:var(--ry-font-body);color:#222}.welcome>div:last-child b,.welcome>div:last-child em{display:block;margin-bottom:12px}.welcome em{font-family:Georgia,serif;color:#555}.red,.white{border:0;border-radius:7px;padding:11px 15px;font-weight:700}.red{background:#b90020;color:#fff}.white{background:#fff;border:1px solid #ddd}.full{width:100%;margin-top:10px}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:13px;margin-bottom:16px}.stat,.card{background:#fff;border:1px solid #ddd;border-radius:10px;box-shadow:0 2px 8px #0000000c}.stat{padding:18px}.stat span,.stat small{display:block;color:#666;font-size:var(--ry-font-caption)}.stat b{display:block;font-size:var(--ry-font-page);margin:5px 0}.twocol{display:grid;grid-template-columns:1fr 1fr;gap:13px}.card>h2{font-size:var(--ry-font-body);margin:0;padding:14px 16px;border-bottom:1px solid #eee}.appt{display:grid;grid-template-columns:55px 1fr auto;gap:12px;align-items:center;padding:8px 16px;border-bottom:1px solid #eee}.appt>i{font-style:normal;text-align:center;background:#fff0ee;color:#b90020;font-size:var(--ry-font-section);font-weight:800;border-radius:7px;padding:5px}.appt>i small,.appt div small,.appt div b{display:block}.appt div small{font-size:var(--ry-font-caption);color:#777}.appt div b{font-size:var(--ry-font-caption);margin:2px 0}.appt>span{font-size:var(--ry-font-caption);background:#fde7ea;color:#b90020;padding:7px;border-radius:5px}.msg{display:grid;grid-template-columns:35px 1fr auto;gap:10px;padding:12px 16px;border-bottom:1px solid #eee}.msg i{font-style:normal}.msg-avatar{width:35px;height:35px;border-radius:50%;display:grid;place-items:center;background:#353535;color:#fff;font-size:var(--ry-font-caption);font-weight:700}.msg-avatar.alert{background:#b90020;font-size:var(--ry-font-body)}.msg b,.msg small{display:block}.msg b{font-size:var(--ry-font-caption)}.msg small,.msg time{font-size:var(--ry-font-caption);color:#777}.people{display:grid;grid-template-columns:31% 1fr;gap:14px}.list{padding-top:14px}.list>input,.list>select{width:calc(100% - 28px);box-sizing:border-box;margin:0 14px 8px;padding:10px;border:1px solid #ddd;border-radius:6px}.list>div button{width:100%;display:grid;grid-template-columns:40px 1fr 15px;align-items:center;border:0;border-top:1px solid #eee;background:#fff;text-align:left;padding:13px}.list button.sel{background:#fff0f2;border-left:3px solid #b90020}.list button i,.phead>i{border-radius:50%;background:#f4e0e4;color:#b90020;display:grid;place-items:center;font-style:normal;font-weight:800}.list button i{width:34px;height:34px;font-size:var(--ry-font-caption)}.list button span b,.list button span small{display:block}.list button span small{font-size:var(--ry-font-caption);color:#777}.phead{display:grid;grid-template-columns:55px 1fr auto;gap:12px;align-items:center;padding:18px}.phead>i{width:54px;height:54px}.phead h2{margin:0;font-size:var(--ry-font-section)}.phead h2 small{font-size:var(--ry-font-caption);background:#e5f4e9;color:#27864c;padding:6px;border-radius:14px}.phead p{font-size:var(--ry-font-caption);color:#777}.phead button{background:#fff;border:1px solid #ddd;padding:10px;border-radius:6px}.tabs{display:flex;gap:20px;padding:12px 15px;border-top:1px solid #eee;border-bottom:1px solid #eee;font-size:var(--ry-font-caption);white-space:nowrap;overflow:hidden}.tabs b{color:#b90020}.pdata{display:grid;grid-template-columns:1fr 1fr;gap:14px;padding:18px}.pdata section p{display:flex;justify-content:space-between;font-size:var(--ry-font-caption)}.pdata aside{grid-column:1/-1;display:flex;justify-content:space-between;background:#fff6f7;border-left:3px solid #b90020;padding:13px;font-size:var(--ry-font-caption)}.pdata article{border:1px solid #ddd;border-radius:8px;padding:14px;font-size:var(--ry-font-caption)}.pdata article b{float:right}.train{display:grid;grid-template-columns:1fr 26%;gap:14px}.week{padding:18px}.week>h2{padding:0;border:0}.week>p{font-size:var(--ry-font-caption);color:#777}.week>#days{display:grid;grid-template-columns:repeat(7,1fr);gap:7px}.week section{min-height:160px;background:#f7f7f7;border:1px solid #e4e4e4;border-radius:8px;padding:10px}.week section.focus{background:#fff9fa;border-color:#e5a1ad}.week section>b,.week section>small{display:block;font-size:var(--ry-font-caption)}.week section>small{color:#888;margin:5px 0 12px}.week section button{width:100%;border:0;border-left:3px solid #b90020;background:#fff;text-align:left;padding:8px;border-radius:6px}.week section button small,.week section button b{display:block;font-size:var(--ry-font-caption)}.week section button b{font-size:var(--ry-font-caption);margin:8px 0}.week section em{display:block;margin-top:35px;font-size:var(--ry-font-caption);color:#aaa;font-style:normal}.side{padding:20px}.side label{font-size:var(--ry-font-caption);color:#b90020;font-weight:800}.side h2{font-size:var(--ry-font-section)}.side p{color:#666;font-size:var(--ry-font-caption);margin-bottom:25px}.side dl{display:grid;grid-template-columns:80px 1fr;gap:12px;font-size:var(--ry-font-caption)}.side dt{color:#777}.side dd{margin:0;font-weight:700}.empty{padding:50px;text-align:center;color:#777}@media(max-width:1050px){.stats{grid-template-columns:1fr 1fr}.twocol,.people,.train{grid-template-columns:1fr}.week>#days{overflow-x:auto;grid-template-columns:repeat(7,120px)}}
.filterbar{display:flex;align-items:center;gap:26px;background:#fff;border:1px solid #ddd;border-radius:10px;padding:10px 14px;margin-bottom:14px;font-size:var(--ry-font-caption)}.filterbar b{background:#fde7ea;color:#b90020;padding:10px;border-radius:7px}.filterbar select{margin-left:auto;padding:6px;border:1px solid #ddd;border-radius:6px;background:white}.eventgrid{display:grid;grid-template-columns:minmax(0,1fr) 27%;gap:14px}.eventrow,.orderrow{width:100%;display:grid;grid-template-columns:58px 1fr 18px;gap:14px;align-items:center;background:#fff;border:1px solid #ddd;border-radius:10px;padding:16px;margin-bottom:10px;text-align:left}.eventrow.picked,.orderrow.picked{border-color:#df9ba8;border-left:3px solid #b90020}.eventrow>i{font-style:normal;background:#fff0ed;border-radius:8px;text-align:center;padding:7px;color:#b90020}.eventrow>i b,.eventrow>i small{display:block}.eventrow>i b{font-size:var(--ry-font-section)}.eventrow>i small{font-size:var(--ry-font-caption);font-weight:800}.eventrow p{margin:0 0 5px}.eventrow em,.orderrow em{font-style:normal;font-size:var(--ry-font-caption);font-weight:700;background:#eee;padding:5px 8px;border-radius:12px}.eventrow em.green{background:#e5f4e9;color:#27864c}.eventrow strong,.eventrow span,.eventrow small,.orderrow strong,.orderrow span,.orderrow small{display:block}.eventrow strong,.orderrow strong{font-size:var(--ry-font-body);margin:5px 0}.eventrow span,.eventrow small,.orderrow span,.orderrow small{font-size:var(--ry-font-caption);color:#777;margin-top:4px}.eventrow>b,.orderrow>b{font-size:25px;color:#b90020}.orderrow>i{font-style:normal;width:44px;height:44px;border-radius:50%;display:grid;place-items:center;background:#fde7ea;color:#b90020;font-size:var(--ry-font-section)}.financegrid{display:grid;grid-template-columns:minmax(0,1fr) 25%;gap:14px}.financehead{display:grid;grid-template-columns:1fr 235px 115px;gap:10px;align-items:center;padding:18px}.financehead h2{margin:0;font-size:var(--ry-font-section)}.financehead p{margin:5px 0 0;color:#777;font-size:var(--ry-font-caption)}.financehead input,.financehead select{padding:10px;border:1px solid #ddd;border-radius:7px;background:white}.bookings{width:100%;border-collapse:collapse;font-size:var(--ry-font-caption)}.bookings th{text-align:left;background:#fafafa;color:#666;font-size:var(--ry-font-caption);padding:12px;border-top:1px solid #eee;border-bottom:1px solid #eee}.bookings td{padding:13px 12px;border-bottom:1px solid #eee}.bookings em{font-style:normal;font-weight:700;padding:5px 9px;border-radius:12px}.booked{background:#e5f4e9;color:#27864c}.open{background:#fff0dc;color:#a26600}.bookings .plus{color:#27864c}.bookings .minus{color:#b90020}.moneybox{padding:18px;margin-bottom:14px}.moneybox h2{padding:0;border:0;margin:0 0 16px}.moneybox p{display:flex;justify-content:space-between;border-bottom:1px solid #eee;padding:10px 0;margin:0;font-size:var(--ry-font-caption)}
@media(max-width:1050px){.eventgrid,.financegrid{grid-template-columns:1fr}.financehead{grid-template-columns:1fr}.bookings{min-width:760px}.financegrid>.card{overflow:auto}}

.modalback{position:fixed;inset:0;z-index:100;background:#0006;display:grid;place-items:center;padding:25px}.modal{width:min(720px,95vw);max-height:88vh;overflow:auto;background:#fff;border-radius:12px;box-shadow:0 20px 60px #0005}.modalhead{display:flex;justify-content:space-between;align-items:center;padding:17px 20px;border-bottom:1px solid #eee}.modalhead h2{margin:0;font-size:var(--ry-font-section)}.modalhead button{border:0;background:none;font-size:25px;cursor:pointer}.modalbody{padding:18px 20px}.formgrid{display:grid;grid-template-columns:1fr 1fr;gap:13px}.formgrid label,.datefield{font-size:var(--ry-font-caption);font-weight:700;color:#555}.formgrid input,.formgrid select,.formgrid textarea,.datefield input,.attlist select,.regadd select{display:block;width:100%;box-sizing:border-box;margin-top:5px;padding:10px;border:1px solid #d8d8d8;border-radius:7px;background:#fff;font:inherit}.formgrid .wide{grid-column:1/-1}.formgrid textarea{min-height:70px}.modalactions{display:flex;justify-content:flex-end;gap:8px;margin-top:18px}.datefield{display:block;max-width:220px;margin-bottom:15px}.attlist,.reglist{border-top:1px solid #eee}.attlist>div,.reglist>div{display:grid;grid-template-columns:1fr 170px;gap:15px;align-items:center;padding:10px 3px;border-bottom:1px solid #eee}.attlist b,.attlist small,.reglist b,.reglist small{display:block}.attlist small,.reglist small{font-size:var(--ry-font-caption);color:#777}.reglist em{font-style:normal;background:#e5f4e9;color:#27864c;border-radius:14px;padding:6px 9px;text-align:center;font-size:var(--ry-font-caption)}.regadd{display:grid;grid-template-columns:1fr auto;gap:9px;align-items:end;margin-bottom:15px}.regadd select{margin:0}@media(max-width:700px){.formgrid{grid-template-columns:1fr}.formgrid .wide{grid-column:auto}.attlist>div{grid-template-columns:1fr}}

.membertabs{gap:0;padding:0 12px;overflow-x:auto}.membertabs button{border:0;background:none;padding:13px 11px 11px;font-size:var(--ry-font-caption);color:#555;white-space:nowrap;cursor:pointer;border-bottom:2px solid transparent}.membertabs button.active{color:#b90020;border-bottom-color:#b90020;font-weight:800}.membertabbody{min-height:330px}.tabcards{display:grid;grid-template-columns:1fr 1fr;gap:14px;padding:18px}.tabcards section,.tabsection{border:1px solid #e1e1e1;border-radius:8px;padding:16px}.tabcards h3,.tabsection h3{margin:0 0 15px;font-size:var(--ry-font-body)}.tabcards dl{display:grid;grid-template-columns:130px 1fr;gap:11px;font-size:var(--ry-font-caption)}.tabcards dt{color:#777}.tabcards dd{margin:0;font-weight:600}.timeline p{display:grid;grid-template-columns:90px 1fr;gap:12px;border-left:2px solid #eed0d6;padding:3px 0 15px 13px;margin:0;font-size:var(--ry-font-caption)}.timeline span{color:#555}.checklist{display:grid;gap:7px}.checklist label{display:flex;align-items:center;gap:8px;padding:9px 10px;background:#fafafa;border:1px solid #eee;border-radius:6px;font-size:var(--ry-font-caption)}.checklist input{accent-color:#b90020}.tabaction{grid-column:1/-1;text-align:right}.tabsection{margin:18px}.muted{font-size:var(--ry-font-caption);color:#777;margin:-8px 0 15px}.historyrow{display:grid;grid-template-columns:42px 1fr auto;gap:12px;align-items:center;border-top:1px solid #eee;padding:12px 4px}.historyrow>i{width:34px;height:34px;display:grid;place-items:center;border-radius:50%;background:#f7e7ea;color:#b90020;font-style:normal;font-weight:800;font-size:var(--ry-font-caption)}.historyrow span b,.historyrow span small{display:block}.historyrow span b{font-size:var(--ry-font-caption)}.historyrow span small{font-size:var(--ry-font-caption);color:#777;margin-top:3px}.historyrow em{font-style:normal;background:#e5f4e9;color:#27864c;border-radius:12px;padding:5px 8px;font-size:var(--ry-font-caption)}.historyrow strong{font-size:var(--ry-font-caption)}.historyrow .due{color:#b90020}.emptyline{background:#fafafa;border:1px dashed #ddd;border-radius:7px;padding:25px;text-align:center;color:#888;font-size:var(--ry-font-caption);margin-bottom:12px}@media(max-width:800px){.tabcards{grid-template-columns:1fr}.tabaction{grid-column:auto}}
.compactitems{border-top:1px solid #eee;margin-top:15px;padding-top:8px}.compactitems p{display:flex;justify-content:space-between;gap:10px;font-size:var(--ry-font-caption);margin:0;padding:7px 0;border-bottom:1px solid #f0f0f0}.compactitems span{color:#666}.compactitems h3{font-size:var(--ry-font-caption);margin:8px 0 4px;color:#222}.compactitems{max-height:220px;overflow:auto}
/* v0.11.3: Inhaltsbereich muss innerhalb des feststehenden Grundframes vertikal scrollbar sein. */
.main-frame{
  overflow-x:hidden !important;
  overflow-y:auto !important;
  min-height:0 !important;
  -webkit-overflow-scrolling:touch;
  scrollbar-gutter:stable;
}
.page{
  min-height:max-content;
  padding-bottom:56px;
}
.eventgrid,.financegrid,.people,.train{align-items:start}
.eventgrid>.card{min-height:0}

.matline{width:100%;display:grid;grid-template-columns:1fr auto;gap:8px;text-align:left;border:0;border-bottom:1px solid #f0f0f0;background:#fff;padding:8px 0;cursor:pointer;font-size:var(--ry-font-caption)}.matline span small{display:block;color:#999;margin-top:3px}.matline b{font-size:var(--ry-font-caption)}.workflowhint{display:flex;justify-content:space-between;gap:12px;background:#faf3f4;border:1px solid #efd6db;border-radius:7px;padding:11px 12px;margin-top:15px;font-size:var(--ry-font-caption)}.workflowhint span{color:#777}.danger{border:1px solid #c00020;background:white;color:#b90020;border-radius:7px;padding:9px 12px;font-weight:700;cursor:pointer}.grow{flex:1}

.clickrow{cursor:pointer}.clickrow:hover td{background:#fff9fa}.sourcebadge{display:inline-block;margin-left:6px;background:#f7e7ea;color:#b90020;border-radius:10px;padding:3px 6px;font-size:var(--ry-font-caption)}.claim{width:100%;display:grid;grid-template-columns:1fr auto;gap:8px;text-align:left;border:0;border-bottom:1px solid #eee;background:#fff;padding:10px 0;cursor:pointer}.claim span,.claim small{display:block}.claim span{font-size:var(--ry-font-caption)}.claim small{font-size:var(--ry-font-caption);color:#888;margin-top:3px}.claim b{font-size:var(--ry-font-caption);color:#b90020}.paidbtn{border:1px solid #27864c;background:#edf8f0;color:#27864c;border-radius:7px;padding:9px 12px;font-weight:700;cursor:pointer}

.commgrid{display:grid;grid-template-columns:minmax(220px,31%) minmax(0,1fr);gap:14px;align-items:start}.channelcard,.messagecard{min-height:540px}.commtitle{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.commtitle h2{margin:0}.commtitle span{background:#f5e9eb;color:#a4001d;border-radius:14px;padding:4px 8px;font-size:var(--ry-font-caption)}.channellist{display:grid;gap:5px}.channel{border:0;background:white;border-radius:8px;padding:10px;display:grid;grid-template-columns:30px 1fr;text-align:left;gap:8px;cursor:pointer}.channel:hover,.channel.sel{background:#faf0f2}.channel.sel{box-shadow:inset 3px 0 #b50020}.channelicon{font-size:var(--ry-font-section);color:#b50020}.channel b,.channel small{display:block}.channel b{font-size:var(--ry-font-caption)}.channel small{font-size:var(--ry-font-caption);color:#888;margin-top:4px}.messagehead{display:flex;justify-content:space-between;gap:14px;border-bottom:1px solid #eee;padding-bottom:12px}.messagehead h2{margin:0 0 4px}.messagehead p,.messagehead small{margin:0;color:#777}.messages{display:grid;gap:8px;padding:12px 0}.message{display:grid;grid-template-columns:34px 1fr;gap:10px;padding:10px;border:1px solid #eee;border-radius:8px}.message.pinned{background:#fff8f0;border-color:#ead6b7}.avatar{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:#8f001a;color:white;font-size:var(--ry-font-caption);font-weight:800}.messageby{display:flex;align-items:center;gap:8px;font-size:var(--ry-font-caption)}.messageby span{color:#999}.messageby em{font-size:var(--ry-font-caption);color:#a46600;background:#fff0cf;padding:3px 5px;border-radius:8px}.message p{margin:7px 0 3px;white-space:pre-wrap;font-size:var(--ry-font-caption);line-height:1.5}.msgactions{opacity:0}.message:hover .msgactions{opacity:1}.msgactions button{border:0;background:transparent;color:#888;font-size:var(--ry-font-caption);cursor:pointer;padding:2px 8px 2px 0}.composer{border-top:1px solid #eee;padding-top:12px;display:grid;grid-template-columns:1fr auto;gap:8px;align-items:end}.composer textarea{grid-column:1/-1;min-height:70px;resize:vertical}.composer label{font-size:var(--ry-font-caption);color:#777}.empty{padding:40px 10px;text-align:center;color:#999}@media(max-width:850px){.commgrid{grid-template-columns:1fr}.channelcard,.messagecard{min-height:0}}

/* v0.14.2 Kommunikation nach der freigegebenen Referenz */
.commpage{padding-bottom:70px}.commstats{margin-bottom:14px}.comm3{display:grid;grid-template-columns:minmax(220px,24%) minmax(430px,1fr) minmax(220px,24%);gap:14px;align-items:start}.channelsPane,.conversation,.channelInfo{padding:0;overflow:hidden;min-height:560px}.paneTitle{display:flex;justify-content:space-between;align-items:center;padding:18px 16px 12px}.paneTitle h2{margin:0}.paneTitle button,.conversationHead>button{border:0;background:transparent;color:#b90020;font-size:var(--ry-font-section);font-weight:800;cursor:pointer}.channelSection>small{display:block;padding:12px 16px 7px;color:#8b8585;font-size:var(--ry-font-caption);font-weight:800;letter-spacing:1px}.channel{width:100%;border:0;background:white;padding:10px 13px;display:grid;grid-template-columns:30px 1fr auto;gap:8px;text-align:left;align-items:center;cursor:pointer}.channel.sel{background:#fbebee;box-shadow:inset 3px 0 #bd0023}.channelicon{font-size:var(--ry-font-body)}.channel b,.channel small{display:block}.channel b{font-size:var(--ry-font-caption)}.channel small{font-size:var(--ry-font-caption);color:#999;margin-top:3px}.channel em{font-style:normal;background:#bd0023;color:#fff;width:20px;height:20px;border-radius:50%;display:grid;place-items:center;font-size:var(--ry-font-caption)}.ghostrow{display:grid;grid-template-columns:30px 1fr;gap:8px;padding:10px 13px;font-size:var(--ry-font-caption)}.ghostrow small{display:block;color:#999;font-size:var(--ry-font-caption);margin-top:3px}.conversationHead{display:flex;justify-content:space-between;padding:18px 18px 14px;border-bottom:1px solid #eee}.conversationHead small{color:#b90020;font-weight:800;font-size:var(--ry-font-caption);letter-spacing:1px}.conversationHead h2{margin:5px 0 3px;font-size:var(--ry-font-body)}.conversationHead p{margin:0;color:#888;font-size:var(--ry-font-caption)}.conversation .messages{padding:0}.conversation .message{border:0;border-bottom:1px solid #eee;border-radius:0;padding:16px 18px}.conversation .message.pinned{background:#fff7f8}.messageby span{font-size:var(--ry-font-caption)}.msgfoot{display:flex;gap:8px;align-items:center}.msgfoot button{border:0;background:transparent;color:#b90020;padding:0;font-size:var(--ry-font-caption);font-weight:700;cursor:pointer}.msgfoot span{margin-left:auto;color:#aaa;font-size:var(--ry-font-caption)}.conversation .composer{margin:0 18px 18px}.channelInfo{padding:18px 16px;text-align:left}.channelInfo>h2{margin:0 0 18px}.bigChannelIcon{width:48px;height:48px;border-radius:50%;background:#f9e6e9;display:grid;place-items:center;margin:0 auto 10px;font-size:var(--ry-font-section)}.channelInfo>h3{text-align:center;margin:8px 0}.channelInfo>p{text-align:center;color:#777;font-size:var(--ry-font-caption);line-height:1.45}.channelInfo dl{margin:22px 0}.channelInfo dl div{display:flex;justify-content:space-between;border-bottom:1px solid #eee;padding:10px 0;font-size:var(--ry-font-caption)}.channelInfo dt{color:#888}.channelInfo dd{font-weight:700;text-align:right}.channelInfo dl+h3{text-align:left;font-size:var(--ry-font-caption)}.groupchips{display:flex;gap:6px;flex-wrap:wrap;margin:10px 0 18px}.groupchips span{background:#f9e7ea;color:#a90020;border-radius:12px;padding:5px 8px;font-size:var(--ry-font-caption);font-weight:700}@media(max-width:1100px){.comm3{grid-template-columns:240px minmax(0,1fr)}.channelInfo{grid-column:1/-1;min-height:0}}@media(max-width:760px){.comm3{grid-template-columns:1fr}.channelInfo{grid-column:auto}}

/* v0.14.3: Icons aus der Kommunikations-Referenz als saubere Line-Icons */
.commSvg{display:inline-grid;place-items:center;width:21px;height:21px;color:#252525}
.commSvg svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.65;stroke-linecap:round;stroke-linejoin:round}
.channel.sel .commSvg,.conversationHead .commSvg{color:#b90020}
.channelicon .commSvg{width:22px;height:22px}
.channelicon .commSvg svg{width:20px;height:20px}
.conversationHead h2 .commSvg{vertical-align:-5px;margin-right:4px}
.bigChannelIcon .commSvg{width:27px;height:27px;color:#9d001c}
.bigChannelIcon .commSvg svg{width:25px;height:25px}
.ghostrow>.commSvg{margin-top:1px}

.announceEmoji{display:inline-block;font-size:var(--ry-font-section);line-height:1;vertical-align:-2px}
.channelicon .announceEmoji{font-size:var(--ry-font-section)}
.conversationHead h2 .announceEmoji{font-size:var(--ry-font-section);margin-right:4px;vertical-align:-2px}
.bigChannelIcon .announceEmoji{font-size:var(--ry-font-section)}

.knowledgegrid{display:grid;grid-template-columns:minmax(190px,22%) minmax(280px,32%) minmax(340px,1fr);gap:14px;align-items:start}.knowledgeSide,.knowledgeList,.knowledgeDetail{padding:0;min-height:560px;overflow:hidden}.kcat{width:100%;border:0;background:#fff;border-bottom:1px solid #f0f0f0;padding:11px 15px;display:flex;justify-content:space-between;text-align:left;cursor:pointer}.kcat.sel{background:#fbebee;box-shadow:inset 3px 0 #b90020}.kcat b,.kcat small{display:block}.kcat b{font-size:var(--ry-font-caption)}.kcat small{font-size:var(--ry-font-caption);color:#999;margin-top:3px}.kcat em{font-style:normal;font-size:var(--ry-font-caption);color:#888}.knowledgeSearch{position:relative;padding:14px;border-bottom:1px solid #eee}.knowledgeSearch input{width:100%;box-sizing:border-box;padding-right:28px}.knowledgeSearch span{position:absolute;right:25px;top:22px}.articleRow{width:100%;display:block;text-align:left;border:0;border-bottom:1px solid #eee;background:#fff;padding:14px;cursor:pointer}.articleRow:hover,.articleRow.sel{background:#fff8f9}.articleRow>small{font-size:var(--ry-font-caption);color:#b90020;font-weight:800;text-transform:uppercase}.articleRow>b{display:block;margin:5px 0;font-size:var(--ry-font-caption)}.articleRow p{font-size:var(--ry-font-caption);color:#777;line-height:1.4;margin:0 0 8px}.articleRow div span,.articleTags span{display:inline-block;background:#f4f1f1;border-radius:10px;padding:4px 7px;margin:2px 4px 2px 0;font-size:var(--ry-font-caption)}.knowledgeDetail{padding:20px}.articleHead small{font-size:var(--ry-font-caption);color:#b90020;font-weight:800;text-transform:uppercase}.articleHead h2{font-size:var(--ry-font-section);margin:7px 0}.articleHead p{color:#777;line-height:1.5}.articleMeta{display:flex;gap:18px;border-top:1px solid #eee;border-bottom:1px solid #eee;padding:10px 0;margin:14px 0;font-size:var(--ry-font-caption);color:#888}.articleBody{font-size:var(--ry-font-caption);line-height:1.7;min-height:220px}.articleTags{margin:18px 0}.articleActions{display:flex;gap:8px}@media(max-width:1050px){.knowledgegrid{grid-template-columns:220px 1fr}.knowledgeDetail{grid-column:1/-1;min-height:0}}@media(max-width:720px){.knowledgegrid{grid-template-columns:1fr}.knowledgeDetail{grid-column:auto}}

.doccard{padding:0;overflow:hidden}.docToolbar{display:grid;grid-template-columns:1fr 190px 170px;gap:8px;padding:14px;border-bottom:1px solid #eee}.doctable small{display:block;color:#999;font-size:var(--ry-font-caption);margin-top:3px}.docactions{white-space:nowrap}.docactions button{border:0;background:transparent;color:#a90020;font-size:var(--ry-font-caption);font-weight:700;cursor:pointer;margin-right:7px}.uploadField{border:1px dashed #c9b7ba;border-radius:8px;padding:14px!important;background:#fffafb}.uploadField input{margin-top:8px}.uploadHint{font-size:var(--ry-font-caption);color:#888}@media(max-width:800px){.docToolbar{grid-template-columns:1fr}.doctable{min-width:760px}.doccard{overflow-x:auto}}

.taskgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;align-items:start}.taskcol{padding:0;overflow:hidden;min-height:280px}.taskitem{display:block;width:100%;border:0;border-bottom:1px solid #eee;background:#fff;text-align:left;padding:13px 15px;cursor:pointer}.taskitem:hover{background:#fff8f9}.taskitem>div{display:flex;justify-content:space-between;gap:8px}.taskitem b{font-size:var(--ry-font-caption)}.taskitem p{font-size:var(--ry-font-caption);color:#777;line-height:1.4}.taskitem small{font-size:var(--ry-font-caption);color:#999}.priority{font-size:var(--ry-font-caption);text-transform:uppercase;border-radius:10px;padding:3px 6px;background:#eee}.priority.hoch{background:#f9dfe4;color:#a90020}.reportgrid,.admingrid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;align-items:start}.admingrid{grid-template-columns:2fr 1fr}.reportbox{min-height:230px}.bigmetric{font-size:var(--ry-font-page);font-weight:800;margin:20px 16px 0}.reportbox>p,.admincopy{font-size:var(--ry-font-caption);color:#888;line-height:1.6;padding:0 16px}.metricrows{padding:10px 16px}.metricrows span{display:flex;justify-content:space-between;padding:10px 0;border-bottom:1px solid #eee;font-size:var(--ry-font-caption)}.settingscard{max-width:760px}.settingsform{display:grid;grid-template-columns:1fr 1fr;gap:14px;padding:18px}.settingsform label{font-size:var(--ry-font-caption);font-weight:700}.settingsform input{display:block;width:100%;box-sizing:border-box;margin-top:6px}.settingsform .wide{grid-column:1/-1}@media(max-width:900px){.taskgrid,.reportgrid,.admingrid{grid-template-columns:1fr}.settingsform{grid-template-columns:1fr}}

:root{--admin-radius:10px}.adminLaunch{display:grid;grid-template-columns:1fr 1fr;gap:18px;max-width:1120px}.adminTile{min-height:135px;text-align:left;padding:22px;border:1px solid #ddd6d6;border-radius:var(--admin-radius);background:#fff;cursor:pointer;box-shadow:0 1px 3px #00000008}.adminTile:hover{border-color:#b90020;background:#fffafb}.adminTile b{display:block;font-size:var(--ry-font-section);margin-bottom:18px}.adminTile span{font-size:var(--ry-font-caption)}.adminRightsGrid{display:grid;grid-template-columns:250px 1fr;gap:15px;align-items:start}.adminList,.rightsPane{padding:0;overflow:hidden}.adminGroup{width:100%;border:0;border-bottom:1px solid #eee;background:#fff;text-align:left;padding:12px 16px;font-weight:700;cursor:pointer}.adminGroup.sel,.adminGroup:hover{background:#fff1f3;color:#a90020}.adminRole{padding:10px 16px;border-bottom:1px solid #eee;font-size:var(--ry-font-caption)}.paneTitle.second{margin-top:12px;border-top:4px solid #f4f2f2}.permissionGrid{display:grid;grid-template-columns:1fr 1fr;padding:10px 16px}.permissionGrid label{display:flex;gap:10px;padding:11px 5px;border-bottom:1px solid #eee}.permissionGrid b,.permissionGrid small{display:block}.permissionGrid b{font-size:var(--ry-font-caption)}.permissionGrid small{font-size:var(--ry-font-caption);color:#888;margin-top:3px}.appearanceCard{max-width:780px}.appearanceCard input[type=range]{width:100%}.adminNote{padding:0 18px 18px;color:#888;font-size:var(--ry-font-caption)}.auditCard{padding:0;overflow:auto}.backupGrid{display:grid;grid-template-columns:1fr 1fr;gap:18px;max-width:1000px}.backupBox{padding:22px}.backupBox h2{font-size:var(--ry-font-body)}.backupBox p{font-size:var(--ry-font-caption);color:#777;line-height:1.6;margin-bottom:22px}.backupBox form{display:flex;flex-direction:column;gap:15px}.compactUI .card{padding-top:0}.compactUI .page{padding-top:18px}@media(max-width:800px){.adminLaunch,.backupGrid,.adminRightsGrid{grid-template-columns:1fr}.permissionGrid{grid-template-columns:1fr}}

.memberCreateForm{max-height:78vh;overflow-y:auto}.memberSection{padding:0 2px 14px;margin-bottom:12px;border-bottom:1px solid #eee}.memberSection h3{font-size:var(--ry-font-caption);margin:2px 0 12px;color:#171717}.memberNumberHint,.consentIntro{font-size:var(--ry-font-caption);color:#777;margin:8px 0}.consentGrid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.consentGrid label{display:flex;align-items:center;gap:7px;border:1px solid #eadfe1;border-radius:8px;padding:10px;background:#fffafb;font-size:var(--ry-font-caption);font-weight:700}.consentGrid input{width:auto}@media(max-width:700px){.consentGrid{grid-template-columns:1fr 1fr}}

.readonlyField{background:#f3f1f1!important;color:#6f6f6f!important;cursor:not-allowed;font-weight:800}.personalMemberGrid .wide{grid-column:1/-1}

.memberCreateForm .fullField{width:100%;box-sizing:border-box;min-height:38px}

.memberSectionTitle{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.memberSectionTitle h3{margin:0}.karatePlus{width:28px;height:28px;border:0;border-radius:50%;background:#a90020;color:white;font-size:var(--ry-font-section);cursor:pointer}.karatePlus:disabled{opacity:.35}.karateEntry{position:relative;padding:7px 38px 7px 0;border-bottom:1px dashed #e4dddd}.removeKarateEntry{position:absolute;right:2px;top:26px;width:26px;height:26px;border:0;border-radius:50%;cursor:pointer}.karateCounter{display:block;text-align:right;color:#888;font-size:var(--ry-font-caption);margin-top:6px}

.memberCreateForm .formgrid>label>select.fullField{display:block;width:100%!important;height:38px!important;min-height:38px!important;box-sizing:border-box!important;margin-top:5px;padding:0 10px;border:1px solid #ddd;border-radius:6px;background:#fff}
.membershipAdmin{width:100%;max-width:none;padding:0;overflow:hidden}.membershipTypeList{padding:8px 16px 16px}.membershipTypeRow{display:grid;grid-template-columns:minmax(220px,1fr) 90px 90px 110px;gap:10px;align-items:center;padding:10px 0;border-bottom:1px solid #eee}.membershipTypeRow>input{width:100%;box-sizing:border-box}.membershipTypeRow label{font-size:var(--ry-font-caption)}

.peopleTopTabs{display:flex;gap:8px;margin:0 0 14px}.peopleTopTabs button{border:1px solid #ddd;background:#fff;border-radius:8px;padding:9px 14px;font-weight:700;cursor:pointer}.peopleTopTabs button.active{background:#861722;color:#fff;border-color:#861722}.peopleTopTabs span:not(:empty){display:inline-flex;min-width:20px;height:20px;align-items:center;justify-content:center;border-radius:10px;background:#b5202e;color:#fff;margin-left:6px}.prospectHint{padding:12px 14px;border-bottom:1px solid #eee}.prospectHint small{display:block;color:#888;margin-top:3px}.prospectStatus{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:16px 0}.prospectStatus span{background:#f6f4f3;padding:12px;border-radius:8px;color:#777;font-size:var(--ry-font-caption)}.prospectStatus b{color:#222}.callout{padding:18px;background:#f8f1f1;border-left:4px solid #8f1722;border-radius:8px;margin:18px 0}.callout p{color:#666}.activationCode{font:700 20px monospace;letter-spacing:1px;padding:14px;background:#f5f3f2;border-radius:8px;margin:8px 0 14px;word-break:break-all}

.adminTrainingCard{padding:22px}.adminTrainingCard .paneTitle{display:flex;justify-content:space-between;align-items:flex-start;gap:20px}.adminTrainingCard .paneTitle h2{margin:0 0 5px}.adminTrainingList{margin-top:18px;border-top:1px solid #eee}.adminTrainingRow{display:grid;grid-template-columns:minmax(220px,1fr) 110px 110px auto auto;gap:12px;align-items:center;padding:14px 0;border-bottom:1px solid #eee}.adminTrainingRow>div{display:flex;flex-direction:column;gap:4px}.adminTrainingRow small,.adminTrainingRow>span{color:#777;font-size:var(--ry-font-caption)}.dangerText{color:#8f1722!important}

.trainingOfferList{margin-top:18px;border-top:1px solid #eee}.trainingOfferRow{display:grid;grid-template-columns:minmax(210px,1.2fr) minmax(180px,1fr) minmax(180px,1fr) 80px;gap:18px;align-items:center;padding:15px 0;border-bottom:1px solid #eee}.trainingOfferRow>div,.trainingOfferRow>span{display:flex;flex-direction:column;gap:4px}.trainingOfferRow small{font-size:var(--ry-font-caption);color:#777}.trainingOfferRow em{font-style:normal;text-align:center;border-radius:999px;padding:6px 9px;font-size:var(--ry-font-caption);font-weight:700}.trainingOfferRow em.on{background:#edf6ef;color:#347443}.trainingOfferRow em.off{background:#f1f1f1;color:#777}

.trainingOfferRow{grid-template-columns:minmax(190px,1.2fr) minmax(170px,1fr) minmax(170px,1fr) 75px auto}.trainingActions{display:flex!important;flex-direction:row!important;gap:6px!important}.trainingActions button{white-space:nowrap}

.trainingGroupOpen{border:0;background:transparent;padding:0;text-align:left;display:flex;flex-direction:column;gap:4px;cursor:pointer;font:inherit;color:inherit}.trainingGroupOpen b{color:#8f1722}.trainingGroupOpen:hover b{text-decoration:underline}.groupDetailStats{display:grid;grid-template-columns:repeat(2,minmax(0,220px));gap:14px;margin-bottom:18px}.groupDetailGrid{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(300px,.75fr);gap:18px;align-items:start}.groupOffers{margin-top:16px;border-top:1px solid #eee}.groupOffer{display:grid;grid-template-columns:minmax(180px,1.3fr) minmax(150px,.9fr) 70px auto auto;gap:10px;align-items:center;padding:14px 0;border-bottom:1px solid #eee}.groupOffer>div,.groupOffer>span{display:flex;flex-direction:column;gap:3px}.groupOffer small,.groupMemberList small{font-size:var(--ry-font-caption);color:#777}.groupOffer em{font-style:normal;text-align:center;border-radius:999px;padding:6px 8px;font-size:var(--ry-font-caption);font-weight:700}.groupOffer em.on{background:#edf6ef;color:#347443}.groupOffer em.off{background:#f1f1f1;color:#777}.groupMemberList{margin-top:16px}.groupMemberList>div{display:flex;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid #eee}.groupMemberList p{margin:0;display:flex;flex-direction:column}.groupMemberList .avatar{width:34px;height:34px;border-radius:50%;background:#f0e7e8;display:grid;place-items:center;font-size:var(--ry-font-caption);font-weight:700;color:#8f1722}

.weekHead{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.weekHead h2{margin-bottom:4px}.weekNav{display:flex;gap:7px;flex-wrap:wrap;justify-content:flex-end}.weekNav button{font-size:var(--ry-font-caption);padding:8px 10px}.week #days section{cursor:pointer}.week #days section:hover{background:#faf6f6}.dayTrainings{display:flex;flex-direction:column;gap:6px;margin-top:7px}.dayTrainings button{width:100%}

.calendarBtn{font-size:var(--ry-font-section)!important;line-height:1;padding:7px 11px!important;min-width:38px}

.ryuCalendarPopup{width:360px;max-width:88vw;padding:5px}
.ryuCalTop{display:grid;grid-template-columns:40px 1fr 40px;align-items:center;background:#76131d;color:#fff;border-radius:12px 12px 0 0;padding:13px 10px}
.ryuCalTop strong{text-align:center;font-size:var(--ry-font-body);letter-spacing:.2px}.ryuCalTop button{border:0;background:transparent;color:#fff;font-size:27px;cursor:pointer;border-radius:8px;height:36px}.ryuCalTop button:hover{background:rgba(255,255,255,.12)}
.ryuCalWeek,.ryuCalGrid{display:grid;grid-template-columns:repeat(7,1fr)}.ryuCalWeek{background:#f5eeee;padding:10px 8px 7px;color:#76131d;font-size:var(--ry-font-caption);font-weight:800;text-align:center}
.ryuCalGrid{padding:8px;background:#fff}.ryuCalDay{position:relative;border:0;background:transparent;aspect-ratio:1;border-radius:50%;cursor:pointer;font:inherit;color:#272727;display:grid;place-items:center}.ryuCalDay:hover{background:#f6e9ea;color:#76131d}.ryuCalDay.other{color:#b9b3b3}.ryuCalDay.today{box-shadow:inset 0 0 0 2px #9c1b28;color:#76131d;font-weight:800}.ryuCalDay.selected{background:#76131d!important;color:#fff!important;font-weight:800}.ryuCalDay i{position:absolute;bottom:5px;width:4px;height:4px;border-radius:50%;background:#b32635}.ryuCalDay.selected i{background:#fff}
.ryuCalFoot{border-top:1px solid #eee;display:flex;align-items:center;justify-content:space-between;padding:11px 10px 5px;color:#777;font-size:var(--ry-font-caption)}.ryuCalFoot span{display:flex;align-items:center;gap:6px}.ryuCalFoot span i{width:6px;height:6px;border-radius:50%;background:#b32635}.ryuCalFoot button{border:0;background:transparent;color:#76131d;font-weight:800;cursor:pointer;padding:6px 8px;border-radius:7px}.ryuCalFoot button:hover{background:#f6e9ea}

/* v0.27.3: kompakter Kalender, X in der Kalender-Kopfleiste */
.ryuCalendarPopup{width:180px!important;max-width:82vw!important;padding:0!important}
.ryuCalTop{position:relative;grid-template-columns:25px 1fr 25px!important;padding:7px 25px 7px 5px!important;border-radius:8px 8px 0 0!important}
.ryuCalTop strong{font-size:var(--ry-font-caption)!important}.ryuCalTop button{font-size:var(--ry-font-body)!important;height:23px!important;border-radius:5px!important}
.ryuCalTop .ryuCalClose{position:absolute;right:3px;top:4px;width:22px;height:22px!important;font-size:var(--ry-font-body)!important;line-height:18px}
.ryuCalWeek{padding:6px 4px 4px!important;font-size:var(--ry-font-caption)!important}
.ryuCalGrid{padding:4px!important}.ryuCalDay{font-size:var(--ry-font-caption)!important}.ryuCalDay i{bottom:2px!important;width:3px!important;height:3px!important}
.ryuCalFoot{padding:6px 5px 2px!important;font-size:var(--ry-font-caption)!important}.ryuCalFoot span{gap:3px!important}.ryuCalFoot span i{width:4px!important;height:4px!important}.ryuCalFoot button{font-size:var(--ry-font-caption)!important;padding:3px 4px!important}

.modal:has(.ryuCalendarPopup) .modalHead:not(.ryuCalTop),
.modalbox:has(.ryuCalendarPopup) > .modalHead,
.modalBox:has(.ryuCalendarPopup) > .modalHead{display:none!important}
.modal:has(.ryuCalendarPopup),.modalbox:has(.ryuCalendarPopup),.modalBox:has(.ryuCalendarPopup){width:auto!important;min-width:0!important;padding:0!important}

/* v0.27.4: Kalender-Popup komplett randlos */
.ryuCalendarPopup{
  width:168px!important;
  max-width:80vw!important;
  margin:0!important;
  padding:0!important;
  border:0!important;
  border-radius:8px!important;
  overflow:hidden!important;
  box-shadow:0 12px 34px rgba(0,0,0,.22)!important;
}
.modal:has(.ryuCalendarPopup),
.modalbox:has(.ryuCalendarPopup),
.modalBox:has(.ryuCalendarPopup),
.dialog:has(.ryuCalendarPopup),
.dialogBox:has(.ryuCalendarPopup){
  width:168px!important;
  min-width:0!important;
  max-width:80vw!important;
  margin:0!important;
  padding:0!important;
  border:0!important;
  background:transparent!important;
  box-shadow:none!important;
  overflow:visible!important;
}
.modal:has(.ryuCalendarPopup) > *:not(.ryuCalendarPopup),
.modalbox:has(.ryuCalendarPopup) > *:not(.ryuCalendarPopup),
.modalBox:has(.ryuCalendarPopup) > *:not(.ryuCalendarPopup){
  margin:0!important;
}
.ryuCalTop{border-radius:8px 8px 0 0!important}
.ryuCalGrid{padding:3px!important}
.ryuCalFoot{padding:5px 4px 2px!important}

/* v0.27.8 – Auswahlfelder verwenden exakt die Grundmaße der normalen
   formgrid-Inputs (z.B. Beginn/Ende), ohne feste Zusatzhöhe. */
.formgrid select.trainingSameAsInput{
  -webkit-appearance:none!important;
  appearance:none!important;
  display:block!important;
  width:100%!important;
  box-sizing:border-box!important;
  height:auto!important;
  min-height:0!important;
  margin-top:5px!important;
  padding:10px 38px 10px 10px!important;
  border:1px solid #d8d8d8!important;
  border-radius:7px!important;
  background-color:#fff!important;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%23222222' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E")!important;
  background-repeat:no-repeat!important;
  background-position:right 12px center!important;
  background-size:14px 14px!important;
  font:inherit!important;
  line-height:normal!important;
}

/* v0.27.9 – einheitliche Feldmaße im Dialog „Training anlegen“.
   Alle Inputs und die vier Auswahlfelder erhalten dieselbe sichtbare Höhe. */
.modalbody .formgrid input,
.modalbody .formgrid select.trainingSameAsInput{
  height:44px!important;
  min-height:44px!important;
  max-height:44px!important;
  box-sizing:border-box!important;
  border-radius:7px!important;
  margin-top:5px!important;
  font:inherit!important;
  line-height:22px!important;
}
.modalbody .formgrid input{
  padding:10px!important;
}
.modalbody .formgrid select.trainingSameAsInput{
  padding:10px 38px 10px 10px!important;
}

/* v0.27.10 – Training anlegen: ALLE sichtbaren Controls exakt gleich hoch.
   Safari bekommt für select/date/time dieselbe feste Box-Geometrie. */
.trainingCreateExact .formgrid input,
.trainingCreateExact .formgrid select{
  -webkit-appearance:none!important;
  appearance:none!important;
  display:block!important;
  width:100%!important;
  height:48px!important;
  min-height:48px!important;
  max-height:48px!important;
  box-sizing:border-box!important;
  margin:5px 0 0!important;
  padding:0 14px!important;
  border:1px solid #d8d8d8!important;
  border-radius:7px!important;
  background-color:#fff!important;
  color:#191919!important;
  font:inherit!important;
  font-weight:600!important;
  line-height:46px!important;
}
.trainingCreateExact .formgrid select{
  padding-right:40px!important;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%23222222' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E")!important;
  background-repeat:no-repeat!important;
  background-position:right 14px center!important;
  background-size:14px 14px!important;
}
.trainingCreateExact .formgrid input[type="date"],
.trainingCreateExact .formgrid input[type="time"]{
  line-height:normal!important;
}
.trainingCreateExact .formgrid input::-webkit-date-and-time-value{
  text-align:left!important;
  min-height:0!important;
}
.trainingCreateExact .formgrid input::-webkit-datetime-edit{
  padding:0!important;
}

/* v0.27.11 – kompaktere, weiterhin EXAKT einheitliche Feldhöhe */
.trainingCreateExact .formgrid input,
.trainingCreateExact .formgrid select{
  height:38px!important;
  min-height:38px!important;
  max-height:38px!important;
  padding-top:0!important;
  padding-bottom:0!important;
  line-height:36px!important;
}
.trainingCreateExact .formgrid input[type="date"],
.trainingCreateExact .formgrid input[type="time"]{
  line-height:normal!important;
}

/* v0.27.12 – eine gemeinsame Feld-Komponente für „Training anlegen“.
   Alle Controls haben exakt dieselbe Außenhöhe; Inhalt ist vertikal zentriert.
   Die Safari-internen Date/Time-Elemente werden separat normalisiert. */
.trainingCreateExact{
  --training-control-h:40px;
  --training-control-pad-x:14px;
}
.trainingCreateExact .formgrid input,
.trainingCreateExact .formgrid select{
  -webkit-appearance:none!important;
  appearance:none!important;
  display:block!important;
  width:100%!important;
  height:var(--training-control-h)!important;
  min-height:var(--training-control-h)!important;
  max-height:var(--training-control-h)!important;
  box-sizing:border-box!important;
  margin:5px 0 0!important;
  border:1px solid #d8d8d8!important;
  border-radius:7px!important;
  background-color:#fff!important;
  color:#191919!important;
  font:inherit!important;
  font-weight:600!important;
  font-size:var(--ry-font-secondary)!important;
}
.trainingCreateExact .formgrid input{
  padding:0 var(--training-control-pad-x)!important;
  line-height:calc(var(--training-control-h) - 2px)!important;
}
.trainingCreateExact .formgrid select{
  padding:0 40px 0 var(--training-control-pad-x)!important;
  line-height:normal!important;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%23222222' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E")!important;
  background-repeat:no-repeat!important;
  background-position:right 14px center!important;
  background-size:14px 14px!important;
}
/* Safari: Datum und Uhrzeit besitzen eigene innere Edit-Boxen. */
.trainingCreateExact .formgrid input[type="date"],
.trainingCreateExact .formgrid input[type="time"]{
  padding:0 var(--training-control-pad-x)!important;
  line-height:normal!important;
}
.trainingCreateExact .formgrid input[type="date"]::-webkit-datetime-edit,
.trainingCreateExact .formgrid input[type="time"]::-webkit-datetime-edit{
  display:flex!important;
  align-items:center!important;
  height:calc(var(--training-control-h) - 2px)!important;
  min-height:calc(var(--training-control-h) - 2px)!important;
  padding:0!important;
  margin:0!important;
}
.trainingCreateExact .formgrid input[type="date"]::-webkit-date-and-time-value,
.trainingCreateExact .formgrid input[type="time"]::-webkit-date-and-time-value{
  display:flex!important;
  align-items:center!important;
  height:100%!important;
  min-height:0!important;
  padding:0!important;
  margin:0!important;
  text-align:left!important;
}
.trainingCreateExact .formgrid input[type="date"]::-webkit-calendar-picker-indicator,
.trainingCreateExact .formgrid input[type="time"]::-webkit-calendar-picker-indicator{
  margin:0!important;
  align-self:center!important;
}

.adminVenueList{display:flex;flex-direction:column;gap:8px;margin-top:16px}
.adminVenueRow{display:grid;grid-template-columns:minmax(260px,1fr) 110px 80px auto auto;gap:12px;align-items:center;padding:13px 14px;border:1px solid #ece7e7;border-radius:10px;background:#fff}
.adminVenueRow>div{display:flex;flex-direction:column;gap:3px}.adminVenueRow small{color:#777}
@media(max-width:900px){.adminVenueRow{grid-template-columns:1fr auto}.adminVenueRow>span,.adminVenueRow>em{display:none}}

.eventFilters button{border:0;background:transparent;padding:8px 12px;border-radius:8px;font:inherit;cursor:pointer}
.eventFilters button.active{background:#7b1020;color:#fff;font-weight:700}
.eventFilters select{cursor:pointer}
.eventTodayLine{font-size:var(--ry-font-secondary);color:#777;margin:-2px 0 12px 2px}

/* Training bearbeiten: "Training aktiv" bleibt bewusst ein echtes Kontrollkästchen. */
.trainingCreateExact .trainingActiveCheck{
  display:flex;
  align-items:center;
  gap:9px;
  min-height:40px;
  cursor:pointer;
}
.trainingCreateExact .trainingActiveCheck input[type="checkbox"]{
  appearance:auto !important;
  -webkit-appearance:checkbox !important;
  width:16px !important;
  height:16px !important;
  min-width:16px !important;
  min-height:16px !important;
  max-width:16px !important;
  max-height:16px !important;
  padding:0 !important;
  margin:0 !important;
  border:initial !important;
  box-shadow:none !important;
  background:initial !important;
}

/* Veranstaltung anlegen/bearbeiten: einheitliche Kontrollgrößen. */
.eventFormExact{
  --event-control-h:40px;
}
.eventFormExact .formgrid input:not([type="checkbox"]),
.eventFormExact .formgrid select{
  box-sizing:border-box !important;
  width:100% !important;
  height:var(--event-control-h) !important;
  min-height:var(--event-control-h) !important;
  max-height:var(--event-control-h) !important;
  padding:0 12px !important;
  margin:0 !important;
  font:inherit !important;
  line-height:var(--event-control-h) !important;
  border-radius:8px !important;
}
.eventFormExact .formgrid select{
  -webkit-appearance:none !important;
  appearance:none !important;
  padding-right:34px !important;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5 6 6.5l5-5' fill='none' stroke='%23666' stroke-width='1.5' stroke-linecap='round'/%3E%3C/svg%3E") !important;
  background-repeat:no-repeat !important;
  background-position:right 12px center !important;
}
.eventFormExact input[type="date"]::-webkit-datetime-edit,
.eventFormExact input[type="datetime-local"]::-webkit-datetime-edit,
.eventFormExact input[type="date"]::-webkit-date-and-time-value,
.eventFormExact input[type="datetime-local"]::-webkit-date-and-time-value{
  min-height:var(--event-control-h);
  display:flex;
  align-items:center;
  padding:0;
  line-height:normal;
}
.eventFormExact textarea{
  box-sizing:border-box !important;
  width:100% !important;
  min-height:72px !important;
  font:inherit !important;
  border-radius:8px !important;
}

.eventFormExact .eventCancelCheck{display:flex;align-items:center;gap:9px;min-height:32px;cursor:pointer}
.eventFormExact .eventCancelCheck input[type="checkbox"]{-webkit-appearance:checkbox !important;appearance:auto !important;width:16px !important;height:16px !important;min-width:16px !important;min-height:16px !important;padding:0 !important;margin:0 !important}

.materialCatalogList{display:flex;flex-direction:column;gap:9px}
.materialCatalogList>button{width:100%;display:flex;align-items:center;gap:12px;text-align:left;border:1px solid #e8e3e1;background:#fff;border-radius:10px;padding:13px 14px;cursor:pointer}
.materialCatalogList>button span{flex:1;display:flex;flex-direction:column;gap:4px}.materialCatalogList>button small{color:#777}.materialCatalogList>button strong{color:#85121c}.materialCatalogList>button i{font-style:normal;font-size:var(--ry-font-section)}

/* Materialbereiche: aufklappbare Produkt-Untermenüs im bestehenden Layout */
.materialAccordion{margin-bottom:10px}
.materialAccordion>.orderrow{margin-bottom:0}
.materialChevron{min-width:22px;text-align:center;font-size:var(--ry-font-body)}
.materialSubmenu{display:none;margin:0 10px;padding:8px 0 4px 26px;border-left:2px solid #eee}
.materialSubmenu.open{display:flex;flex-direction:column;gap:6px}
.materialSubmenu>button{display:flex;align-items:center;gap:10px;width:100%;padding:10px 12px;border:1px solid #ece7e5;border-radius:9px;background:#fff;text-align:left;cursor:pointer}
.materialSubmenu>button:hover{background:#faf7f6}
.materialSubmenu>button span{display:flex;flex:1;flex-direction:column;gap:2px}
.materialSubmenu>button small{color:#777;font-size:var(--ry-font-caption)}
.materialSubmenu>button strong{color:#85121c;white-space:nowrap}
.materialSubmenu>button i{font-style:normal;color:#777}
.materialSubEmpty{padding:10px 12px;color:#888;font-size:var(--ry-font-secondary)}

/* Verwaltung > Materialbeschaffung > Sonstiges */
.materialProductAdminForm .materialOtherDesignation{display:none;grid-column:1 / -1}
.materialProductAdminForm .materialOtherDesignation.show{display:flex}
.materialProductAdminForm .materialOtherDesignation input{width:100%;min-width:0}

/* Produktbezeichnung: Überschrift und Eingabefeld bewusst untereinander */
.materialProductAdminForm .materialOtherDesignation.show{
  display:flex;
  flex-direction:column;
  align-items:stretch;
  gap:7px;
}
.materialProductAdminForm .materialOtherDesignation>span{display:block;width:100%}
.materialProductAdminForm .materialOtherDesignation>input{display:block;width:100%}

/* Produktbilder Materialbeschaffung */
.materialProductThumb{width:42px;height:42px;flex:0 0 42px;border-radius:8px;object-fit:cover;border:1px solid #e5dfdc;background:#f7f4f2;cursor:zoom-in}
.materialProductThumb.placeholder{display:flex;align-items:center;justify-content:center;color:#8b1c24;cursor:default}
.materialImageField{grid-column:1 / -1;display:flex;flex-direction:column;align-items:flex-start;gap:7px}
.materialImageField>span{font-weight:600}
.materialImageField input[type=file]{width:100%}
.materialImageField small{color:#777}
.materialProductPreview{width:76px;height:76px;object-fit:cover;border-radius:10px;border:1px solid #e5dfdc;cursor:zoom-in}
.materialImageLargeWrap{padding:6px}
.materialImageLarge{display:block;max-width:min(760px,80vw);max-height:68vh;width:auto;height:auto;margin:0 auto;border-radius:12px;object-fit:contain}

/* Produktbilder auch direkt in Materialbeschaffung */
.materialOrderedRow{display:flex!important;align-items:center;gap:10px}
.materialOrderedRow>span:not(.materialProductThumb){flex:1}
.materialOrderProductImage{display:flex;align-items:center;gap:12px;margin:0 0 16px;padding:10px 12px;background:#faf8f7;border:1px solid #ece6e3;border-radius:10px}
.materialOrderProductImage img{width:64px;height:64px;object-fit:cover;border-radius:9px;border:1px solid #e1d9d5;cursor:zoom-in}
.materialOrderProductImage small{color:#777}

/* Deutlich sichtbare Bildvorschau im aufgeklappten Produkt-Untermenü */
.materialSubmenu>button .materialSubmenuPreview{
  width:72px;
  height:72px;
  flex:0 0 72px;
  border-radius:10px;
  object-fit:cover;
  border:1px solid #ddd5d1;
  background:#f7f4f2;
  cursor:zoom-in;
}
.materialSubmenu>button{
  min-height:92px;
}
@media(max-width:900px){
  .materialSubmenu>button .materialSubmenuPreview{
    width:60px;
    height:60px;
    flex-basis:60px;
  }
}

/* Bestellung anlegen: zentrierte Produktbild-Vorschau oberhalb Bereich/Produkt */
.materialNewOrderPreview{
  min-height:112px;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:6px;
  margin:0 auto 16px;
  text-align:center;
}
.materialNewOrderPreview img{
  width:92px;
  height:92px;
  object-fit:cover;
  border-radius:11px;
  border:1px solid #ddd5d1;
  background:#f7f4f2;
  cursor:zoom-in;
}
.materialNewOrderPreview small{color:#777;font-size:var(--ry-font-caption)}
.materialNewOrderPreviewEmpty{
  width:92px;
  height:92px;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:8px;
  box-sizing:border-box;
  border:1px dashed #d8cfcb;
  border-radius:11px;
  background:#faf8f7;
  color:#999;
  font-size:var(--ry-font-caption);
}

/* Hauptframe Materialbeschaffung: Bildvorschau direkt im aufgeklappten Untermenü */
.materialSubmenu .materialCatalogProductRow{
  display:flex;
  align-items:center;
  gap:14px;
  min-height:94px;
}
.materialSubmenu .materialCatalogPreview{
  display:block;
  width:74px;
  height:74px;
  flex:0 0 74px;
  object-fit:cover;
  border-radius:10px;
  border:1px solid #ddd5d1;
  background:#f7f4f2;
  cursor:zoom-in;
}
.materialSubmenu span.materialCatalogPreview.placeholder{
  display:flex;
  align-items:center;
  justify-content:center;
  color:#8b1c24;
  cursor:default;
}
.materialSubmenu .materialCatalogProductRow>span:last-child{
  flex:1;
  min-width:0;
}

/* Hauptframe Materialbeschaffung: Vorschau wie im Verwaltungs-Untermenü */
.materialSubmenu .materialCatalogProductRow{
  min-height:62px;
  gap:10px;
}
.materialSubmenu .materialCatalogPreview{
  width:42px;
  height:42px;
  flex:0 0 42px;
  border-radius:8px;
}

/* Finanzen: manuelle Buchung */
.financeCreateForm .formgrid{align-items:end}
.financeCreateForm input,.financeCreateForm select{box-sizing:border-box}

/* Verwaltung > Mitgliedschaft > Mitgliedsgebühren */
.adminSubTabs{display:flex;gap:8px;margin:0 0 18px}
.adminSubTabs button{border:1px solid #ddd5d1;background:#fff;border-radius:9px;padding:9px 15px;font-weight:650;cursor:pointer}
.adminSubTabs button.active{background:#8b1c24;border-color:#8b1c24;color:#fff}
.membershipFeeShort{min-width:150px;color:#666;font-size:var(--ry-font-secondary)}
.membershipFeeList{display:flex;flex-direction:column;gap:8px}
.membershipFeeRow{width:100%;display:grid;grid-template-columns:1fr 180px 20px;align-items:center;text-align:left;border:1px solid #e5dfdc;background:#fff;border-radius:10px;padding:12px 14px;cursor:pointer}
.membershipFeeRow:hover{background:#faf8f7}
.membershipFeeRow span{display:flex;flex-direction:column;gap:3px}
.membershipFeeRow span:last-child{display:block;font-size:var(--ry-font-section);color:#8b1c24;text-align:right}
.membershipFeeRow small{color:#777}

/* Mitgliedsarten: Beitrag und Intervall direkt bearbeiten */
.membershipTypeFeeList{display:flex;flex-direction:column;gap:10px}
.membershipTypeFeeRow{display:grid!important;grid-template-columns:minmax(190px,1.5fr) 125px 150px 75px auto auto!important;gap:10px;align-items:end!important}
.membershipTypeFeeRow label{display:flex;flex-direction:column;gap:6px;font-size:var(--ry-font-caption);font-weight:650;color:#5f5753}
.membershipTypeFeeRow input,.membershipTypeFeeRow select{height:40px;box-sizing:border-box;border:1px solid #d8d0cc;border-radius:8px;background:#fff;padding:0 10px;font:inherit;color:#25211f}
.membershipTypeFeeRow .membershipActive{height:40px;flex-direction:row;align-items:center;gap:7px;font-size:var(--ry-font-secondary)}
.membershipTypeFeeRow .membershipActive input{width:16px;height:16px;padding:0}

/* Mitgliedsarten: kompakter Löschen-Button statt Deaktivieren */
.membershipTypeFeeRow{grid-template-columns:minmax(190px,1.5fr) 125px 150px 75px auto 34px!important}
.membershipDeleteX{width:32px;height:32px;padding:0;border:0;background:transparent;color:#8b1c24;font-size:24px;line-height:30px;font-weight:500;cursor:pointer;border-radius:7px}
.membershipDeleteX:hover{background:#f5e8e9}

/* Mitgliedsbeiträge: Statusfarben und zusätzliche Vertragswerte */
.membershipTypeFeeRow{grid-template-columns:minmax(160px,1.35fr) 100px 130px 95px 145px 65px auto 34px!important}
.bookings tr.financeOpen>td{background:#fff1dc!important}
.bookings tr.financePaid>td{background:#e7f5e9!important}
.bookings tr.financeOverdue>td{background:#fde8e7!important}

/* Mitgliedsarten: konkretes Startdatum für den Beitragsrhythmus */
.membershipTypeFeeRow{grid-template-columns:minmax(155px,1.25fr) 100px 125px 145px 145px 65px auto 34px!important}

/* Finance admin submenu: explicit visibility, independent of material catalogue state */
[data-admin-finance-cat]{display:none}
[data-admin-finance-cat].open{display:block}
.financeCategoryRow{width:100%}

/* v0.33.1 Finanz-Zeitraumfilter */
.financeTitleBlock{display:flex;flex-direction:column;align-items:flex-start;gap:6px}.financeTitleBlock p{margin-bottom:2px}.financePeriodSelect{min-width:190px;max-width:260px}.financeSearchTools{display:flex;align-items:center;gap:10px}.financeSearchTools input{min-width:220px}

/* v0.33.2 Dreifacher Zeitraumfilter */
.financePeriodControls{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.financePeriodControls .financePeriodSelect{min-width:145px;max-width:190px}

/* v0.33.3 Finanzfilter Layout */
.financehead{align-items:flex-start!important}
.financeTitleBlock{flex:1 1 auto;min-width:0}
.financePeriodControls{display:flex!important;flex-direction:row!important;align-items:center!important;gap:8px!important;flex-wrap:nowrap!important;margin-top:4px}
.financePeriodControls .financePeriodSelect{min-width:145px;max-width:190px}
.financeSearchTools{align-self:flex-start!important;display:flex!important;align-items:center!important;gap:10px!important;margin-top:0!important}
.financeSearchTools input{min-width:220px}

/* v0.33.4 Materialbeschaffung: Produktaktion unterhalb der Kopfzeile */
.adminMaterialTopAction{display:flex;justify-content:flex-end;margin:-4px 0 14px}

/* v0.34.1 Buchung bearbeiten: Löschaktion sichtbar unten */
.financeEditActions{display:flex;align-items:center;width:100%}
.financeEditActions .financeActionSpacer{flex:1}
.financeDeleteButton{border:1px solid #a51f2d;background:#fff;color:#8f1825;border-radius:10px;padding:10px 14px;font-weight:700;cursor:pointer}
.financeDeleteButton:hover{background:#fff4f4}

/* v0.34.2 Löschaktion unterhalb der normalen Formularaktionen */
.financeDeleteRow{border-top:1px solid #eee;margin:4px 26px 22px;padding-top:16px;display:flex;align-items:center;gap:14px}
.financeDeleteRow span{font-size:var(--ry-font-caption);color:#777;line-height:1.35}
.financeDeleteRow .financeDeleteButton{flex:0 0 auto;display:inline-flex!important;visibility:visible!important;opacity:1!important}

/* v0.35.0 Wissensartikel-Anhänge */
.knowledgeAttachField input[type=file]{display:block;width:100%;margin-top:6px;padding:10px;border:1px solid #d8d8d8;border-radius:10px;background:#fff}
.knowledgeAttachField small{display:block;margin-top:6px;color:#777}
.knowledgeExistingAttachments,.articleAttachments{margin-top:8px;padding-top:12px;border-top:1px solid #eee}
.knowledgeAttachmentRow{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:9px 0;border-bottom:1px solid #f0f0f0}
.knowledgeAttachmentRow>span{display:flex;align-items:center;gap:8px;min-width:0}
.knowledgeAttachmentRow>span:first-child{overflow-wrap:anywhere}
.knowledgeAttachmentRow button{border:1px solid #ddd;background:#fff;border-radius:8px;padding:6px 9px;cursor:pointer}
.articleAttachments h3{margin:0 0 6px}

/* v0.36.0 Administration Wissensdatenbank – Mainframe basiert auf Training */
.adminKnowledgeCategoryInfo{cursor:default;text-align:left}

/* v0.36.1 Mitglieder – Karate & Veröffentlichung */
.membertabs{overflow-x:auto;scrollbar-width:thin}
.memberKarateHistory{display:flex;flex-direction:column}
.memberKarateRow{display:grid;grid-template-columns:38px minmax(150px,1fr) minmax(150px,1fr);align-items:center;gap:14px;padding:13px 0;border-bottom:1px solid #eee}
.memberKarateRow i{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:#f4f1f1;font-style:normal;font-weight:700}
.memberKarateRow span{display:flex;flex-direction:column;gap:3px}
.memberKarateRow small{color:#777}
.memberPublicationList{display:flex;flex-direction:column}
.memberPublicationRow{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:13px 0;border-bottom:1px solid #eee}
.memberPublicationRow em{font-style:normal;font-weight:700}
.memberPublicationRow em.on{color:#356b42}
.memberPublicationRow em.off{color:#888}

/* v0.36.2 Mitglieder bearbeiten, Passbild, kompakte Veröffentlichung */
.memberPublicationRow{padding:7px 0;font-size:var(--ry-font-secondary)}
.memberPublicationRow em{font-size:var(--ry-font-caption)}
.phead>i.hasPhoto{overflow:hidden;padding:0}
.phead>i.hasPhoto img{width:100%;height:100%;object-fit:cover}
.memberPhotoEdit{display:flex;align-items:center;gap:18px}
.memberPhotoPreview{width:86px;height:108px;border:1px solid #ddd;border-radius:10px;overflow:hidden;background:#f4f1f1;display:grid;place-items:center;font-weight:700;font-size:var(--ry-font-section);flex:0 0 auto}
.memberPhotoPreview img{width:100%;height:100%;object-fit:cover}
.memberPhotoEdit label{display:flex;flex-direction:column;gap:7px;font-size:var(--ry-font-secondary)}
.memberPhotoEdit small{color:#777;font-weight:400}

/* v0.37.0 Passbilder in Mitgliederliste + Graduierung */
#ml button>i.hasPhoto{overflow:hidden;padding:0}
#ml button>i.hasPhoto img{width:100%;height:100%;object-fit:cover}
.dashboardGrade{display:flex;align-items:center;gap:12px;margin-top:14px}
.dashboardGradeGraphic{width:112px;height:42px;border-radius:0;background:transparent;border:0;display:grid;place-items:center;overflow:visible}
.dashboardGradeGraphic img{width:100%;height:100%;object-fit:contain}
.dashboardGradeGraphic span{font-size:var(--ry-font-caption);color:#888}
.dashboardGrade>div:last-child{display:flex;flex-direction:column;gap:2px}
.dashboardGrade small{font-size:var(--ry-font-caption);opacity:.72}
.dashboardGrade b{font-size:var(--ry-font-secondary)}
.graduationThumb{width:74px;height:38px;border:1px solid #ddd;border-radius:6px;overflow:hidden;background:#fff;display:grid;place-items:center}
.graduationThumb img{width:100%;height:100%;object-fit:contain}

/* v0.37.3 Graduierungs-Voraussetzungen */
.graduationSeminarCheck{display:flex!important;flex-direction:row!important;align-items:center;gap:9px;padding-top:8px;font-size:var(--ry-font-secondary)}
.graduationSeminarCheck input{width:auto!important}

/* v0.37.6 Buchhaltung / Kassenbericht */
.accountingAreaSelect{min-width:190px}
.accountingReport{display:grid;gap:20px}
.accountingReportSection{background:#fff;border:1px solid #e5e5e5;border-radius:12px;padding:18px}
.accountingReportSection h2{margin:0 0 12px}
.accountingReportSection tfoot td{border-top:1px solid #ddd;padding-top:10px}
.accountingWarning{padding:14px 16px;border:1px solid #d8b3b3;border-radius:10px;background:#fff8f8}
@media print{
 body *{visibility:hidden!important}
 .main-frame,.main-frame *,.accountingReportPage,.accountingReportPage *{visibility:visible!important}
 .main-frame{position:absolute!important;left:0!important;top:0!important;width:100%!important;height:auto!important;overflow:visible!important;background:#fff!important}
 .accountingReportPage{padding:0!important}
 .noPrint,.sidebar-frame,.top-frame{display:none!important}
 .accountingReportSection{break-inside:avoid;border:0;padding:0;margin:0 0 24px}
 .accountingReportSection table{width:100%}
}

/* v0.37.7 Kassenbericht: Einnahmen und Ausgaben getrennt */
.accountingReportPart{margin-top:16px}
.accountingReportPart h3{margin:0 0 8px;font-size:var(--ry-font-body)}
.accountingAreaBalance{display:flex;justify-content:flex-end;gap:22px;margin-top:12px;padding-top:10px;border-top:2px solid #222;font-size:var(--ry-font-secondary)}
@media print{
 .accountingReportPart{break-inside:avoid}
 .accountingAreaBalance{break-inside:avoid}
}

/* v0.37.8 Kassenbericht Kopf / Geschäftsjahr */
.accountingReportTop{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;margin-bottom:8px}
.accountingReportTop h1{margin:0 0 8px}
.accountingBackButton{margin-left:auto}
.accountingBusinessYear label{display:flex;align-items:center;gap:10px;font-size:var(--ry-font-secondary);font-weight:700}
.accountingBusinessYear select{min-width:110px;padding:8px 34px 8px 10px;border:1px solid #d8d8d8;border-radius:8px;background:#fff}
.accountingPrintRow{display:flex;justify-content:flex-end;margin:4px 0 18px}
@media print{
 .accountingReportTop{display:block}
 .accountingBusinessYear select{border:0;padding:0;font-weight:700;appearance:none}
}

/* v0.38.0 Neues Mitglied in der Reiterzeile */
.peopleTopTabs .peopleTopNewMember{margin-left:auto}

/* v0.38.1 Aktionsbuttons eine Zeile höher */
.accountingInlineAction{display:flex;align-items:center;gap:18px;flex-wrap:wrap}
.accountingInlineAction p{margin:0}
.accountingBusinessYear{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.adminMaterialInlineAction{display:flex;align-items:center;justify-content:space-between;gap:18px;margin:0 0 18px}
.adminMaterialInlineAction span{font-weight:700}

/* v0.38.2 Buchhaltung/Kassenbericht: Aktionsbuttons rechts untereinander */
.accountingRightActions{margin-left:auto;display:flex;flex-direction:column;align-items:flex-end;gap:10px}
.accountingRightActions .accountingBackButton{margin-left:0}

/* v0.39.0 Datensicherung */
.backupGrid{grid-template-columns:repeat(2,minmax(0,1fr))}
.backupRestoreBox{grid-column:1/-1}
.backupEstimate{margin:14px 0;padding:12px 14px;border-radius:10px;background:#f5f5f5;font-size:var(--ry-font-secondary)}
.backupContents{display:grid;gap:7px;margin:0 0 18px}
.backupContents>div{display:grid;grid-template-columns:22px 1fr auto;gap:8px;align-items:center;padding:7px 0;border-bottom:1px solid #eee;font-size:var(--ry-font-secondary)}
.backupContents .included>span{font-weight:900}.backupContents .excluded{opacity:.55}.backupContents small{white-space:nowrap}
@media(max-width:900px){.backupGrid{grid-template-columns:1fr}.backupRestoreBox{grid-column:auto}}

/* v0.39.1 Kassenbericht: Geschäftsjahr optisch zum Drucken-Button ausrichten */
.accountingReportPage .accountingBusinessYear{margin-top:21px}

/* v0.39.2 Personen & Mitglieder: linke Mitgliederliste ca. 1,5 cm schmaler */
@media(min-width:1051px){
  .people{grid-template-columns:calc(31% - 57px) minmax(0,1fr)}
}

/* v0.39.3 Personen & Mitglieder: Button + Neues Mitglied wieder korrekt darstellen */
.peopleTopTabs .peopleTopNewMember{
  margin-left:auto;
  background:#b90020;
  color:#fff;
  border-color:#b90020;
  flex:0 0 auto;
  white-space:nowrap;
}

/* v0.40.0 Buchhaltung: Belegscans */
.receiptTableButton{border:1px solid #d8d8d8;background:#fff;border-radius:8px;padding:6px 9px;font-weight:800;white-space:nowrap}
.receiptTableButton.emptyReceipt{font-weight:700;color:#666}
.financeReceiptInline{margin:14px 0 0;padding:12px 14px;border:1px solid #e3e3e3;border-radius:10px;display:flex;align-items:center;gap:12px}
.financeReceiptInline span{color:#777;font-size:var(--ry-font-secondary)}.financeReceiptInline button{margin-left:auto}
.financeReceiptList{display:grid;gap:8px;margin:10px 0 16px}
.financeReceiptRow{display:grid;grid-template-columns:28px minmax(0,1fr) auto auto;align-items:center;gap:10px;padding:10px;border:1px solid #e4e4e4;border-radius:10px}
.financeReceiptRow div{display:flex;flex-direction:column;min-width:0}.financeReceiptRow b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.financeReceiptRow small{color:#777}
.buttonLike{text-decoration:none;display:inline-flex;align-items:center;justify-content:center}
.financeReceiptDelete{border:0;background:transparent;color:#9e001c;font-weight:800}
.financeReceiptUpload{display:flex;align-items:end;gap:12px;padding:14px;background:#f6f6f6;border-radius:10px}
.financeReceiptUpload label{display:flex;flex-direction:column;gap:6px;flex:1}.financeReceiptUpload small{color:#777}

/* v0.40.2 – vorhandene Header-/Sidebar-PNGs in Safari möglichst pixelstabil rendern.
   Keine Änderung an Bilddateien oder Frame-Geometrie. */
.header-frame img,
.sidebar-frame > img,
.header-frame .header-image,
.sidebar-frame .sidebar-background{
  image-rendering:auto;
  -webkit-transform:translateZ(0);
  transform:translateZ(0);
  backface-visibility:hidden;
}

/* v0.40.6: Mitgliedsnummer und Geschlecht im Mitgliedsformular gleich groß */
.memberCreateForm .personalMemberGrid label > input.readonlyField,
.memberCreateForm .personalMemberGrid label > select[name="gender"]{
  width:100%;
  height:48px;
  min-height:48px;
  box-sizing:border-box;
}

/* v0.42.2 – Kontrollkästchen einheitlich wie „Veranstaltung absagen“ */
input[type="checkbox"]{
  -webkit-appearance:checkbox !important;
  appearance:auto !important;
  width:16px !important;
  height:16px !important;
  min-width:16px !important;
  min-height:16px !important;
  max-width:16px !important;
  max-height:16px !important;
  padding:0 !important;
  margin:0 !important;
  box-sizing:border-box !important;
  flex:0 0 16px !important;
}
.checkline,
.eventCancelCheck,
.trainingActiveCheck,
.graduationSeminarCheck,
.membershipActive{
  align-items:center !important;
}

/* v0.42.3 – Datenbank-Einlesebericht */
.dbLoadReport>p{margin-top:0}.dbLoadReport h3{margin:14px 0 7px}.dbReportList{border:1px solid #e5dfdc;border-radius:8px;overflow:hidden}
.dbReportRow{display:flex;justify-content:space-between;gap:20px;padding:8px 11px;border-bottom:1px solid #eee}.dbReportRow:last-child{border-bottom:0}
.dbReportRow b{min-width:42px;text-align:right}.dbReportNone{padding:10px 11px;color:#6d6662}


/* v0.44.3 Personen & Mitglieder: feste Zweispaltenansicht mit getrenntem Scrollen */
@media(min-width:1051px){
  .membersPage{
    height:calc(100vh - 56px)!important;
    min-height:0!important;
    box-sizing:border-box!important;
    display:flex!important;
    flex-direction:column!important;
    overflow:hidden!important;
  }
  .membersPage>.title,
  .membersPage>.peopleTopTabs{flex:0 0 auto!important}
  .membersPage>.people{
    width:100%!important;
    max-width:100%!important;
    flex:1 1 0!important;
    min-height:0!important;
    min-width:0!important;
    display:grid!important;
    grid-template-columns:calc(31% - 57px) minmax(0,1fr)!important;
    gap:14px!important;
    align-items:stretch!important;
    overflow:hidden!important;
  }
  .membersPage>.people>.list,
  .membersPage>.people>#detail{
    display:block!important;
    visibility:visible!important;
    opacity:1!important;
    width:auto!important;
    max-width:none!important;
    min-width:0!important;
    height:auto!important;
    min-height:0!important;
    overflow-y:auto!important;
    overflow-x:hidden!important;
    box-sizing:border-box!important;
    -webkit-overflow-scrolling:touch;
    scrollbar-gutter:stable;
  }
  .membersPage>.people>#detail{grid-column:2!important}
  .membersPage>.people>.list{grid-column:1!important}
}

.orderButtons{display:flex;gap:4px;align-items:center}.orderButtons .white{min-width:34px;padding-left:8px;padding-right:8px}

/* v0.44.7 Drag & Drop und kompakte Graduierungszeilen */
.sortableRow{cursor:grab}.sortableRow.dragging{opacity:.45}.dragHandle{font-size:var(--ry-font-section);font-weight:800;letter-spacing:-5px;cursor:grab;user-select:none;color:#777;padding:8px 12px 8px 4px}
.graduationAdminRow{grid-template-columns:34px minmax(170px,1.2fr) minmax(360px,3fr) auto auto!important;align-items:center!important;gap:18px!important}
.graduationGrade b{font-size:24px;color:#9f1825;white-space:nowrap}
.graduationDetails{display:flex;gap:22px;align-items:center;flex-wrap:wrap;color:#666}
.graduationDetails span{white-space:nowrap}

/* v0.44.8 Drag & Drop Korrektur */
.membershipTypeRow.sortableRow{cursor:grab}
.membershipTypeRow.sortableRow .dragHandle{align-self:center;justify-self:center;min-width:28px}

/* v0.44.9: Inhalte linksbündig, Drag-Griff kompakt ganz rechts */
.membershipTypeRow.sortableRow{grid-template-columns:minmax(180px,1fr) auto auto 28px!important;justify-items:start!important}
.membershipTypeFeeRow.sortableRow{justify-items:start!important}
#contributionPlanSortList .membershipTypeFeeRow.sortableRow{grid-template-columns:repeat(5,minmax(120px,1fr)) auto auto 28px!important}
.sortableRow .dragHandle{padding:4px 2px!important;min-width:22px!important;margin-left:0!important;justify-self:start!important}
.graduationAdminRow{grid-template-columns:minmax(170px,1.2fr) minmax(360px,3fr) auto auto 28px!important;justify-items:start!important}
.graduationAdminRow .dragHandle{margin-left:-8px!important}

/* v0.45.0: Drag-Griff ausschließlich rechts hinter Löschen; Felder linksbündig */
#memberTypeSortList .membershipTypeFeeRow.sortableRow{grid-template-columns:minmax(220px,1fr) auto 28px 24px!important;gap:6px!important;align-items:end!important;justify-items:start!important}
#contributionPlanSortList .membershipTypeFeeRow.sortableRow{grid-template-columns:minmax(190px,1.5fr) 125px 150px 145px 170px 70px auto 28px 24px!important;gap:8px!important;align-items:end!important;justify-items:start!important}
#memberTypeSortList .dragHandle,#contributionPlanSortList .dragHandle,.graduationSortList .dragHandle{display:inline-flex!important;align-items:center!important;justify-content:center!important;width:24px!important;min-width:24px!important;padding:0!important;margin:0!important;cursor:grab!important;align-self:center!important;justify-self:start!important}
#memberTypeSortList .membershipDeleteX,#contributionPlanSortList .membershipDeleteX{margin:0!important;justify-self:end!important}
#memberTypeSortList label,#contributionPlanSortList label{justify-self:start!important;width:100%!important}
#memberTypeSortList .white,#contributionPlanSortList .white{justify-self:start!important}
.graduationAdminRow{grid-template-columns:minmax(170px,1.2fr) minmax(360px,3fr) auto auto 24px!important;gap:10px!important}

/* v0.45.1 globale Aufnahmegebühr */
.admissionFeeBox label{display:grid;gap:7px;font-weight:700}.admissionFeeBox input{width:180px}.admissionFeeBox small{align-self:center;color:#666}

/* v0.45.2 Aufnahmegebühr exakt an Beitragsplan-Spalten ausgerichtet */






/* v0.45.3 Graduierungen: Bezeichnung kompakt, Grafik direkt daneben */
.graduationAdminRow{grid-template-columns:max-content 92px minmax(280px,1fr) auto auto 24px!important;gap:14px!important;align-items:center!important;justify-items:start!important}
.graduationGrade{width:max-content!important;min-width:0!important}
.graduationGrade b{font-size:24px!important;white-space:nowrap!important}
.graduationPreview{width:92px;height:72px;display:flex;align-items:center;justify-content:center;overflow:hidden;border-radius:8px}
.graduationPreview img{display:block;max-width:92px;max-height:72px;width:auto;height:auto;object-fit:contain}
.graduationPreview span{font-size:var(--ry-font-caption);color:#777;white-space:nowrap}
.graduationDetails{display:flex!important;gap:20px!important;align-items:center!important;flex-wrap:wrap!important}
.graduationAdminRow .dragHandle{margin-left:-4px!important}

/* v0.45.4 – Aufnahmegebühr wie erste zwei Spalten des Beitragsplans */







/* v0.45.4 – Graduierungsdaten kompakt nebeneinander */
.graduationAdminRow{
  grid-template-columns:max-content 96px minmax(330px,1fr) auto auto 28px!important;
  gap:16px!important;
  align-items:center!important;
}
.graduationDetails{
  display:flex!important;
  flex-direction:row!important;
  flex-wrap:nowrap!important;
  gap:18px!important;
  align-items:center!important;
  justify-content:flex-start!important;
  min-width:0!important;
}
.graduationDetails span{
  display:inline-block!important;
  white-space:nowrap!important;
  margin:0!important;
}

/* v0.45.5 Aufnahmegebühr als echte Tabellenzeile wie Beitragsplan/Beitrag */




.admissionFeeName input[readonly]{background:#fff!important;color:#222!important;opacity:1!important;cursor:default!important}


/* v0.45.6 – Referenz: Screenshot Aufnahmegebühr */






/* v0.45.7 – Aufnahmegebühr an Beitragsplan-Zeilen angeglichen */






/* v0.45.9 – Aufnahmegebühr exakt an Beitragsplan-Bedienelemente angepasst */






/* v0.46.0 – Aufnahmegebühr exakt über Beitragsplan-Spalten */






/* v0.46.1 – Controls inherit the exact contribution-plan styling */






/* v0.46.1b – Aufnahmegebühr: Buttonoptik ausschließlich aus .white wie im Beitragsplan */


/* v0.46.1c – Aufnahmegebühr: Beitragsfeldoptik aus denselben Formularregeln wie Beitragsplan */
.admissionFeeBox 
.admissionFeeBox 

/* v0.46.1d – Aufnahmegebühr: Beitragsfeld ohne Sonder-CSS */
.admissionFeeBox 

/* v0.46.1e – Aufnahmegebühr ist technisch eine echte Beitragsplan-Zeile */
.admissionFeeRow{
  grid-template-columns:minmax(190px,1.5fr) 125px 150px 145px 170px 70px auto 28px 24px!important;
  gap:8px!important;
  align-items:end!important;
  justify-items:start!important;
  width:100%!important;
  box-sizing:border-box!important;
  padding:14px 24px!important;
  margin:0!important;
  border-bottom:1px solid #eee!important;
}
.admissionFeeRow .admissionFeeName{
  grid-column:1!important;
  align-self:end!important;
  height:40px!important;
  display:flex!important;
  align-items:center!important;
}
.admissionFeeRow .admissionFeeAmount{
  grid-column:2!important;
  width:100%!important;
}
.admissionFeeRow .admissionFeeSave{
  grid-column:7!important;
  align-self:end!important;
  justify-self:start!important;
}

/* v0.46.1f – Aufnahmegebühr exakt über den entsprechenden Beitragsplan-Spalten */
.admissionFeeRow .admissionFeeName{
  grid-column:1!important;
  width:100%!important;
  justify-content:center!important;
  text-align:center!important;
}
.admissionFeeRow .admissionFeeAmount{
  grid-column:2!important;
  width:100%!important;
}
.admissionFeeRow .admissionFeeSave{
  grid-column:7!important;
  justify-self:start!important;
}

/* v0.46.1g – ein gemeinsames, verbindliches Raster für Aufnahmegebühr + Beitragspläne */
:root{
  --membership-fee-grid:minmax(190px,1.5fr) 125px 150px 145px 170px 70px auto 28px 24px;
}
#contributionPlanSortList .membershipTypeFeeRow.sortableRow,
.admissionFeeRow{
  grid-template-columns:var(--membership-fee-grid)!important;
  gap:8px!important;
  align-items:end!important;
  justify-items:start!important;
}
.admissionFeeRow .admissionFeeName{
  grid-column:1!important;
  width:100%!important;
  height:40px!important;
  display:flex!important;
  align-items:center!important;
  justify-content:flex-start!important;
  text-align:left!important;
  align-self:end!important;
}
.admissionFeeRow .admissionFeeAmount{
  grid-column:2!important;
  width:100%!important;
  align-self:end!important;
}
.admissionFeeRow .admissionFeeSave{
  grid-column:7!important;
  align-self:end!important;
  justify-self:start!important;
}

/* v0.46.1h – Aufnahmegebühr und Beitragspläne im selben Listen-/Grid-Kontext */
#contributionPlanSortList .admissionFeeRow{
  grid-template-columns:var(--membership-fee-grid)!important;
  gap:8px!important;
  align-items:end!important;
  justify-items:start!important;
  width:100%!important;
  box-sizing:border-box!important;
}
#contributionPlanSortList .admissionFeeRow .admissionFeeName{
  grid-column:1!important;
  width:100%!important;
  height:40px!important;
  display:flex!important;
  align-items:center!important;
  justify-content:flex-start!important;
  text-align:left!important;
}
#contributionPlanSortList .admissionFeeRow .admissionFeeAmount{
  grid-column:2!important;
  width:100%!important;
}
#contributionPlanSortList .admissionFeeRow .admissionFeeSave{
  grid-column:7!important;
  justify-self:start!important;
  align-self:end!important;
}

/* v0.46.1i – etwas Luft zwischen Mitgliedsarten- und Beitragsplan-Frame */


/* v0.46.1j – Dashboard-Graduierung vollständig/proportional anzeigen */
.dashboardGradeGraphic{
  width:auto!important;
  height:auto!important;
  min-width:0!important;
  min-height:0!important;
  max-width:260px!important;
  max-height:140px!important;
  padding:4px!important;
  overflow:visible!important;
  background:#fff!important;
}
.dashboardGradeGraphic img{
  width:auto!important;
  height:auto!important;
  max-width:250px!important;
  max-height:130px!important;
  object-fit:contain!important;
  display:block!important;
}
.apptGroup{display:block!important;margin-top:2px!important;}

/* v0.46.1k – leeren Finanz-Detailframe vollständig ausblenden */
#adminFinanceDetail:empty{
  display:none!important;
  border:0!important;
  background:transparent!important;
  box-shadow:none!important;
  padding:0!important;
  margin:0!important;
  min-height:0!important;
}

/* v0.46.1r – Abstand vor Beitragsplan */
.contributionPlanCard{
  margin-top:1cm!important;
}

.eventParticipants{margin:18px 0 14px;padding-top:14px;border-top:1px solid #e6e1dc}
.eventParticipants h3{margin:0 0 9px}
.eventParticipantRow{display:flex;justify-content:space-between;gap:12px;padding:7px 0;border-bottom:1px solid #eee}
.eventParticipantRow small{text-transform:capitalize}
.eventParticipantEmpty{color:#777}

/* Graduierung im Dashboard: ausschließlich die Bilddatei selbst, ohne weiße Kachel. */
.dashboardGradeGraphic,
.dashboardGradeGraphic img{
  background:none !important;
  background-color:transparent !important;
  border:none !important;
  box-shadow:none !important;
}
.dashboardGradeGraphic{overflow:visible !important}
.dashboardGradeGraphic img{display:block !important;object-fit:contain !important}

/* Dashboard: Graduierungsbild proportional in halber Darstellungsgröße. */
.dashboardGradeGraphic{
  width:56px !important;
  height:21px !important;
  flex:0 0 56px !important;
}
.dashboardGradeGraphic img{
  width:100% !important;
  height:100% !important;
  object-fit:contain !important;
}

/* Dashboard-Graduierung: Bild proportional auf 50 % der bisherigen sichtbaren Größe. */
.dashboardGradeGraphic{
  width:120px !important;
  height:auto !important;
  flex:0 0 120px !important;
  display:block !important;
  overflow:visible !important;
}
.dashboardGradeGraphic img{
  display:block !important;
  width:120px !important;
  height:auto !important;
  max-width:none !important;
  object-fit:contain !important;
  aspect-ratio:auto !important;
  background:transparent !important;
  border:0 !important;
  box-shadow:none !important;
}

/* Dashboard-Graduierung: nochmals 50 % kleiner, Seitenverhältnis unverändert. */
.dashboardGradeGraphic{
  width:60px !important;
  height:auto !important;
  flex:0 0 60px !important;
}
.dashboardGradeGraphic img{
  display:block !important;
  width:60px !important;
  height:auto !important;
  max-width:none !important;
  object-fit:contain !important;
  aspect-ratio:auto !important;
}

/* Dashboard: Datum und Zitat auf derselben horizontalen Zeile wie die Graduierung. */
.dashboardGraduationRow{
  width:100%;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:32px;
  margin-top:14px;
}
.dashboardGraduationRow .dashboardGrade{
  margin-top:0 !important;
}
.dashboardDateQuote{
  margin-left:auto;
  align-self:center;
  text-align:left;
  display:flex;
  flex-direction:column;
  gap:10px;
}
.dashboardDateQuote b{display:block}
.dashboardDateQuote em{display:block}
.dashboardWelcomeLeft{width:100%}
.welcome{align-items:flex-start}

/* Dashboard: Datum/Zitat bündig mit der linken Kante des rechten Frames darunter. */
.dashboardGraduationRow{
  display:grid !important;
  grid-template-columns:minmax(0,1fr) minmax(0,1fr) !important;
  column-gap:20px !important;
  align-items:center !important;
}
.dashboardGraduationRow .dashboardGrade{
  grid-column:1 !important;
  justify-self:start !important;
}
.dashboardDateQuote{
  grid-column:2 !important;
  justify-self:start !important;
  margin-left:0 !important;
  text-align:left !important;
  width:auto !important;
}

/* Dashboard: Datum/Zitat oben neben der Begrüßung und bündig über "Offene Zahlungen". */
.dashboardWelcomeGrid{
  display:grid !important;
  grid-template-columns:repeat(4,minmax(0,1fr)) !important;
  gap:13px !important;
  align-items:start !important;
}
.dashboardWelcomeGrid .dashboardWelcomeLeft{
  grid-column:1 / span 3 !important;
  width:auto !important;
}
.dashboardWelcomeGrid .dashboardDateQuote{
  grid-column:4 !important;
  justify-self:start !important;
  align-self:start !important;
  margin:0 !important;
  padding:0 !important;
  text-align:left !important;
}
.dashboardWelcomeGrid .dashboardGrade{
  margin-top:14px !important;
}

/* v0.46.3f: actions after permission grids */
.ryujinRightsFooter{display:flex;justify-content:flex-end;gap:14px;align-items:center;flex-wrap:wrap;margin-top:24px;padding-top:16px;border-top:1px solid rgba(120,80,80,.18)}
.ryujinRightsFooter button{font-size:var(--ry-font-caption)!important;font-weight:600;color:#a12840;background:transparent;border:0;padding:6px 4px;cursor:pointer}
.ryujinRightsFooter button:hover{text-decoration:underline}

.commPolls{display:grid;gap:10px;padding:12px}
.commPoll{border:1px solid #e5d7d9;border-radius:12px;padding:14px;display:grid;gap:8px;background:#fff}
.commPoll>b{font-size:var(--ry-font-body);color:#722039}
.commPoll>small{color:#777}
.commPoll>button{display:flex;justify-content:space-between;gap:10px;text-align:left;background:#faf7f8;border:1px solid #eadfe2;border-radius:8px;padding:10px;cursor:pointer;color:#282828}
.commPoll>button:disabled{opacity:.7;cursor:default}
.commPoll>button.commPollClose{background:transparent;border:0;color:#9c2940;font-size:var(--ry-font-caption);justify-content:flex-end}

/* Umfragen: eigenstaendiges, gut lesbares Formular */
.modalbody.ryujinPollForm{display:flex!important;flex-direction:column!important;align-items:stretch!important;gap:22px!important;padding:28px 32px!important}
.ryujinPollForm .ryujinPollField{display:flex!important;flex-direction:column!important;align-items:stretch!important;gap:9px!important;width:100%!important}
.ryujinPollForm .ryujinPollField>label{display:block!important;font-size:var(--ry-font-secondary)!important;font-weight:700!important;line-height:1.4!important;margin:0!important}
.ryujinPollForm input[name="question"],.ryujinPollForm textarea[name="options"]{display:block!important;box-sizing:border-box!important;width:100%!important;max-width:100%!important;min-width:0!important;margin:0!important;font-size:var(--ry-font-body)!important;font-family:inherit!important;line-height:1.5!important;padding:12px 14px!important;border:1px solid #d6cdd0!important;border-radius:9px!important;background:#fff!important}
.ryujinPollForm textarea[name="options"]{min-height:135px!important;resize:vertical!important}
.ryujinPollForm .ryujinPollCheck{display:flex!important;align-items:center!important;gap:10px!important;font-size:var(--ry-font-secondary)!important;font-weight:500!important;margin:0!important}
.ryujinPollForm .ryujinPollCheck input{width:18px!important;height:18px!important;flex:0 0 18px!important;margin:0!important}
.ryujinPollForm .ryujinPollHint{font-size:var(--ry-font-caption)!important;color:#747074!important;line-height:1.5!important;margin:0!important}
.ryujinPollForm .modalactions{display:flex!important;justify-content:flex-end!important;gap:12px!important;align-items:center!important;margin-top:6px!important}
@media(max-width:640px){.modalbody.ryujinPollForm{padding:18px!important}}

.commPollActions{display:flex;justify-content:flex-end;gap:14px;flex-wrap:wrap;margin-top:6px}
.commPollActions button{border:0;background:transparent;color:#9c2940;font-size:var(--ry-font-caption);font-weight:600;cursor:pointer;padding:7px 3px}
.commPollActions button:hover{text-decoration:underline}

/* v0.46.3q: chat actions */
.commCreateButtons{display:inline-flex;align-items:center;gap:10px;flex-wrap:wrap}
.directMessageActions{display:flex;gap:14px;align-items:center;margin-top:7px}
.directMessageActions button{border:0;background:transparent;color:#9c2940;font-size:var(--ry-font-caption);font-weight:600;padding:4px 0;cursor:pointer}
.directMessageActions button:hover{text-decoration:underline}

/* 0.46.3r: Chat creation actions in a single horizontal row */
.commCreateButtons{display:inline-flex!important;align-items:center;gap:10px;flex-wrap:wrap}
.commCreateButtons button{white-space:nowrap}

/* v0.46.3s: login gate for distinct member accounts */
#ryujinLogin{position:fixed;inset:0;z-index:99999;display:grid;place-items:center;background:rgba(26,13,19,.78);padding:20px}
.ryujinLoginCard{background:#fff;border-radius:16px;padding:32px;width:min(420px,100%);display:flex;flex-direction:column;gap:14px;box-shadow:0 20px 80px #0005}
.ryujinLoginCard h2{font-size:25px;margin:0;color:#77223a}
.ryujinLoginCard p{font-size:var(--ry-font-secondary);color:#6a6366;margin:0 0 6px}
.ryujinLoginCard label{display:flex;flex-direction:column;gap:7px;font-size:var(--ry-font-secondary);font-weight:600}
.ryujinLoginCard input{border:1px solid #d8cdd0;border-radius:8px;padding:12px;font-size:var(--ry-font-body)}
.ryujinLoginCard button{background:#b6002d;color:#fff;border:0;border-radius:9px;padding:12px;cursor:pointer;font-weight:700}
#ryujinLoginError{color:#a50025;font-size:var(--ry-font-secondary)}

.ryujinAccountForm{display:flex;flex-direction:column;gap:14px}
.ryujinAccountForm h2{font-size:var(--ry-font-section);margin:0 0 8px}
.ryujinAccountForm label{display:flex;flex-direction:column;gap:7px;font-size:var(--ry-font-secondary);font-weight:600}
.ryujinAccountForm input{width:100%;max-width:520px;box-sizing:border-box;border:1px solid #d8cdd0;border-radius:8px;padding:11px 13px;font-size:var(--ry-font-body)}

/* v0.46.3v: consistent inner spacing in rights detail panel */
.adminRightsGrid #rightsPane > .paneTitle{padding-left:28px!important;padding-right:28px!important}
.adminRightsGrid #rightsPane > p{margin:12px 28px 20px!important;line-height:1.55!important}
.adminRightsGrid #rightsPane > .permissionGrid{padding-left:24px!important;padding-right:24px!important}
.adminRightsGrid #rightsPane > form > p{margin:12px 28px 20px!important;line-height:1.55!important}
.adminRightsGrid #rightsPane > form > .permissionGrid{padding-left:24px!important;padding-right:24px!important}
@media(max-width:640px){.adminRightsGrid #rightsPane > p,.adminRightsGrid #rightsPane > form > p{margin-left:18px!important;margin-right:18px!important}.adminRightsGrid #rightsPane > .paneTitle{padding-left:18px!important;padding-right:18px!important}}

/* Rollenrechte nach Fachbereichen, statt fortlaufender ungegliederter Liste */
#rightsPane .roleRightsIntro{margin:16px 32px 24px!important;line-height:1.55!important;max-width:920px!important}
#rightsPane .roleRightsSections{display:flex!important;flex-direction:column!important;gap:22px!important;padding:0 32px 30px!important}
#rightsPane .roleRightsSection{border:1px solid #e7dfe1!important;border-radius:12px!important;overflow:hidden!important;background:#fff!important}
#rightsPane .roleRightsSectionHead{padding:18px 20px 13px!important;background:#fbf8f9!important;border-bottom:1px solid #eee7e9!important}
#rightsPane .roleRightsSectionHead h3{font-size:var(--ry-font-section)!important;font-weight:750!important;margin:0 0 4px!important;color:#30282b!important}
#rightsPane .roleRightsSectionHead p{font-size:var(--ry-font-secondary)!important;line-height:1.5!important;margin:0!important;color:#776f72!important}
#rightsPane .roleRightsSection .permissionGrid{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:0 22px!important;padding:8px 20px 14px!important}
#rightsPane .roleRightsSection .permissionGrid label{min-width:0!important;display:flex!important;align-items:center!important;gap:12px!important;padding:13px 2px!important;line-height:1.4!important;font-size:var(--ry-font-secondary)!important;border-bottom:1px solid #f1edef!important}
#rightsPane .roleRightsSection .permissionGrid label input{flex:0 0 auto!important}
@media(max-width:780px){#rightsPane .roleRightsSection .permissionGrid{grid-template-columns:minmax(0,1fr)!important}#rightsPane .roleRightsSections{padding-left:16px!important;padding-right:16px!important}#rightsPane .roleRightsIntro{margin-left:16px!important;margin-right:16px!important}}

/* v0.46.4a – Sidebar-Icons wie in der freigegebenen Bildvorlage. */
.sidebar-nav .nav-icon{width:27px;min-width:27px;align-items:center;justify-content:flex-start}
.sidebar-nav .ryujin-nav-svg{width:22px;height:22px;display:block;flex-shrink:0;color:#fff}

/* v0.46.4b – Vollbild-Anmeldung ohne Einblick in die Vereinssoftware */
body.ryujin-auth-pending .layout{visibility:hidden!important}
#ryujinLogin{position:fixed;inset:0;z-index:99999;display:grid;place-items:center;overflow:auto;background:radial-gradient(ellipse at 12% 12%,#751327 0,transparent 44%),radial-gradient(ellipse at 95% 95%,#590c1c 0,transparent 48%),linear-gradient(135deg,#160c12 0%,#2b101b 55%,#120a0e 100%);padding:32px 18px;box-sizing:border-box}
#ryujinLogin:before{content:"";position:absolute;inset:0;pointer-events:none;opacity:.13;background:repeating-linear-gradient(135deg,transparent 0,transparent 38px,#e1b4b4 39px,transparent 40px)}
.ryujinLoginScene{position:relative;z-index:1;display:grid;grid-template-columns:minmax(240px,1fr) minmax(320px,430px);align-items:center;gap:clamp(35px,7vw,120px);width:min(100%,1000px)}
.ryujinLoginBrand{color:#fff;display:flex;flex-direction:column;align-items:center;text-align:center;gap:12px;padding:20px}
.ryujinLoginKanji{font-size:26px;letter-spacing:.5em;color:#cda5a8;margin-bottom:15px}
.ryujinLoginEmblem{display:grid;place-items:center;width:148px;height:148px;border:2px solid #d7aeb2;border-radius:50%;font-family:serif;font-size:86px;color:#f7e6e6;box-shadow:0 0 0 11px #ffffff08,0 0 65px #c6264c24}
.ryujinLoginBrandName{font-size:clamp(30px,4vw,49px);letter-spacing:.12em;font-weight:800;margin-top:24px;line-height:1.2}
.ryujinLoginBrandSub{font-size:var(--ry-font-caption);letter-spacing:.22em;color:#dcb9be}
#ryujinLogin .ryujinLoginCard{box-sizing:border-box;background:#fff;border:1px solid #ffffff30;border-radius:20px;padding:clamp(26px,4vw,45px);width:100%;display:flex;flex-direction:column;gap:16px;box-shadow:0 28px 85px #0008;font-family:inherit}
#ryujinLogin .ryujinLoginEyebrow{font-size:var(--ry-font-caption);font-weight:800;letter-spacing:.2em;color:#a8002c}
#ryujinLogin .ryujinLoginCard h2{font-size:var(--ry-font-page);margin:0;color:#251c20;line-height:1.15}
#ryujinLogin .ryujinLoginCard p{font-size:var(--ry-font-secondary);color:#756a70;margin:0 0 8px;line-height:1.5}
#ryujinLogin .ryujinLoginCard label{display:flex;flex-direction:column;gap:8px;font-size:var(--ry-font-secondary);font-weight:700;color:#34282e}
#ryujinLogin .ryujinLoginCard input{box-sizing:border-box;width:100%;border:1px solid #d8cdd0;border-radius:10px;padding:14px;font-size:var(--ry-font-body);background:#faf8f9;color:#2a2025}
#ryujinLogin .ryujinLoginCard input:focus{outline:2px solid #ba264d;outline-offset:1px;background:#fff}
#ryujinLogin .ryujinLoginCard button{display:flex;justify-content:center;align-items:center;gap:16px;background:#b6002d;color:#fff;border:0;border-radius:10px;padding:15px;cursor:pointer;font-weight:750;font-size:var(--ry-font-body);margin-top:4px}
#ryujinLogin .ryujinLoginCard button:hover{background:#930024}
#ryujinLogin #ryujinLoginError{color:#a50025;font-size:var(--ry-font-secondary);margin:0;min-height:0}
#ryujinLogin #ryujinLoginError:empty{display:none}
#ryujinLogin .ryujinLoginFoot{font-size:var(--ry-font-caption);color:#9b8e94;text-align:center;letter-spacing:.06em;margin-top:10px}
@media(max-width:760px){.ryujinLoginScene{grid-template-columns:1fr;gap:15px;max-width:440px}.ryujinLoginBrand{padding:5px;gap:7px}.ryujinLoginEmblem{width:74px;height:74px;font-size:43px}.ryujinLoginBrandName{font-size:25px;margin-top:5px}.ryujinLoginBrandSub{font-size:var(--ry-font-caption)}.ryujinLoginKanji{display:none}#ryujinLogin .ryujinLoginCard{padding:27px}}

/* v0.46.4c: personal account footer in existing sidebar */
.sidebar-nav .nav-item[hidden],#ryujinSidebarLogout[hidden]{display:none!important}
.ryujin-sidebar-account{margin:20px 14px 12px;padding:13px 12px;border-top:1px solid rgba(255,255,255,.34);color:#fff;display:flex;flex-direction:column;gap:9px}
.ryujin-sidebar-account-info{display:flex;align-items:center;gap:9px;font-size:var(--ry-font-secondary);font-weight:600;overflow-wrap:anywhere}
.ryujin-sidebar-account-icon{font-size:var(--ry-font-section);opacity:.9}
#ryujinSidebarLogout{background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.24);border-radius:8px;padding:9px 11px;color:white;text-align:left;cursor:pointer;font-size:var(--ry-font-caption);font-weight:650}
#ryujinSidebarLogout:hover{background:rgba(255,255,255,.2)}

/* v0.46.4e: header controls over the approved banner, not a new header row */
.site-header{position:relative;overflow:visible!important}
.ryujin-header-tools{position:absolute;z-index:110;right:2.1%;top:12px;display:flex;align-items:center;gap:12px;font-family:Arial,sans-serif;line-height:1.3;color:#252025}
.ryujin-header-tools button{cursor:pointer;font-family:inherit}
.ryujin-header-search{position:relative;display:flex;align-items:center;gap:7px;background:rgba(245,245,245,.94);border-radius:13px;padding:7px 12px;width:clamp(145px,15vw,255px);height:39px}
.ryujin-header-search>span{font-size:27px;line-height:1}.ryujin-header-search input{width:100%;min-width:0;border:0;outline:0;background:transparent;font-size:var(--ry-font-secondary);color:#333}
.ryujin-header-icon{position:relative;border:0;background:rgba(255,255,255,.65);width:37px;height:39px;border-radius:9px;font-size:25px;color:#29262a}
.ryujin-header-icon:nth-of-type(1)::first-letter{color:#700016}
.ryujin-header-badge{position:absolute;top:-3px;right:-4px;border-radius:20px;background:#b5002d;color:#fff;font-size:var(--ry-font-caption);font-weight:700;min-width:18px;padding:2px 4px}
.ryujin-header-badge[hidden],.ryujin-header-popover[hidden]{display:none!important}
.ryujin-header-user{border:0;background:rgba(255,255,255,.8);display:flex;align-items:center;gap:9px;border-radius:14px;padding:4px 8px;font-size:var(--ry-font-secondary);max-width:205px}
.ryujin-header-avatar{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:#e4e4e4;font-size:var(--ry-font-section);flex-shrink:0}.ryujin-header-user #ryujinCurrentUsername{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ryujin-header-popover{position:absolute;top:48px;right:0;width:min(345px,85vw);max-height:350px;overflow:auto;background:#fff;border:1px solid #e5dadd;border-radius:12px;box-shadow:0 10px 32px #0003;padding:9px;line-height:1.4;z-index:120}
.ryujin-header-search .ryujin-header-popover{left:0;right:auto;width:250px}
.ryujin-header-popover button{display:block;width:100%;border:0;border-radius:7px;padding:10px;text-align:left;background:#fff;color:#282126;font-size:var(--ry-font-secondary)}.ryujin-header-popover button:hover{background:#f8eef0}
.ryujin-header-panel-title{padding:8px 10px;font-size:var(--ry-font-secondary);font-weight:700;border-bottom:1px solid #eee}.ryujin-header-notice{border-bottom:1px solid #eee!important}.ryujin-header-notice small{display:block;color:#6c6569;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ryujin-header-empty{font-size:var(--ry-font-secondary);color:#777;padding:10px}.ryujin-header-mark{color:#ad002b!important;font-weight:700}
@media(max-width:900px){.ryujin-header-tools{right:8px;top:6px;gap:4px}.ryujin-header-search{width:125px}.ryujin-header-user{max-width:125px}.ryujin-header-icon{width:30px}}
@media(max-width:650px){.ryujin-header-search{width:95px}.ryujin-header-user #ryujinCurrentUsername{display:none}.ryujin-header-user{padding:3px}}

/* v0.46.4f: toolbar inside white portion of original banner */
.ryujin-header-tools{top:clamp(15px,1.65vw,26px)!important;right:2.1%!important}
.ryujin-header-avatar{background:#eee0e4;color:#83001e;font-size:var(--ry-font-caption);font-weight:800;overflow:hidden;line-height:1}
.ryujin-header-avatar img{display:block;width:100%;height:100%;object-fit:cover;border-radius:50%}
@media(max-width:900px){.ryujin-header-tools{top:clamp(14px,1.7vw,20px)!important;right:8px!important}}
@media(max-width:650px){.ryujin-header-tools{top:15px!important}}

/* v0.46.4h personal profile */
#ryujinCredentials[hidden]{display:none!important}
.ryujinAccountIdentity{display:flex;align-items:center;gap:17px;padding-bottom:20px;border-bottom:1px solid #eee2e5}
.ryujinAccountIdentity h2{margin:0;font-size:24px}.ryujinAccountIdentity p{margin:6px 0 0;color:#777}
.ryujinAccountAvatar{width:72px;height:72px;flex:0 0 72px;display:grid;place-items:center;border-radius:50%;background:#f2dce2;color:#8b1532;font-weight:700;font-size:var(--ry-font-section);overflow:hidden}
.ryujinAccountAvatar img{width:100%;height:100%;object-fit:cover}
.ryujinAccountData{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:26px;margin:18px 0}
.ryujinAccountData h3{font-size:var(--ry-font-body);margin:0 0 14px}.ryujinAccountData dl{display:grid;grid-template-columns:130px 1fr;gap:11px;margin:0}.ryujinAccountData dt{color:#777}.ryujinAccountData dd{margin:0;font-weight:600;overflow-wrap:anywhere}
@media(max-width:720px){.ryujinAccountData{grid-template-columns:1fr}.ryujinAccountData dl{grid-template-columns:110px 1fr}}

/* v0.46.4i: personal member record with complete read-only tabs */
.ryujinOwnPage .ryujinOwnHeader{padding:26px 28px;display:flex;align-items:center;gap:20px}
.ryujinOwnPage .ryujinOwnHeader i{width:66px;height:66px;min-width:66px;display:flex;align-items:center;justify-content:center;border-radius:50%;background:#f4e0e5;color:#ad0029;font-style:normal;font-weight:750;font-size:24px;overflow:hidden}
.ryujinOwnPage .ryujinOwnHeader i img{width:100%;height:100%;object-fit:cover}
.ryujinOwnPage .ryujinOwnTabs{display:flex;overflow-x:auto;gap:0;padding:0 16px;white-space:nowrap}
.ryujinOwnPage .ryujinOwnBody{padding:28px;min-height:260px}
.ryujinOwnRows{display:grid;grid-template-columns:minmax(125px,1fr) minmax(150px,1.5fr);gap:0}
.ryujinOwnRows dt,.ryujinOwnRows dd{padding:11px 0;border-bottom:1px solid #eee;margin:0;overflow-wrap:anywhere}
.ryujinOwnRows dd{font-weight:650;text-align:right}
.ryujinBack{margin-bottom:18px}
.ryujinCredentialGrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;max-width:1120px}
.ryujinCredentialGrid>.card{padding:26px}
@media(max-width:900px){.ryujinCredentialGrid{grid-template-columns:1fr}.ryujinOwnPage .ryujinOwnBody{padding:16px}}

/* 0.46.4j – personal profile */
.ryujinOwnSectionHeading{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.ryujinOwnSectionHeading h3{margin:0}
.ryujinOwnBody .timeline p{display:flex;align-items:baseline;justify-content:space-between;gap:16px;padding:14px 0;border-bottom:1px solid #ece7e8;margin:0}
.ryujinOwnBody .timeline p b{order:2;text-align:right}
.ryujinOwnBody .timeline p span{order:1}

/* v0.46.4k – personal membership and event tabs matching member detail */
.ryujinOwnMembershipCards{gap:24px;padding:24px 16px}
.ryujinOwnMembershipCards>section{border-radius:12px;padding:28px 30px;min-width:0}
.ryujinOwnMembershipCards h3,.ryujinOwnEvents h3{font-size:var(--ry-font-section);margin-bottom:22px}
.ryujinOwnMembershipRows{display:grid;grid-template-columns:minmax(135px,1fr) minmax(110px,1.55fr);row-gap:20px;align-items:baseline;font-size:var(--ry-font-body)}
.ryujinOwnMembershipRows dt{color:#777}.ryujinOwnMembershipRows dd{margin:0;font-weight:700;text-align:left;overflow-wrap:anywhere}
.ryujinOwnTimeline{border-left:3px solid #efc4ce;margin-top:22px;padding-left:20px;display:grid;gap:22px}
.ryujinOwnTimelineRow{display:grid;grid-template-columns:minmax(85px,130px) minmax(0,1fr);align-items:baseline;gap:14px;font-size:var(--ry-font-body)}
.ryujinOwnTimelineRow strong{font-weight:750}.ryujinOwnTimelineRow span{color:#666}
.ryujinOwnEvents{margin:24px 16px;padding:28px 30px;border-radius:12px}
.ryujinOwnEvents>.muted{font-size:var(--ry-font-body);margin:-12px 0 22px;color:#777}
.ryujinOwnEventRow{grid-template-columns:54px minmax(0,1fr) auto;gap:18px;padding:20px 8px}
.ryujinOwnEventRow>i{width:48px;height:48px;font-size:var(--ry-font-body);background:#f7e7ea;color:#b90020}
.ryujinOwnEventRow span b{font-size:var(--ry-font-body);overflow-wrap:anywhere}
.ryujinOwnEventRow span small{font-size:var(--ry-font-secondary);margin-top:5px;overflow-wrap:anywhere}
.ryujinOwnEventRow em{font-size:var(--ry-font-caption);padding:7px 13px;border-radius:20px;max-width:220px;text-align:center;overflow-wrap:anywhere}
@media(max-width:850px){.ryujinOwnMembershipCards{grid-template-columns:1fr}.ryujinOwnEventRow{grid-template-columns:46px minmax(0,1fr)}.ryujinOwnEventRow em{grid-column:2;justify-self:start}}

/* v0.46.4l – unified personal profile typography (scoped to Mein Konto only) */
.ryujinOwnPage .ryujinOwnBody{font-size:var(--ry-font-body);line-height:1.5}
.ryujinOwnPage .ryujinOwnBody .ryujinOwnMembershipRows,
.ryujinOwnPage .ryujinOwnBody .ryujinOwnTimelineRow,
.ryujinOwnPage .ryujinOwnBody .ryujinOwnRows,
.ryujinOwnPage .ryujinOwnBody .tabcards p,
.ryujinOwnPage .ryujinOwnBody .tabsection p,
.ryujinOwnPage .ryujinOwnBody .memberPublicationRow,
.ryujinOwnPage .ryujinOwnBody .historyrow,
.ryujinOwnPage .ryujinOwnBody .historyrow span,
.ryujinOwnPage .ryujinOwnBody .historyrow span b,
.ryujinOwnPage .ryujinOwnBody .ryujinOwnEventRow span b,
.ryujinOwnPage .ryujinOwnBody .ryujinOwnEventRow span small{font-size:var(--ry-font-body);line-height:1.5}
.ryujinOwnPage .ryujinOwnBody .ryujinOwnTimelineRow{grid-template-columns:minmax(105px,130px) minmax(0,1fr);gap:14px}
.ryujinOwnPage .ryujinOwnBody .ryujinOwnTimelineRow strong{font-size:var(--ry-font-body);font-weight:700}
.ryujinOwnPage .ryujinOwnBody .ryujinOwnTimelineRow span{font-size:var(--ry-font-body);font-weight:400}
.ryujinOwnPage .ryujinOwnBody .tabcards h3,
.ryujinOwnPage .ryujinOwnBody .tabsection h3{font-size:var(--ry-font-section);line-height:1.3}
.ryujinOwnPage .ryujinOwnBody .ryujinOwnEventRow em{font-size:var(--ry-font-secondary)}

/* 0.46.4m: match the existing member-detail typography exactly */
.ryujinOwnPage .ryujinOwnBody{font-size:var(--ry-font-caption);line-height:1.45}
.ryujinOwnPage .ryujinOwnBody .ryujinOwnMembershipRows,
.ryujinOwnPage .ryujinOwnBody .ryujinOwnTimelineRow,
.ryujinOwnPage .ryujinOwnBody .ryujinOwnRows,
.ryujinOwnPage .ryujinOwnBody .tabcards p,
.ryujinOwnPage .ryujinOwnBody .tabsection p,
.ryujinOwnPage .ryujinOwnBody .memberPublicationRow,
.ryujinOwnPage .ryujinOwnBody .historyrow,
.ryujinOwnPage .ryujinOwnBody .historyrow span,
.ryujinOwnPage .ryujinOwnBody .historyrow span b,
.ryujinOwnPage .ryujinOwnBody .ryujinOwnEventRow span b,
.ryujinOwnPage .ryujinOwnBody .ryujinOwnEventRow span small,
.ryujinOwnPage .ryujinOwnBody .ryujinOwnTimelineRow strong,
.ryujinOwnPage .ryujinOwnBody .ryujinOwnTimelineRow span,
.ryujinOwnPage .ryujinOwnBody .timeline p,
.ryujinOwnPage .ryujinOwnBody .tabcards dl,
.ryujinOwnPage .ryujinOwnBody .tabcards dt,
.ryujinOwnPage .ryujinOwnBody .tabcards dd{font-size:var(--ry-font-caption);line-height:1.45}
.ryujinOwnPage .ryujinOwnBody .tabcards h3,
.ryujinOwnPage .ryujinOwnBody .tabsection h3{font-size:var(--ry-font-body);line-height:1.35}
.ryujinOwnPage .ryujinOwnBody .ryujinOwnEventRow em{font-size:var(--ry-font-caption)}
.ryujinOwnPage .ryujinOwnBody .historyrow span small{font-size:var(--ry-font-caption)}

/* 0.46.4n: clickable personal-finance dashboard tile, matching existing stats */
.ryujinPersonalFinanceStat{font:inherit;color:inherit;text-align:left;cursor:pointer;width:100%;border:inherit;border-radius:inherit;background:inherit;display:flex;flex-direction:column}
.ryujinPersonalFinanceStat:hover{outline:2px solid rgba(150,0,45,.3);outline-offset:2px}
.ryujinPersonalFinanceStat:focus-visible{outline:3px solid #a60031;outline-offset:3px}

/* Benutzerkonten: beide Kopfaktionen direkt nebeneinander */
.ryujinAccountHeaderActions{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap;flex-shrink:0}

.ryujinTrainingStats{margin:0 0 22px;padding:18px;border:1px solid #e6dce0;border-radius:10px;font-size:var(--ry-font-caption)}
.ryujinTrainingStats h3{font-size:var(--ry-font-body);margin:0 0 12px}
.ryujinTrainingStatsGrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.ryujinTrainingStatsGrid>div{background:#faf5f6;border-radius:8px;padding:12px;display:flex;flex-direction:column;gap:7px}
.ryujinTrainingStatsGrid small{font-size:var(--ry-font-caption);color:#666}
.ryujinTrainingStatsGrid strong{font-size:var(--ry-font-section)}
.ryujinStatsFilters{display:flex;flex-wrap:wrap;gap:12px;align-items:end;margin:15px 0;padding:15px}
.ryujinStatsFilters label{display:grid;gap:4px;font-size:var(--ry-font-caption)}
.ryujinStatsTable{width:100%;border-collapse:collapse;font-size:var(--ry-font-caption)}
.ryujinStatsTable td,.ryujinStatsTable th{padding:12px;border-bottom:1px solid #eee;text-align:left}
@media(max-width:650px){.ryujinTrainingStatsGrid{grid-template-columns:1fr}.ryujinStatsTable{font-size:var(--ry-font-caption)}}

/* v0.46.4w – Interessentenverwaltung */
.prospectManageGrid{display:grid;grid-template-columns:1fr 1fr;gap:14px;padding:18px;align-items:stretch}
.prospectManageGrid section{border:1px solid #e1e1e1;border-radius:9px;padding:18px;min-width:0}
.prospectManageGrid h3{font-size:var(--ry-font-body);margin:0 0 14px}
.prospectGroupsPanel{height:100%;box-sizing:border-box}
.prospectRightPanels{display:flex;flex-direction:column;gap:14px;min-width:0}
.prospectRightPanels section{flex:1}
.prospectFields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:14px 0}
.prospectFields label{display:flex;flex-direction:column;gap:6px;font-size:var(--ry-font-caption);font-weight:600;min-width:0}
.prospectFields input,.prospectFields select{box-sizing:border-box;width:100%;min-width:0;max-width:100%;height:40px;padding:8px;border:1px solid #ddd;border-radius:7px;font-size:var(--ry-font-caption)}
.prospectActions{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.prospectMissing{display:block;color:#a32638;font-size:var(--ry-font-caption);line-height:1.5;margin-top:8px}
.prospectInviteUrl{overflow-wrap:anywhere;word-break:break-word;max-width:100%;font-size:var(--ry-font-caption);user-select:all}
@media(max-width:850px){.prospectManageGrid{grid-template-columns:1fr}.prospectFields{grid-template-columns:1fr}}

/* v0.46.4x: Tab-Styling hatte den roten Einladungsbutton weiss uebermalt.
   Explizit nach der allgemeinen .peopleTopTabs button Regel definieren. */
.peopleTopTabs button.prospectInviteCreateButton,
.peopleTopTabs button.prospectInviteCreateButton:hover,
.peopleTopTabs button.prospectInviteCreateButton:focus-visible{
  background-color:#a30c29!important;
  color:#fff!important;
  border:1px solid #a30c29!important;
  font-weight:750!important;
  opacity:1!important;
  visibility:visible!important;
  -webkit-text-fill-color:#fff!important;
  white-space:nowrap;
}

/* v0.46.4y: synchronized overview rows and bank editing */
.ryujinOwnPage .ryujinOwnBody .tabcards:not(.ryujinOwnMembershipCards)>section>.ryujinOwnSectionHeading{min-height:56px;display:flex;align-items:center;margin-bottom:10px}
.ryujinOwnPage .ryujinOwnBody .tabcards:not(.ryujinOwnMembershipCards)>section>.ryujinOwnSectionHeading h3{margin:0}
.ryujinOwnPage .ryujinOwnBody .tabcards:not(.ryujinOwnMembershipCards) .ryujinOwnRows dt,
.ryujinOwnPage .ryujinOwnBody .tabcards:not(.ryujinOwnMembershipCards) .ryujinOwnRows dd{min-height:54px;box-sizing:border-box;display:flex;align-items:center;padding:10px 0}
.ryujinOwnPage .ryujinOwnBody .tabcards:not(.ryujinOwnMembershipCards) .ryujinOwnRows dd{justify-content:flex-end}
.ryujinOwnBank{display:flex;align-items:center;justify-content:space-between;gap:18px;flex-wrap:wrap;padding:16px;margin-bottom:18px;border:1px solid #e6dce0;border-radius:10px}
.ryujinOwnBank h3{margin:0 0 6px}

/* v0.46.4z: Interessenten-Kopfbereich und Abstaende */
#prospectDetail>.prospectNumberLine{margin:12px 22px 8px!important;padding:0 2px!important}
#prospectDetail>.prospectStatus{margin:12px 22px 24px!important;gap:12px!important;grid-template-columns:repeat(3,minmax(0,1fr))!important}
#prospectDetail>.prospectStatus span{box-sizing:border-box;padding:12px 14px!important;min-height:70px!important}
#prospectDetail .prospectGroupsPanel>.checklist{margin-bottom:17px!important}
#prospectDetail .prospectGroupsPanel>button{margin-top:8px!important}
#prospectDetail .prospectAccessHelp{margin:10px 22px 20px;padding:15px 18px;background:#f8f5f5;border:1px solid #e7dede;border-radius:9px;font-size:var(--ry-font-caption)}
#prospectDetail .prospectAccessHelp p{margin:8px 0;line-height:1.5}
#prospectDetail .prospectAccessHelp a{color:#921a30;text-decoration:underline}
@media(max-width:700px){#prospectDetail>.prospectStatus{grid-template-columns:1fr!important}}

/* v0.46.5a: Rechte-Ansichten einheitlich und Aktionsbuttons eingerueckt */
.adminRightsGrid #rightsPane .ryujinRightsFooter{
 justify-content:flex-start!important;
 padding:18px 28px 22px!important;
 margin:14px 0 0!important;
 gap:14px!important;
 box-sizing:border-box!important;
}
.adminRightsGrid #rightsPane .ryujinRightsFooter button{
 flex:0 0 auto!important;
 font-size:var(--ry-font-caption)!important;
}
#rightsPane .roleRightsSectionHead h3{font-size:var(--ry-font-secondary)!important;font-weight:700!important}
#rightsPane .roleRightsSectionHead p{font-size:var(--ry-font-caption)!important}
#rightsPane .roleRightsSection .permissionGrid label{font-size:var(--ry-font-caption)!important}
#rightsPane .roleRightsIntro{font-size:var(--ry-font-caption)!important}
@media(max-width:640px){.adminRightsGrid #rightsPane .ryujinRightsFooter{padding-left:18px!important;padding-right:18px!important}}

/* v0.46.5b: Alle vier Dashboard-Kacheln besitzen dieselbe weisse Flaeche. */
.stats > button.stat.ryujinPersonalFinanceStat {background:#fff!important;border:1px solid #ddd!important;border-radius:10px!important;box-shadow:0 2px 8px #0000000c!important;padding:18px!important;box-sizing:border-box;min-width:0;align-items:stretch;justify-content:flex-start;}
.stats > button.stat.ryujinPersonalFinanceStat span,.stats > button.stat.ryujinPersonalFinanceStat small {color:#666;font-size:var(--ry-font-caption);font-weight:400;}
.stats > button.stat.ryujinPersonalFinanceStat b {font-size:var(--ry-font-page);font-weight:700;color:#191919;margin:5px 0;line-height:1.2;}

/* v0.46.5c: Statistik-Kacheln ohne Ueberlagerung bei Safari / Zoom */
.ryujinTrainingStatsGrid{align-items:stretch;grid-auto-rows:minmax(100px,auto);row-gap:16px;margin-bottom:20px}
.ryujinTrainingStatsGrid>div{box-sizing:border-box;min-height:100px;height:auto!important;overflow:visible;justify-content:flex-start;gap:12px;padding:16px 18px}
.ryujinTrainingStatsGrid>div small,.ryujinTrainingStatsGrid>div strong{display:block;position:static;line-height:1.45;overflow-wrap:anywhere}
.ryujinTrainingStatsGrid>div strong{margin:0}
.ryujinTrainingStatsGrid+p{clear:both;margin:18px 0 14px;line-height:1.55}
.ryujinTrainingStats details{margin-top:8px;line-height:1.5}

/* Dashboard: individueller Probetrainingszeitraum */
.ryujinTrialDashboardStat small{white-space:normal;line-height:1.35}
.ryujinTrialDashboardStat .ryujinTrialDashboardLink{margin-top:7px;color:#97152c;font-weight:600}

/* v0.46.5f: Trainings-Spalten gleich hoch und dezente Kopierbestätigung */
.train{align-items:stretch}
.train>.card{height:100%;box-sizing:border-box}
#ryujinInviteToast{position:fixed;bottom:26px;left:50%;transform:translateX(-50%);background:#222;color:white;padding:12px 20px;border-radius:9px;box-shadow:0 4px 20px #0003;opacity:0;pointer-events:none;transition:opacity .2s;z-index:99999}
#ryujinInviteToast.visible{opacity:1}

/* Separate training-group assignment from permission groups. */
.prospectTrainingGroupsPanel{border:1px solid #dedede;border-radius:14px;padding:24px;background:#fff;min-width:0}
.prospectTrainingGroupsPanel h3{margin-top:0}
.prospectTrainingGroupsPanel .checklist{margin:16px 0 24px}
.prospectManageGrid{align-items:stretch}
@media(max-width:1050px){.prospectTrainingGroupsPanel{grid-column:1/-1}}

/* v0.46.5h: Reihenfolge der vier Interessenten-Kacheln */
.prospectManageGrid .prospectRightPanels{display:contents}
.prospectManageGrid .prospectRightPanels>section:first-child{grid-column:1;grid-row:1}
.prospectManageGrid .prospectRightPanels>section:last-child{grid-column:2;grid-row:1}
.prospectManageGrid .prospectGroupsPanel{grid-column:1;grid-row:2;height:auto}
.prospectManageGrid .prospectTrainingGroupsPanel{grid-column:2;grid-row:2}
#trainingSelfActions button[hidden]{display:none!important}
@media(max-width:850px){
 .prospectManageGrid .prospectRightPanels>section:first-child{grid-column:1;grid-row:1}
 .prospectManageGrid .prospectRightPanels>section:last-child{grid-column:1;grid-row:2}
 .prospectManageGrid .prospectGroupsPanel{grid-column:1;grid-row:3}
 .prospectManageGrid .prospectTrainingGroupsPanel{grid-column:1;grid-row:4}
}

.ryujinRegisteredBadge{display:inline-block;margin:5px 8px 5px 0;padding:3px 9px;border-radius:99px;background:#e6f5e9;color:#176534;font-size:var(--ry-font-caption);font-weight:700}.ryujinMyTrainingRow{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 0;border-bottom:1px solid #e8e8e8}.ryujinMyTrainingRow>div{display:flex;flex-direction:column;gap:3px}.ryujinMyTrainingRow small{color:#666}

/* Dashboard: registration controls inside each upcoming training appointment */
.ryujinDashboardTrainingItem{border-bottom:1px solid #e8e8e8;padding-bottom:10px}
.ryujinDashboardTrainingItem .appt{border-bottom:0!important;padding-bottom:3px}
.ryujinDashboardTrainingActions{display:flex;align-items:center;gap:9px;flex-wrap:wrap;padding:0 16px 2px 22px}
.ryujinDashboardTrainingType{background:#fae8eb;color:#ad2039;padding:5px 10px;border-radius:7px;font-size:var(--ry-font-caption);font-weight:600}
.ryujinDashboardTrainingActions .ryujinRegisteredBadge{margin:0;background:#e5f5e9;color:#176534}
.ryujinNotRegisteredBadge{display:inline-block;background:#f1f1f1;color:#555;padding:4px 9px;border-radius:99px;font-size:var(--ry-font-caption);font-weight:600}
.ryujinDashboardTrainingButton{margin-left:auto;min-width:98px;cursor:pointer}
.ryujinDashboardTrainingButton:disabled{opacity:.6;cursor:wait}

/* 0.46.5p: compact registration row matching appointment labels */
.ryujinDashboardTrainingActions{gap:8px;padding-top:0;padding-bottom:3px}
.ryujinDashboardTrainingActions .ryujinRegisteredBadge,.ryujinDashboardTrainingActions .ryujinNotRegisteredBadge{font-size:var(--ry-font-caption);line-height:1.35;padding:4px 9px;font-weight:600}
.ryujinDashboardTrainingActions .ryujinDashboardTrainingButton{font-size:var(--ry-font-caption);font-weight:600;padding:7px 12px;min-width:98px;line-height:1.35}

/* 0.46.5s: konsistente Typografie und einfache Anwesenheitsauswahl */
.main-frame .modalback,.main-frame .modal,.modalback .modal,.modalback .modal *{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Arial,sans-serif;}
.modalback .modal{font-size:var(--ry-font-secondary);line-height:1.45;}
.modalback .modalhead h2{font-size:var(--ry-font-section);font-weight:700;}
.modalback .modalbody p,.modalback .modalbody label,.modalback .modalbody input,.modalback .modalbody select,.modalback .modalbody button{font-size:var(--ry-font-secondary);}
.modalback .modalbody small{font-size:var(--ry-font-caption);}
.ryujinAttendance .datefield{font-weight:600;}
.ryujinAttendance .ryujinAttendanceHint{color:#666;margin:12px 0 16px;}
.ryujinAttendance .attlist>div.ryujinAttendancePerson{display:block;padding:12px 3px;}
.ryujinAttendancePerson label{display:flex;align-items:center;gap:12px;cursor:pointer;font-weight:400;}
.ryujinAttendancePerson input.att-include{width:18px;height:18px;flex-shrink:0;accent-color:#b90020;}
.ryujinAttendancePerson b{font-size:var(--ry-font-secondary);font-weight:650;}
.ryujinAttendancePerson small{display:block;color:#777;margin-top:2px;}
.eventrow p{margin-bottom:12px;}
.eventrow strong{margin-top:0;}

/* v0.46.5t: Veranstaltungskarten – tatsächlicher Abstand zwischen Badges und Titel. */
.eventrow > div > p { margin: 0 0 16px !important; line-height: 1.4; }
.eventrow > div > strong { display:block; margin: 0 0 4px !important; }

/* v0.46.5t: Dialoge liegen direkt unter body, nicht innerhalb von .main-frame. */
body > .modalback, body > .modalback .modal,
body > .modalback .modal button, body > .modalback .modal input,
body > .modalback .modal select, body > .modalback .modal label,
body > .modalback .modal p, body > .modalback .modal span,
body > .modalback .modal b, body > .modalback .modal small {
 font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Arial,sans-serif !important;
}
body > .modalback .modal {font-size:var(--ry-font-secondary);line-height:1.45;}
body > .modalback .modalhead h2 {font-size:var(--ry-font-section);font-weight:700;}
body > .modalback .ryujinAttendance .datefield,
body > .modalback .ryujinAttendance .datefield input,
body > .modalback .ryujinAttendance .ryujinAttendanceHint,
body > .modalback .ryujinAttendancePerson b {font-size:var(--ry-font-secondary) !important;}
body > .modalback .ryujinAttendancePerson small {font-size:var(--ry-font-caption) !important;}
body > .modalback .ryujinAttendance .attlist > .ryujinAttendancePerson {display:block;grid-template-columns:none;}
body > .modalback .ryujinAttendancePerson label {display:flex;align-items:center;gap:12px;}
body > .modalback .ryujinAttendancePerson input.att-include {width:18px;height:18px;margin:0;flex:0 0 18px;}

.ryujinParticipantConsent{display:flex;align-items:center;gap:10px;font:inherit;cursor:pointer;margin:12px 0;}
.ryujinParticipantConsent input{width:18px;height:18px;flex-shrink:0;}

/* 0.46.5w: einspaltige, separate Freigabe ohne zusätzliche Überschrift */
.ryujinPublicationConsentFrame{margin-top:20px;padding:14px 16px;border:1px solid #e8e1e1;border-radius:12px;width:100%;box-sizing:border-box;}
.ryujinPublicationConsentFrame .memberPublicationRow{font-size:var(--ry-font-secondary);}
.ryujinPublicationConsentFrame .ryujinParticipantConsent{font-size:var(--ry-font-secondary);}

/* v0.46.5x publication consent rows */
.ryujinConsentList .memberPublicationRow{display:flex;align-items:center;justify-content:space-between;gap:18px;min-height:43px;padding:9px 0;font-size:var(--ry-font-secondary);}
.ryujinConsentControls{display:flex;align-items:center;justify-content:flex-end;gap:20px;flex-wrap:wrap;}
.ryujinConsentControls label{display:flex;align-items:center;gap:7px;font-size:var(--ry-font-secondary);white-space:nowrap;}
.ryujinConsentControls em{min-width:130px;text-align:right;font-size:var(--ry-font-secondary);}
.ryujinConsentActions{margin-top:24px;display:flex;flex-direction:column;align-items:flex-start;gap:14px;}
.ryujinConsentActions .muted{margin:4px 0 0;line-height:1.5;}
@media(max-width:700px){.ryujinConsentList .memberPublicationRow{align-items:flex-start;flex-wrap:wrap}.ryujinConsentControls{width:100%;justify-content:space-between}}

/* v0.46.5y: Abstand zwischen Teilnehmernamen und Datenschutzhinweis */
.ryujinVisibleParticipants + p.muted { margin-top: 16px !important; }

/* 0.46.6r: large application dashboard action */
.stats > button.stat.ryujinApplicationDashboardStat b{font-size:clamp(22px,2.1vw,36px)!important;line-height:1.16!important;font-weight:750!important;white-space:normal!important;overflow-wrap:break-word!important;margin:0!important;}

/* Probetraining: compact one-line application dashboard title */
.stats > button.stat.ryujinApplicationDashboardStat b{font-size:clamp(16px,1.65vw,24px)!important;white-space:nowrap!important;overflow-wrap:normal!important;letter-spacing:-.35px!important;}

/* v0.46.6w: Dashboard application tile, aligned and one line */
.stats > button.stat.ryujinApplicationDashboardStat{display:flex!important;align-items:center!important;justify-content:center!important;text-align:center!important;}
.ryujinApplicationTileInner{display:inline-flex!important;align-items:center!important;justify-content:center!important;gap:10px!important;width:100%;white-space:nowrap!important;color:#191919!important;}
.stats > button.stat.ryujinApplicationDashboardStat .ryujinApplicationTileInner b{font-size:clamp(15px,1.45vw,22px)!important;line-height:1.2!important;white-space:nowrap!important;letter-spacing:-.3px!important;}
.ryujinApplicationTileInner svg{flex:0 0 25px;color:#8d2639;}
/* Clear two-column bank detail layout */
.ryujinMemberFinance > .historyrow{display:grid!important;grid-template-columns:minmax(160px,35%) minmax(0,1fr)!important;align-items:center!important;gap:12px!important;padding:12px 16px!important;border-bottom:1px solid #eee!important;}
.ryujinMemberFinance > .historyrow span{font-size:var(--ry-font-secondary)!important;color:#666!important;white-space:nowrap!important;}
.ryujinMemberFinance > .historyrow b{font-size:var(--ry-font-secondary)!important;min-width:0!important;overflow-wrap:anywhere!important;}
.ryujinOwnBank #ryujinBankDisplay{min-width:0;overflow-wrap:anywhere;}
@media(max-width:520px){.stats > button.stat.ryujinApplicationDashboardStat .ryujinApplicationTileInner b{font-size:var(--ry-font-body)!important}.ryujinApplicationTileInner{gap:6px!important}.ryujinApplicationTileInner svg{width:20px;height:20px;flex-basis:20px}.ryujinMemberFinance > .historyrow{grid-template-columns:1fr!important;gap:3px!important}}

.ryujinApplicationTileInner svg{color:#191919!important;stroke:#191919!important}

.pdata aside.ryujinEmergencyPanel{align-items:center;gap:12px;flex-wrap:wrap}.ryujinEmergencyPanel span{font-weight:600}.ryujinEmergencyPanel a{color:#a90020;text-decoration:underline}

/* Rechteverwaltung: Anzeigen links, Bearbeiten/weitere Aktionen rechts. */
#rightsPane > .permissionGrid{grid-template-columns:repeat(2,minmax(0,1fr))!important;column-gap:20px!important}
#rightsPane > .permissionGrid > *{min-width:0}
#rightsPane .ryujinPermissionEmpty{border-bottom:1px solid #eee}
@media(max-width:800px){#rightsPane > .permissionGrid{grid-template-columns:repeat(2,minmax(0,1fr))!important;column-gap:8px!important}}

/* 0.46.7a: Notfallkontakt als rechte Kachel der Personenübersicht */
.pdata aside.ryujinEmergencyPanel{grid-column:2 / 3!important;justify-content:flex-end!important;text-align:right!important;flex-direction:column!important;align-items:flex-end!important;gap:5px!important}
@media(max-width:650px){.pdata aside.ryujinEmergencyPanel{grid-column:1 / -1!important}}

/* Feste Trennlinie in der Gruppenrechteverwaltung */
#rightsPane > .permissionGrid > .ryujinPermissionSeparator{grid-column:1/-1;border-top:2px solid #111;margin:16px 0 12px;min-height:0;border-bottom:0}

/* 0.46.7c: Notfallkontakt als durchgehender, linksbuendiger Informationsstreifen. */
.pdata aside.ryujinEmergencyPanel{grid-column:1 / -1!important;grid-row:auto!important;width:auto!important;box-sizing:border-box!important;justify-content:flex-start!important;text-align:left!important;flex-direction:row!important;align-items:center!important;gap:14px!important;flex-wrap:wrap!important}
.pdata aside.ryujinEmergencyPanel>b{flex:0 0 auto}
.pdata aside.ryujinEmergencyPanel>span{flex:1 1 auto;text-align:left!important}
@media(max-width:650px){.pdata aside.ryujinEmergencyPanel{grid-column:1 / -1!important}}

/* 0.46.7i: Dokumente kompakt in einer Zeile */
.membertabbody .ryujinDocumentRow{display:flex!important;align-items:center!important;justify-content:space-between!important;gap:16px!important;flex-wrap:nowrap!important}
.membertabbody .ryujinDocumentRow>span{display:flex!important;align-items:center!important;gap:12px!important;min-width:0!important;flex:1!important}
.membertabbody .ryujinDocumentRow>span>b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.membertabbody .ryujinDocumentRow>span>small{white-space:nowrap;margin:0!important}
.membertabbody .ryujinDocumentRow>a{white-space:nowrap;flex-shrink:0}

.membertabbody .ryujinDocumentRow>button{white-space:nowrap;flex-shrink:0;cursor:pointer}

/* Version 0.46.7l: Passbild im eigenen Konto */
.ryujinOwnPhotoBox{border:1px solid #e7dadd;border-radius:12px;padding:18px;margin-bottom:18px}
.ryujinOwnPhotoBox form{display:flex;align-items:center;flex-wrap:wrap;gap:12px}
.ryujinOwnPhotoBox small{width:100%;color:#666}

/* v0.46.7y: Veröffentlichungsstatus vor Freigabe-Aktion; klare Statusfarben */
.memberPublicationRow em.off{color:#b42338;font-weight:700}
.memberPublicationRow em.on{color:#26743b;font-weight:700}
.ryujinConsentControls{gap:20px}
.ryujinConsentControls em{order:0;min-width:130px;text-align:right}
.ryujinConsentControls label{order:1;min-width:145px;justify-content:flex-start}

/* Materialbeschaffung: neutraler Akkordeonhintergrund und großzügigere Titelabstände */
.materialAccordion .materialSubmenu.open{background:#f1f2f4;border-left-color:#d5d8dd;border-radius:0 0 10px 10px;padding:12px 12px 12px 18px;margin:0 10px 0 10px}
.materialAccordion>.orderrow em{display:inline-block;margin-bottom:0}
.materialAccordion>.orderrow strong{margin-top:5px}

.ryujinBirthdayHint{background:#f9edf1;border:1px solid #ead0d8;border-radius:8px;padding:7px 9px;color:#802e4d;font-weight:600;font-size:var(--ry-font-caption);margin-bottom:6px;pointer-events:none}

.ryujinClubFunctionList{display:grid;gap:12px;margin:18px 0}.ryujinClubFunctionItem{padding:16px;border:1px solid #e1e1e1;border-radius:12px;display:grid;gap:12px}.ryujinClubFunctionHeading{display:flex;align-items:center;justify-content:space-between;gap:12px}.ryujinClubFunctionHeading strong{font-size:1rem}.ryujinClubFunctionItem label{display:grid;gap:6px;font-size:.92rem;font-weight:600}.ryujinClubAssigned{display:flex;flex-wrap:wrap;gap:8px}.ryujinClubAssigned span{display:inline-flex;align-items:center;gap:6px;padding:3px 8px;border-radius:8px;background:#f3f3f3;font-size:.9rem}.ryujinClubAssigned button{padding:2px 7px!important}

/* v0.46.8k – Trainingskalender: gut lesbarer, vollständig zentrierter Dialog */
body > .modalback:has(.ryuCalendarPopup){padding:16px!important;place-items:center!important}
body > .modalback .modal:has(.ryuCalendarPopup){width:min(300px,calc(100vw - 32px))!important;min-width:0!important;max-width:calc(100vw - 32px)!important;max-height:calc(100dvh - 32px)!important;overflow:auto!important;background:#fff!important;border-radius:16px!important;box-shadow:0 20px 60px #0005!important}
body > .modalback .modal:has(.ryuCalendarPopup) > .modalhead{display:none!important}
body > .modalback .ryuCalendarPopup{width:100%!important;max-width:none!important;box-sizing:border-box!important;border-radius:16px!important;overflow:hidden!important;box-shadow:none!important}
body > .modalback .ryuCalTop{grid-template-columns:30px minmax(0,1fr) 30px!important;padding:10px 36px 10px 8px!important;border-radius:16px 16px 0 0!important;min-height:56px;box-sizing:border-box}
body > .modalback .ryuCalTop strong{font-size:var(--ry-font-body)!important;white-space:nowrap}
body > .modalback .ryuCalTop button{font-size:var(--ry-font-section)!important;height:30px!important;min-width:30px!important}
body > .modalback .ryuCalTop .ryuCalClose{top:12px;right:6px;width:28px;height:28px!important;font-size:var(--ry-font-section)!important}
body > .modalback .ryuCalWeek{padding:10px 8px 8px!important;font-size:var(--ry-font-secondary)!important}
body > .modalback .ryuCalGrid{padding:8px 8px!important;gap:3px!important}
body > .modalback .ryuCalDay{font-size:var(--ry-font-secondary)!important;min-width:0!important;min-height:34px!important;aspect-ratio:1!important}
body > .modalback .ryuCalDay i{bottom:4px!important;width:5px!important;height:5px!important}
body > .modalback .ryuCalFoot{padding:12px 14px!important;font-size:var(--ry-font-caption)!important}
body > .modalback .ryuCalFoot span{gap:7px!important}
body > .modalback .ryuCalFoot span i{width:7px!important;height:7px!important}
body > .modalback .ryuCalFoot button{font-size:var(--ry-font-secondary)!important;padding:7px 10px!important}
@media(max-width:440px){body > .modalback .ryuCalDay{font-size:var(--ry-font-secondary)!important;min-height:34px!important}body > .modalback .ryuCalTop strong{font-size:var(--ry-font-body)!important}}
/* Trainingsübersicht: Prüfungsfortschritt */
.trainingExamStat{min-width:0}.trainingExamStat .statLabel{color:#666;font-size:var(--ry-font-caption)}.trainingExamCard{display:flex;flex-direction:column;gap:7px;margin-top:8px}.trainingExamCard strong{font-size:24px;color:#191919}.trainingExamCard span{font-size:var(--ry-font-caption);font-weight:650}.trainingExamCard small{font-size:var(--ry-font-caption);line-height:1.4;color:#777}.trainingExamBar{height:8px;background:#eee;border-radius:99px;overflow:hidden;margin:5px 0}.trainingExamBar>div{height:100%;background:#9f1633;border-radius:99px}
.trainingHintStat{min-width:0}.trainingHintStat .statLabel{font-size:var(--ry-font-caption);color:#666}.trainingHintStat>strong{display:block;font-size:var(--ry-font-section);margin:8px 0}.trainingHintStat>span{display:block;font-size:var(--ry-font-caption);margin-top:12px;color:#777}.trainingHintList{display:flex;flex-direction:column;gap:7px;max-height:132px;overflow-y:auto}.trainingHintItem{display:flex;flex-direction:column;gap:2px;border-left:3px solid #9f1633;padding-left:8px;font-size:var(--ry-font-caption);line-height:1.4}.trainingHintItem small{color:#777;font-size:var(--ry-font-caption)}

/* 0.46.8p – einheitliche Mitgliederdetails und klare Abschnittstrennung */
.membertabbody .tabaction{text-align:left;justify-self:start}
.membertabbody .memberTrainingGroupEditor #memberTrainingGroupChoices{margin-bottom:18px}
.membertabbody .ryujinMemberSectionTitle{font-size:var(--ry-font-secondary);font-weight:700;margin:18px 0 12px;color:#333}
.membertabbody .ryujinMemberHistoryDivider{height:1px;background:#dedede;margin:24px 0}
.membertabbody .tabsection,.membertabbody .tabcards,.membertabbody .pdata{font-size:var(--ry-font-caption)}
.membertabbody .tabsection p,.membertabbody .tabsection label,.membertabbody .tabcards p,.membertabbody .tabcards label,.membertabbody .historyrow span b,.membertabbody .historyrow strong{font-size:var(--ry-font-caption)}
.membertabbody .tabsection .muted,.membertabbody .historyrow span small{font-size:var(--ry-font-caption)}

/* Kommunikation: kompakte Kopfzeile und Plus-Menü */
.conversationHead{align-items:flex-start;gap:12px}.conversationHead>div:first-child{min-width:0;flex:1}.commHeadActions{display:flex;align-items:center;gap:8px;flex-shrink:0}.commHeadActions .white{white-space:nowrap;font-size:var(--ry-font-caption)}.commHeadMore{border:0;background:transparent;color:#b90020;font-size:var(--ry-font-section);cursor:pointer}.ryujinCommComposer{display:block}.ryujinCommComposer textarea{display:block;width:100%;box-sizing:border-box}.ryujinComposerActions{display:flex;justify-content:flex-end;align-items:center;gap:8px;margin-top:8px}.ryujinComposerPlus{position:relative}.ryujinPlusButton{font-size:var(--ry-font-section);min-width:42px;min-height:38px;line-height:1}.ryujinComposerMenu{position:absolute;bottom:calc(100% + 6px);right:0;z-index:30;background:white;border:1px solid #e3dadd;box-shadow:0 6px 22px #0002;border-radius:10px;min-width:160px;padding:5px}.ryujinComposerMenu[hidden]{display:none}.ryujinComposerMenu button{display:flex;align-items:center;gap:9px;width:100%;border:0;background:white;text-align:left;border-radius:6px;padding:10px;cursor:pointer;font-size:var(--ry-font-caption)}.ryujinComposerMenu button:hover{background:#faf0f2}@media(max-width:520px){.conversationHead{flex-wrap:wrap}.commHeadActions{width:100%;justify-content:flex-end}}

/* Align the search glyph with the center of the knowledge search input. */
.knowledgeSearch span{top:50%;transform:translateY(-50%);line-height:1;pointer-events:none}

/* 0.46.8u – Kommunikation: kompakte Aktionsschaltfläche links */
.ryujinComposerActions{justify-content:flex-end!important;width:100%}
.ryujinComposerActions>.red{margin-left:auto}
.ryujinComposerActions>.red,.ryujinPlusButton{height:36px!important;min-height:36px!important;box-sizing:border-box}
.ryujinPlusButton{width:36px!important;min-width:36px!important;padding:0!important;font-size:var(--ry-font-section)!important;display:flex;align-items:center;justify-content:center}
.ryujinComposerMenu{left:0;right:auto}

/* v0.46.9e: Graduierungsgrafik neben der Dashboard-Begruessung */
.dashboardWelcomeGrid .dashboardWelcomeIdentity{display:flex;align-items:center;gap:24px;min-width:0;flex-wrap:wrap}
.dashboardWelcomeGrid .dashboardWelcomeIdentityText{min-width:0}
.dashboardWelcomeGrid .dashboardWelcomeBelt{height:76px;max-width:190px;display:flex;align-items:center;flex:0 1 auto}
.dashboardWelcomeGrid .dashboardWelcomeBelt img{display:block;max-height:100%;max-width:100%;width:auto;height:auto;object-fit:contain}
@media(max-width:650px){.dashboardWelcomeGrid .dashboardWelcomeIdentity{gap:12px}.dashboardWelcomeGrid .dashboardWelcomeBelt{height:58px;max-width:130px}}

/* v0.46.9g: Einheitliche Einstellungsrahmen und rechter Einladungsbutton */
.settingscard,.appearanceCard{width:100%;max-width:760px;box-sizing:border-box}
.settingscard+.appearanceCard{margin-top:22px}
.peopleTopTabs .prospectInviteCreateButton{margin-left:auto}

/* 0.46.9i: Ursprüngliche zweispaltige Breite, nur die Höhe kompakt */
.adminLaunch.adminLaunchCompact{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;max-width:1120px}
.adminLaunchCompact .adminTile{min-height:105px;padding:15px 16px}
.adminLaunchCompact .adminTile b{font-size:var(--ry-font-secondary);margin-bottom:9px;line-height:1.3}
.adminLaunchCompact .adminTile span{font-size:var(--ry-font-caption);line-height:1.4;display:block}

@media(max-width:600px){.adminLaunch.adminLaunchCompact{grid-template-columns:1fr}}

/* Vereinsdaten: zwei gleich breite, weit gefasste Karten mit Abstand */
.ryujinClubDataCard{width:100%;max-width:1100px;box-sizing:border-box}
.ryujinClubDataCard+.ryujinClubDataCard{margin-top:24px}
.ryujinClubDataCard .muted{line-height:1.5;overflow-wrap:anywhere}

/* Vereinsdaten: Untertitel bündig mit der Rahmenüberschrift */
.ryujinClubDataCard .ryujinClubFunctionSubtitle{margin:0 16px 18px;padding:0;box-sizing:border-box;}

/* v0.46.9s – einheitliche Ausrichtung der Berechtigungsverwaltung */
.ryujinRoleSelector .paneTitle{padding-left:16px!important}
.ryujinRoleSelector .ryujinRoleTabs{display:flex!important;justify-content:flex-start!important;align-items:center!important;flex-wrap:wrap!important;margin:10px 16px 12px!important;padding:0!important;gap:9px!important}
.ryujinRoleSelector .adminNote{font-size:var(--ry-font-secondary)!important;line-height:1.5!important;padding:0 16px 18px!important;margin:0!important}
.ryujinRightsTiles .adminTile{display:flex!important;align-items:center!important;justify-content:flex-start!important;text-align:left!important}
.ryujinRightsTiles .adminTile b{font-size:var(--ry-font-secondary)!important;line-height:1.3!important;margin:0!important;font-weight:700!important}
#rightsPane > .paneTitle{padding:18px 32px 10px!important;justify-content:flex-start!important}
#rightsPane > .paneTitle h2{margin:0!important}
#rightsPane > .roleRightsIntro{margin:0 32px 20px!important;max-width:none!important}
#rightsPane > .roleRightsSections{padding:0 32px 30px!important}
#rightsPane > #ryujinGroupRightsBody{padding:0 32px 30px!important}
#ryujinGroupRightsBody > .roleRightsSection{border:1px solid #e7dfe1!important;border-radius:12px!important;overflow:hidden!important;background:#fff!important}
#ryujinGroupRightsBody .roleRightsSectionHead{padding:18px 20px 13px!important;background:#fbf8f9!important;border-bottom:1px solid #eee7e9!important}
#ryujinGroupRightsBody .roleRightsSectionHead h3{font-size:var(--ry-font-secondary)!important;font-weight:700!important;margin:0 0 4px!important}
#ryujinGroupRightsBody .roleRightsSectionHead p{font-size:var(--ry-font-caption)!important;line-height:1.5!important;margin:0!important;color:#776f72!important}
#ryujinGroupRightsBody .permissionGrid{padding:8px 20px 14px!important}
@media(max-width:780px){#rightsPane > .paneTitle{padding-left:16px!important;padding-right:16px!important}#rightsPane > .roleRightsIntro{margin-left:16px!important;margin-right:16px!important}#rightsPane > #ryujinGroupRightsBody{padding-left:16px!important;padding-right:16px!important}}


/* v0.46.9u: nur die inneren Berechtigungskarten, größere Reiterbeschriftung */
.ryujinRightsTiles .adminTile b {
  font-family:inherit!important;
  font-size:var(--ry-font-body)!important;
  font-weight:500!important;
  line-height:1.3!important;
  letter-spacing:normal!important;
}
#rightsPane > .roleRightsSections,
#rightsPane > #ryujinGroupRightsBody { padding-top:24px!important; }


/* 0.46.9v – Rollenaktionen im Auswahlrahmen; Bereichskacheln wie Rollenbuttons */
.ryujinRoleSelector .ryujinRoleActions{display:flex;flex-wrap:wrap;gap:10px;padding:0 16px 18px;align-items:center}
.ryujinRoleSelector .ryujinRoleActions button{font:inherit;font-size:var(--ry-font-secondary);padding:9px 15px}
.ryujinRightsTiles .adminTile b{font-family:inherit!important;font-size:var(--ry-font-body)!important;font-weight:500!important;letter-spacing:normal!important;line-height:1.35!important}
.ryujinRightsFooter .ryujinSaveRights{display:inline-flex;align-items:center;justify-content:center;padding:10px 18px;border-radius:9px;background:#792b3d;color:#fff;border:1px solid #792b3d;cursor:pointer;font:inherit}

/* v0.46.9w: klassische Rollenaktionen und luftiger Speichern-Abschluss */
.ryujinRoleSelector .ryujinRoleActions{gap:14px!important;padding-top:4px!important}
.ryujinRoleSelector .ryujinRoleActions button{
  font-size:var(--ry-font-caption)!important;font-weight:600!important;
  color:#a12840!important;background:transparent!important;
  border:0!important;padding:6px 4px!important;
  border-radius:0!important;cursor:pointer!important;
}
.ryujinRoleSelector .ryujinRoleActions button:hover{text-decoration:underline!important}
.adminRightsGrid #rightsPane .ryujinRightsFooter{
  padding:20px 44px 42px 32px!important;
  margin-top:26px!important;
  margin-bottom:14px!important;
}
.adminRightsGrid #rightsPane .ryujinRightsFooter .ryujinSaveRights{
  padding:12px 20px!important;
  color:#fff!important;background:#792b3d!important;
  border:1px solid #792b3d!important;border-radius:9px!important;
  font-size:var(--ry-font-secondary)!important;font-weight:600!important;text-decoration:none!important;
}

/* v0.46.9x – gemeinsamer Speichern-Abschluss mit fester Position */
.ryujinSharedSaveFooter{display:flex;justify-content:flex-end;align-items:center;box-sizing:border-box;min-height:90px;padding:20px 34px 30px;margin-top:0}
.ryujinSharedSaveFooter .ryujinSaveRights{display:inline-flex;align-items:center;justify-content:center;min-width:156px;padding:12px 20px;background:#792b3d;color:white;border:1px solid #792b3d;border-radius:9px;font:600 14px inherit;cursor:pointer}
.ryujinSharedSaveFooter .ryujinSaveRights:disabled{opacity:.45;cursor:not-allowed}
@media(max-width:780px){.ryujinSharedSaveFooter{padding:18px 20px 28px}}
.ryujinSharedSaveFooter .ryujinSaveRights{font-family:inherit;font-size:var(--ry-font-secondary);font-weight:600}

/* 0.46.9z: kompakter gemeinsamer Speichern-Button */
.ryujinSharedSaveFooter .ryujinSaveRights{min-width:0!important;padding:9px 15px!important;font-size:var(--ry-font-secondary)!important}

/* v0.47.0a: Trennlinie innerhalb der Menüfreigabe und zwei Themenrahmen */
#ryujinGroupRightsBody .permissionGrid > .ryujinPermissionSeparator{grid-column:1 / -1!important;border-top:2px solid #111!important;margin:16px 0 12px!important;min-height:0!important;}
#rightsPane .roleRightsSections{display:flex;flex-direction:column;gap:18px;}

/* v0.47.0c: die bestehende graue Linie unter Training wird stärker; schwarze Zusatzlinie entfällt */
#ryujinGroupRightsBody .permissionGrid > .ryujinPermissionSeparator { display:none!important; }
#ryujinGroupRightsBody .permissionGrid > label.ryujinTrainingDivider { border-bottom:3px solid #c9c9c9!important; }

/* v0.47.0d: schwarze, durchgehende Trennlinie über beide Spalten */
#ryujinGroupRightsBody .permissionGrid > .ryujinPermissionSeparator{
 display:block!important;grid-column:1 / -1!important;border:0!important;
 border-top:3px solid #111!important;width:100%!important;
 margin:12px 0!important;padding:0!important;box-sizing:border-box!important;
}
#ryujinGroupRightsBody .permissionGrid > label.ryujinTrainingDivider{
 border-bottom:1px solid #f1edef!important;
}

/* Centrally managed club branding and settings spacing */
.ryujinLoginEmblem{background:#fff;overflow:hidden;box-sizing:border-box;padding:12px}
.ryujinLoginEmblem img{display:block;width:100%;height:100%;object-fit:contain;object-position:center}
.ryujinQuotesSettings{margin-top:30px}
.ryujinQuoteDescription{margin-left:22px;margin-right:18px}
.ryujinQuoteCount{margin-left:22px;padding-left:0}
.ryujinClubLogoSettings{margin-top:24px}
.ryujinClubLogoPreview{display:grid;place-items:center;width:150px;height:150px;margin:12px 0 18px 22px;border:1px solid #ddd;border-radius:50%;background:#fff;overflow:hidden;padding:12px;box-sizing:border-box}
.ryujinClubLogoPreview img{width:100%;height:100%;object-fit:contain}

.ryujinQuoteAuthor{display:block;margin-top:9px;font-size:.8em;font-style:normal;opacity:.85;text-align:right}
.ryujinRegistrationStatus{margin:8px 0 12px;color:#35744c;font-weight:600}

/* 0.47.1b: allow the quotation to extend leftwards without moving the date. */
.dashboardWelcomeGrid .dashboardDateQuote{position:relative!important;overflow:visible!important;min-width:0!important}
.dashboardWelcomeGrid .dashboardDateQuote em{width:clamp(270px,35vw,620px);max-width:calc(100vw - 48px);transform:translateX(clamp(-290px,-16vw,-90px));margin-top:0;line-height:1.4;text-align:left}
.dashboardWelcomeGrid .dashboardDateQuote b{position:relative;z-index:1}
@media(max-width:900px){.dashboardWelcomeGrid .dashboardDateQuote em{width:100%;transform:none}}

/* v0.47.1c: Einzeilige Dashboard-Zitate rechtsbuendig. */
.dashboardWelcomeGrid .dashboardDateQuote em.ryujinSingleLineQuote{text-align:right}

/* Gebührenübersicht und Datum */
.dashboardWelcomeGrid .dashboardDateQuote b{text-align:right!important}
.ryujinFeeTabs{display:flex;gap:12px;margin:16px 0 22px}
.feeRows{display:grid;gap:10px}.feeRow{display:flex;align-items:center;gap:14px;padding:15px;border:1px solid #e6dfe0;border-radius:10px;flex-wrap:wrap}.feeRow>div{flex:1;min-width:220px}.feeRow small{display:block;color:#777;margin-top:5px}.feeRow strong{white-space:nowrap}

/* v0.47.3: date visible at top-right even with long quotes */
.dashboardWelcomeGrid .dashboardDateQuote{display:flex!important;flex-direction:column!important;align-items:flex-end!important;width:100%!important;min-width:0!important}
.dashboardWelcomeGrid .dashboardDateQuote b{display:block!important;visibility:visible!important;opacity:1!important;white-space:nowrap!important;text-align:right!important;width:100%!important;position:relative!important;z-index:5!important;color:#555!important;font-size:var(--ry-font-secondary)!important;line-height:1.5!important}

/* v0.47.4: clear quote controls and visible dashboard date */
.ryujinQuotesSettings .settingsform{display:flex!important;flex-direction:column!important;align-items:flex-start!important;gap:18px!important}
.ryujinQuotesSettings .settingsform .wide{width:auto!important;display:block!important}
.ryujinQuotesSettings .ryujinQuoteDownload{display:block;clear:both;margin:18px 0 8px 0;font-size:var(--ry-font-secondary);line-height:1.5}
.ryujinQuotesSettings .ryujinQuoteDownload a{font-size:var(--ry-font-secondary)!important;display:inline-block!important;text-decoration:underline}
.ryujinQuotesSettings .ryujinQuoteCount{display:block;clear:both;margin-top:8px!important}
.dashboardWelcomeGrid .dashboardDateQuote b{display:block!important;position:static!important;transform:none!important;opacity:1!important;visibility:visible!important;color:#555!important;text-align:right!important;min-height:24px!important}
.dashboardWelcomeGrid .dashboardDateQuote em.ryujinSingleLineQuote{text-align:right!important}

.dashboardWelcomeGrid{position:relative!important}
.dashboardWelcomeGrid .dashboardDateQuote b{position:absolute!important;top:0!important;right:0!important;width:auto!important;z-index:10!important}
.dashboardWelcomeGrid .dashboardDateQuote em{margin-top:36px!important}

/* v0.47.5: Dashboard-Datum links im rechten Bereich; nur kurze Zitate rechtsbündig. */
.dashboardWelcomeGrid .dashboardDateQuote{position:relative!important;display:flex!important;flex-direction:column!important;align-items:stretch!important;width:100%!important;min-width:0!important;overflow:visible!important}
.dashboardWelcomeGrid .dashboardDateQuote b{position:static!important;display:block!important;width:auto!important;align-self:flex-start!important;text-align:left!important;transform:none!important;margin:0 0 10px!important;white-space:nowrap!important}
.dashboardWelcomeGrid .dashboardDateQuote em{margin-top:0!important;align-self:flex-end!important}
.dashboardWelcomeGrid .dashboardDateQuote em.ryujinSingleLineQuote{text-align:right!important}
/* Zitate: Download und Anzahl gehören direkt unter den Upload. */
.ryujinQuotesSettings .settingsform{display:flex!important;flex-direction:column!important;align-items:flex-start!important;gap:14px!important;width:100%!important}
.ryujinQuotesSettings .settingsform label{display:flex!important;flex-direction:column!important;align-items:flex-start!important;gap:8px!important;width:auto!important;max-width:100%!important}
.ryujinQuotesSettings .settingsform input[type=file]{width:auto!important;max-width:100%!important}
.ryujinQuotesSettings .settingsform .wide{display:block!important;flex:none!important;width:auto!important;margin:0!important;padding:0!important}
.ryujinQuotesSettings .ryujinQuoteDownload{display:block!important;width:fit-content!important;max-width:100%!important;margin:12px 0 0 22px!important;padding:0!important;line-height:1.4!important}
.ryujinQuotesSettings .ryujinQuoteDownload a{font-size:var(--ry-font-secondary)!important;font-weight:400!important;color:#6b3659!important;text-decoration:underline!important;display:inline!important}
.ryujinQuotesSettings .ryujinQuoteCount{display:block!important;margin:8px 0 0 22px!important;padding:0!important;font-size:var(--ry-font-secondary)!important}
/* Fahrtkosten: gleiche Abstände und Eingabeoptik wie die übrigen Administrationskarten. */
.ryujinMileageCard{padding:0!important;overflow:hidden!important}
.ryujinMileageCard .paneTitle{padding:20px 26px!important;margin:0!important;border-bottom:1px solid #e9e5e5!important}
.ryujinMileageCard .paneTitle h2{margin:0 0 6px!important}
.ryujinMileageCard .paneTitle p{margin:0!important;font-size:var(--ry-font-secondary)!important}
.ryujinMileageForm{display:flex;flex-direction:column;align-items:flex-start;gap:12px;padding:24px 26px 26px;max-width:550px}
.ryujinMileageForm>label{font-size:var(--ry-font-secondary);font-weight:600}
.ryujinMileageInputRow{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.ryujinMileageInputRow input{width:140px!important;min-height:42px;box-sizing:border-box;border:1px solid #d8d8d8;border-radius:8px;padding:9px 12px;font:inherit;background:white}
.ryujinMileageInputRow span{font-size:var(--ry-font-secondary);color:#666}
.ryujinMileageHint{font-size:var(--ry-font-caption)!important;margin:0!important}
.ryujinMileageActions{margin-top:8px}
.ryujinMileageActions button{padding:11px 18px!important;border-radius:9px!important}

/* v0.47.6: Quote settings: a single aligned vertical column, with bottom breathing room. */
.ryujinQuotesSettings{padding-bottom:32px!important}
.ryujinQuotesSettings .paneTitle,.ryujinQuotesSettings .ryujinQuoteDescription,.ryujinQuotesSettings .settingsform,.ryujinQuotesSettings .ryujinQuoteDownload,.ryujinQuotesSettings .ryujinQuoteCount{margin-left:22px!important;margin-right:22px!important}
.ryujinQuotesSettings .settingsform{display:flex!important;flex-direction:column!important;align-items:flex-start!important;gap:14px!important;margin-top:20px!important;margin-bottom:0!important;width:auto!important}
.ryujinQuotesSettings .settingsform label,.ryujinQuotesSettings .settingsform .wide{margin-left:0!important;padding-left:0!important}
.ryujinQuotesSettings .ryujinQuoteDownload{margin-top:18px!important;margin-bottom:0!important;width:auto!important}
.ryujinQuotesSettings .ryujinQuoteCount{margin-top:12px!important;margin-bottom:16px!important;padding:0!important}
/* Dashboard: give the quote a wider shared right edge while date stays left in its column. */
.dashboardWelcomeGrid .dashboardDateQuote{position:relative!important;overflow:visible!important;align-items:stretch!important}
.dashboardWelcomeGrid .dashboardDateQuote b{align-self:flex-start!important;text-align:left!important}
.dashboardWelcomeGrid .dashboardDateQuote em{box-sizing:border-box!important;width:min(58vw,850px)!important;max-width:calc(100vw - 48px)!important;transform:none!important;position:relative!important;left:auto!important;align-self:flex-end!important;margin:0!important;text-align:right!important;line-height:1.4!important}
.dashboardWelcomeGrid .dashboardDateQuote .ryujinQuoteAuthor{display:block!important;text-align:right!important;width:100%!important}
@media(max-width:900px){.dashboardWelcomeGrid .dashboardDateQuote em{width:min(85vw,650px)!important}}

/* v0.47.7 – Zitateinstellungen: alle Elemente auf einer linken Achse. */
.ryujinQuotesSettings{padding:22px 28px 42px!important;box-sizing:border-box!important}
.ryujinQuotesSettings>.paneTitle,.ryujinQuotesSettings>.ryujinQuoteDescription,.ryujinQuotesSettings>form.settingsform,.ryujinQuotesSettings>.ryujinQuoteDownload,.ryujinQuotesSettings>.ryujinQuoteCount{margin-left:0!important;margin-right:0!important;padding-left:0!important;padding-right:0!important;box-sizing:border-box!important}
.ryujinQuotesSettings>.paneTitle{padding-top:0!important;padding-bottom:0!important;justify-content:flex-start!important}
.ryujinQuotesSettings>.ryujinQuoteDescription{margin-top:12px!important;margin-bottom:0!important}
.ryujinQuotesSettings>form.settingsform{display:flex!important;flex-direction:column!important;align-items:flex-start!important;width:100%!important;gap:16px!important;margin-top:28px!important}
.ryujinQuotesSettings>form.settingsform>label,.ryujinQuotesSettings>form.settingsform>.wide{margin:0!important;padding:0!important;align-self:flex-start!important}
.ryujinQuotesSettings>.ryujinQuoteDownload{margin-top:20px!important}
.ryujinQuotesSettings>.ryujinQuoteCount{margin-top:14px!important;margin-bottom:0!important}
/* Dashboard: linke Grenze des Zitats ist der Anfang der dritten Statistik-Kachel. */
.dashboardWelcomeGrid>.dashboardDateQuote{grid-column:3 / 5!important;justify-self:stretch!important;width:100%!important;max-width:100%!important;min-width:0!important;box-sizing:border-box!important;overflow:visible!important}
.dashboardWelcomeGrid>.dashboardDateQuote>b{margin-left:50%!important;align-self:stretch!important;text-align:left!important;white-space:nowrap!important}
.dashboardWelcomeGrid>.dashboardDateQuote>em{display:block!important;box-sizing:border-box!important;width:100%!important;max-width:100%!important;min-width:0!important;transform:none!important;overflow-wrap:break-word!important;white-space:normal!important;text-align:right!important;align-self:stretch!important}
.dashboardWelcomeGrid>.dashboardDateQuote>em .ryujinQuoteAuthor{text-align:right!important}
@media(max-width:760px){.dashboardWelcomeGrid>.dashboardDateQuote{grid-column:1/-1!important}.dashboardWelcomeGrid>.dashboardDateQuote>b{margin-left:0!important}}
/* v0.47.8: Date and quote start at the same top line as the greeting. */
.dashboardWelcomeGrid{align-items:start!important;align-content:start!important}
.dashboardWelcomeGrid>.dashboardDateQuote{grid-row:1!important;align-self:start!important;justify-self:stretch!important;justify-content:flex-start!important;margin-top:0!important;padding-top:0!important;gap:0!important}
.dashboardWelcomeGrid>.dashboardDateQuote>b{margin-top:0!important;margin-bottom:8px!important;line-height:1.35!important}
.dashboardWelcomeGrid>.dashboardDateQuote>em{margin-top:0!important;margin-bottom:0!important}
.dashboardWelcomeGrid>.dashboardWelcomeLeft{grid-row:1!important;align-self:start!important}
@media(max-width:760px){.dashboardWelcomeGrid>.dashboardDateQuote{grid-row:auto!important}.dashboardWelcomeGrid>.dashboardWelcomeLeft{grid-row:auto!important}}

/* Dashboard message previews are keyboard-accessible links to their chats. */
.ryujinDashboardMessageLink{display:block;width:100%;border:0;border-bottom:1px solid #eee;padding:0;background:transparent;text-align:left;color:inherit;cursor:pointer;font:inherit}
.ryujinDashboardMessageLink .msg{border-bottom:0}
.ryujinDashboardMessageLink:hover,.ryujinDashboardMessageLink:focus-visible{background:#fff2f4}
.ryujinDashboardMessageLink:focus-visible{outline:2px solid #b90020;outline-offset:-2px}

/* Wissensdatenbank v0.47.12 */
.knowledgeCatLine{display:flex;align-items:center;gap:4px}.knowledgeCatLine .kcat{flex:1;min-width:0}.knowledgeCatDelete{border:0;background:transparent;color:#a00025;font-size:var(--ry-font-section);cursor:pointer;padding:5px 9px}
.articleAttachments h3{font-size:var(--ry-font-body);font-weight:650}.articleAttachments,.knowledgeAttachmentRow,.knowledgeAttachmentRow span,.knowledgeAttachmentRow b{font-size:var(--ry-font-secondary)!important}.knowledgeAttachmentRow a{color:#a00025;font-size:var(--ry-font-caption)}.knowledgeAttachmentRow button{font-size:var(--ry-font-caption);padding:4px 8px}
.knowledgePreviewOverlay{position:fixed;inset:0;z-index:10000;background:#000b;display:flex;align-items:center;justify-content:center;padding:24px}.knowledgePreviewDialog{background:white;border-radius:12px;width:min(1100px,96vw);height:min(850px,90vh);display:flex;flex-direction:column;overflow:hidden}.knowledgePreviewBar{display:flex;justify-content:space-between;gap:18px;align-items:center;padding:12px 18px;border-bottom:1px solid #ddd}.knowledgePreviewBar button{cursor:pointer;font-size:var(--ry-font-section);line-height:1;min-width:36px;min-height:36px}.knowledgePreviewMedia{flex:1;min-height:0;display:flex;align-items:center;justify-content:center;background:#222}.knowledgePreviewMedia iframe,.knowledgePreviewMedia video{width:100%;height:100%;border:0}.knowledgePreviewMedia img{max-width:100%;max-height:100%;object-fit:contain}

/* v0.47.18: per-user unread knowledge indicators */
.knowledgeUnreadBadge{display:inline-flex;align-items:center;justify-content:center;min-width:21px;height:21px;padding:0 5px;border-radius:999px;background:#a92336;color:#fff;font-style:normal;font-size:var(--ry-font-caption);font-weight:700;margin-left:8px}.knowledgeUnreadDot{display:inline-block;width:8px;height:8px;background:#b52b3e;border-radius:50%;margin-left:8px;vertical-align:middle}.knowledgeNewStat{display:contents}

/* Wissensartikel: Höhe folgt dem Inhalt, Anhänge direkt darunter. */
.knowledgeDetail .articleBody{min-height:0;height:auto;max-height:none;overflow:visible;white-space:normal;overflow-wrap:anywhere;margin:10px 0 0}.knowledgeDetail .articleAttachments{margin-top:12px}.knowledgeDetail .articleHead p:empty{display:none}

/* v0.47.20: kompakter Kopfbereich in allen Wissensdatenbank-Vorschauen */
.knowledgePreviewBar{padding:4px 14px;min-height:38px;box-sizing:border-box;gap:12px}
.knowledgePreviewBar button{min-width:28px;min-height:28px;padding:2px 5px;font-size:var(--ry-font-section)}
.knowledgePreviewBar a{padding:4px 9px}

/* Materialbestellungen: shop dashboard and wider selection panel */
.materialPage .materialOrderGrid{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
.materialStatButton{display:block;text-align:left;width:100%;cursor:pointer;font:inherit;color:inherit}
.materialStatButton:hover{border-color:#b90020;background:#fffafa}
.materialOverviewScroll{overflow-x:auto}.materialOverviewTable{width:100%;min-width:650px}
.materialOverviewTotal{text-align:right;padding:10px 4px;font-size:var(--ry-font-secondary)}
.materialOverviewModal h3{margin:16px 0 8px}
@media(max-width:1050px){.materialPage .materialOrderGrid{grid-template-columns:1fr}}

/* v0.47.23: Shop history filters and centered modal actions */
.materialHistoryFilters{display:flex;flex-wrap:wrap;gap:12px;align-items:end;padding:12px 0 16px;border-bottom:1px solid #eee}
.materialHistoryFilters label{display:flex;flex-direction:column;gap:5px;font-size:var(--ry-font-caption);font-weight:600;min-width:145px;flex:1}
.materialHistoryFilters select{width:100%;padding:9px;border:1px solid #ddd;border-radius:7px;background:#fff;font:inherit}
.materialHistoryFilters button{align-self:end}
.materialOverviewModal .materialCenteredActions{justify-content:center;flex-wrap:wrap}
.materialOverviewModal .materialShopNotice{margin-top:28px;margin-bottom:20px;text-align:center}
.materialOverviewTable{min-width:760px}

/* v0.47.24: spacious material dialogs, compact reset and inline payment actions */
body > .modalback .modal:has(.materialOverviewModal),
.modalback .modal:has(.materialOverviewModal){width:min(1120px,calc(100vw - 32px))!important;max-width:calc(100vw - 32px)!important}
.materialOverviewTable{min-width:900px}
.materialHistoryFilters .materialFilterReset{flex:0 0 auto!important;width:auto!important;min-width:0!important;padding:9px 12px!important;white-space:nowrap}
.materialOverviewTable .materialPaymentLink{display:inline!important;border:0!important;background:transparent!important;box-shadow:none!important;padding:2px 0!important;color:#8f2635!important;text-decoration:underline;text-underline-offset:3px;cursor:pointer;font:inherit;font-weight:600;white-space:nowrap}
.materialOverviewTable .materialPaymentLink:hover{color:#5b1420!important}
.materialOverviewTable td,.materialOverviewTable th{white-space:nowrap}
@media(max-width:700px){.materialOverviewTable{min-width:900px}.materialHistoryFilters label{min-width:130px}}

/* v0.47.26: Dashboard membership label and compact examination heading */
.stats .ryujinMembershipOneLine{white-space:nowrap!important;overflow:hidden!important;text-overflow:clip!important;min-width:0;width:100%;box-sizing:border-box;line-height:1.2!important;overflow-wrap:normal!important;word-break:normal!important;}
.stats .dashboardExamStat .dashboardExamHeading{display:flex;align-items:baseline;gap:7px;min-width:0;white-space:nowrap;}
.stats .dashboardExamStat .dashboardExamHeading .statLabel{white-space:nowrap;flex:0 1 auto;}
.stats .dashboardExamStat .dashboardExamTarget{font-size:24px;line-height:1.15;color:#191919;white-space:nowrap;flex:0 0 auto;}
.stats .dashboardExamStat .trainingExamCard{margin-top:8px;}

/* v0.47.30: compact multi-select access chips */
.knowledgeGroupPickerBlock{display:grid;gap:15px}.knowledgeGroupPicker{display:grid;gap:7px}.knowledgeGroupPicker>label{font-weight:600}.knowledgeSelectedGroups{display:flex;gap:7px;flex-wrap:wrap}.knowledgeGroupChip{display:inline-flex;align-items:center;gap:8px;background:#f5e9ec;color:#74162b;border:1px solid #e3c7ce;border-radius:8px;padding:5px 8px;font-size:var(--ry-font-secondary)}.knowledgeGroupChip button{border:0;background:transparent;color:inherit;cursor:pointer;font-size:var(--ry-font-section);line-height:1;padding:0 2px}.knowledgeGroupPicker select{width:100%}.knowledgeGroupPickerBlock>small{color:#777}


/* Ryujin v0.47.36: zentrale Typografie; Werte werden über Erscheinungsbild gesetzt. */
:root{--ry-font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Arial,sans-serif;--ry-font-page:28px;--ry-font-section:20px;--ry-font-body:16px;--ry-font-secondary:14px;--ry-font-caption:12px}
body,.main-frame,.page,.modal,.sidebar{font-family:var(--ry-font-family)}
.main-frame,.page,.modal{font-size:var(--ry-font-body)}

/* v0.47.37: event hints use the same three-row statistic layout. */
.eventHintStat>strong{margin:0;font-size:var(--ry-font-section)}
.eventHintStat>span{margin-top:0}
.eventHintStat .trainingHintList{margin-top:10px}

/* Ryujin v0.47.38: zentrale Tag-/Nachtpalette; die bordeauxfarbene Vereinsnavigation bleibt erhalten. */
:root{--ry-bg:#f7f7f7;--ry-surface:#fff;--ry-text:#191919;--ry-muted:#666;--ry-border:#ddd;--ry-soft:#f7f7f7;--ry-field:#fff;--ry-accent-soft:#fff0f2}
:root[data-ryujin-theme="dark"]{--ry-bg:#17191e;--ry-surface:#252830;--ry-text:#f2f2f4;--ry-muted:#bec0c9;--ry-border:#494c56;--ry-soft:#30333c;--ry-field:#30333c;--ry-accent-soft:#432b35;--card-bg:#252830}
:root[data-ryujin-theme="dark"] body,:root[data-ryujin-theme="dark"] .main-frame,:root[data-ryujin-theme="dark"] .page{background:var(--ry-bg);color:var(--ry-text)}
:root[data-ryujin-theme="dark"] .main-frame .card,:root[data-ryujin-theme="dark"] .main-frame .stat,:root[data-ryujin-theme="dark"] .main-frame .adminTile,:root[data-ryujin-theme="dark"] .main-frame .adminGroup,:root[data-ryujin-theme="dark"] .main-frame .list>div button,:root[data-ryujin-theme="dark"] .modal,:root[data-ryujin-theme="dark"] .modalbody,:root[data-ryujin-theme="dark"] .ryujin-header-popover{background:var(--ry-surface);color:var(--ry-text);border-color:var(--ry-border)}
:root[data-ryujin-theme="dark"] .main-frame .card *,:root[data-ryujin-theme="dark"] .main-frame .stat *,:root[data-ryujin-theme="dark"] .modal *{border-color:var(--ry-border)}
:root[data-ryujin-theme="dark"] .main-frame p,:root[data-ryujin-theme="dark"] .main-frame small,:root[data-ryujin-theme="dark"] .main-frame .muted,:root[data-ryujin-theme="dark"] .main-frame .title p,:root[data-ryujin-theme="dark"] .main-frame .welcome p,:root[data-ryujin-theme="dark"] .main-frame .stat span,:root[data-ryujin-theme="dark"] .main-frame .stat small,:root[data-ryujin-theme="dark"] .main-frame label,:root[data-ryujin-theme="dark"] .main-frame .adminNote{color:var(--ry-muted)}
:root[data-ryujin-theme="dark"] .main-frame h1,:root[data-ryujin-theme="dark"] .main-frame h2,:root[data-ryujin-theme="dark"] .main-frame h3,:root[data-ryujin-theme="dark"] .main-frame h4,:root[data-ryujin-theme="dark"] .main-frame b,:root[data-ryujin-theme="dark"] .main-frame strong,:root[data-ryujin-theme="dark"] .main-frame td,:root[data-ryujin-theme="dark"] .main-frame th{color:var(--ry-text)}
:root[data-ryujin-theme="dark"] .main-frame input:not([type="checkbox"]):not([type="radio"]):not([type="range"]),:root[data-ryujin-theme="dark"] .main-frame select,:root[data-ryujin-theme="dark"] .main-frame textarea,:root[data-ryujin-theme="dark"] .modal input,:root[data-ryujin-theme="dark"] .modal select,:root[data-ryujin-theme="dark"] .modal textarea{background:var(--ry-field);color:var(--ry-text);border-color:var(--ry-border)}
:root[data-ryujin-theme="dark"] .main-frame input::placeholder,:root[data-ryujin-theme="dark"] .modal input::placeholder{color:#a9aeba}
:root[data-ryujin-theme="dark"] .main-frame .white,:root[data-ryujin-theme="dark"] .modal .white,:root[data-ryujin-theme="dark"] .main-frame button:not(.red):not(.ryujin-header-icon):not(.ryujin-nav-svg){background:var(--ry-surface);color:var(--ry-text);border-color:var(--ry-border)}
:root[data-ryujin-theme="dark"] .main-frame .red,:root[data-ryujin-theme="dark"] .modal .red{background:#a51e3d;color:white}
:root[data-ryujin-theme="dark"] .main-frame .week section,:root[data-ryujin-theme="dark"] .main-frame .week section.focus,:root[data-ryujin-theme="dark"] .main-frame .pdata aside,:root[data-ryujin-theme="dark"] .main-frame .list button.sel,:root[data-ryujin-theme="dark"] .main-frame .adminGroup.sel,:root[data-ryujin-theme="dark"] .main-frame .adminGroup:hover,:root[data-ryujin-theme="dark"] .main-frame .adminTile:hover{background:var(--ry-soft);border-color:var(--ry-border)}
:root[data-ryujin-theme="dark"] .main-frame .appt>i,:root[data-ryujin-theme="dark"] .main-frame .appt>span{background:var(--ry-accent-soft);color:#ff9cae}
:root[data-ryujin-theme="dark"] .main-frame table,:root[data-ryujin-theme="dark"] .main-frame tr,:root[data-ryujin-theme="dark"] .main-frame th,:root[data-ryujin-theme="dark"] .main-frame td{border-color:var(--ry-border)}
:root[data-ryujin-theme="dark"] .main-frame a{color:#ff9eb2}
:root[data-ryujin-theme="dark"] .main-frame .settingsform input[type="range"]{accent-color:#bd3753}
@media print{:root[data-ryujin-theme="dark"] .main-frame,:root[data-ryujin-theme="dark"] .page,:root[data-ryujin-theme="dark"] .card{background:#fff!important;color:#000!important}}


/* v0.47.39: readable dark mode for knowledge base and financial tables.
   Keep text/background paired: never apply white text to light status rows. */
:root[data-ryujin-theme="dark"]{color-scheme:dark;--ry-table-head:#30343d;--ry-table-open:#473a2d;--ry-table-paid:#293d34;--ry-table-overdue:#493137}
:root[data-ryujin-theme="dark"] .main-frame .bookings th,
:root[data-ryujin-theme="dark"] .main-frame .doctable th{background:var(--ry-table-head)!important;color:#e6e8ed!important;border-color:var(--ry-border)!important}
:root[data-ryujin-theme="dark"] .main-frame .bookings td{background:var(--ry-surface);color:var(--ry-text)!important}
:root[data-ryujin-theme="dark"] .main-frame .bookings tr.financeOpen>td{background:var(--ry-table-open)!important;color:#f6e9d8!important}
:root[data-ryujin-theme="dark"] .main-frame .bookings tr.financePaid>td{background:var(--ry-table-paid)!important;color:#e3f4e8!important}
:root[data-ryujin-theme="dark"] .main-frame .bookings tr.financeOverdue>td{background:var(--ry-table-overdue)!important;color:#fbe6e9!important}
:root[data-ryujin-theme="dark"] .main-frame .bookings .plus{color:#91e4b2!important}
:root[data-ryujin-theme="dark"] .main-frame .bookings .minus{color:#ff9eb2!important}
:root[data-ryujin-theme="dark"] .main-frame .bookings em.open{background:#624b2e!important;color:#ffe2a2!important}
:root[data-ryujin-theme="dark"] .main-frame .bookings em.booked{background:#315442!important;color:#c5f5d5!important}
:root[data-ryujin-theme="dark"] .main-frame .clickrow:hover td{background:#3b3e48!important}
:root[data-ryujin-theme="dark"] .main-frame .kcat,
:root[data-ryujin-theme="dark"] .main-frame .articleRow,
:root[data-ryujin-theme="dark"] .main-frame .claim{background:var(--ry-surface)!important;color:var(--ry-text)!important;border-color:var(--ry-border)!important}
:root[data-ryujin-theme="dark"] .main-frame .kcat.sel,
:root[data-ryujin-theme="dark"] .main-frame .articleRow.sel,
:root[data-ryujin-theme="dark"] .main-frame .articleRow:hover{background:#42303b!important}
:root[data-ryujin-theme="dark"] .main-frame .kcat small,
:root[data-ryujin-theme="dark"] .main-frame .kcat em,
:root[data-ryujin-theme="dark"] .main-frame .articleRow p,
:root[data-ryujin-theme="dark"] .main-frame .articleMeta{color:#c5c7d0!important}
:root[data-ryujin-theme="dark"] .main-frame .articleRow>small,
:root[data-ryujin-theme="dark"] .main-frame .articleHead small{color:#ffa2b6!important}
:root[data-ryujin-theme="dark"] .main-frame .articleRow div span,
:root[data-ryujin-theme="dark"] .main-frame .articleTags span{background:#414550!important;color:#f3f3f5!important;border:1px solid #595d68}
:root[data-ryujin-theme="dark"] .main-frame .knowledgeSearch,
:root[data-ryujin-theme="dark"] .main-frame .articleMeta,
:root[data-ryujin-theme="dark"] .main-frame .knowledgeAttachmentRow{border-color:var(--ry-border)!important}
:root[data-ryujin-theme="dark"] .main-frame .knowledgeSearch input{background:var(--ry-field)!important;color:var(--ry-text)!important;border:1px solid #686c77!important}
:root[data-ryujin-theme="dark"] .main-frame .knowledgeSearch span{color:#d4d7df!important}
:root[data-ryujin-theme="dark"] .main-frame .articleBody,
:root[data-ryujin-theme="dark"] .main-frame .articleHead p{color:var(--ry-text)!important}
:root[data-ryujin-theme="dark"] .main-frame .knowledgeGroupChip{background:#513340;color:#ffe4eb;border-color:#815668}
:root[data-ryujin-theme="dark"] .main-frame .knowledgeGroupChip button{background:transparent!important;color:inherit!important;border:0!important}
:root[data-ryujin-theme="dark"] .main-frame .knowledgePreviewDialog{background:var(--ry-surface);color:var(--ry-text)}
:root[data-ryujin-theme="dark"] .main-frame .knowledgePreviewBar{border-color:var(--ry-border)}
:root[data-ryujin-theme="dark"] .main-frame .financeReceiptUpload,
:root[data-ryujin-theme="dark"] .main-frame .uploadField{background:var(--ry-soft);color:var(--ry-text);border-color:var(--ry-border)}
:root[data-ryujin-theme="dark"] .main-frame .bookings button,
:root[data-ryujin-theme="dark"] .main-frame .articleActions button{color:var(--ry-text);border-color:#777b85}


/* v0.47.40: Anthrazit palette and contrast repairs based on user screenshots. */
:root[data-ryujin-theme="dark"]{--ry-bg:#22252c;--ry-surface:#30343e;--ry-text:#f3f4f7;--ry-muted:#c5c9d2;--ry-border:#555b67;--ry-soft:#3a3f4a;--ry-field:#393e49;--ry-accent-soft:#4a303c;--card-bg:#30343e;--ry-table-head:#3b404b;--ry-table-open:#504132;--ry-table-paid:#304b3d;--ry-table-overdue:#553941}
:root[data-ryujin-theme="dark"] .main-frame .emptyline,
:root[data-ryujin-theme="dark"] .main-frame .empty,
:root[data-ryujin-theme="dark"] .main-frame .filterbar,
:root[data-ryujin-theme="dark"] .main-frame .eventrow,
:root[data-ryujin-theme="dark"] .main-frame .orderrow,
:root[data-ryujin-theme="dark"] .main-frame .checklist label,
:root[data-ryujin-theme="dark"] .main-frame .tabcards section,
:root[data-ryujin-theme="dark"] .main-frame .tabsection{background:var(--ry-surface)!important;color:var(--ry-text)!important;border-color:var(--ry-border)!important}
:root[data-ryujin-theme="dark"] .main-frame .emptyline{color:var(--ry-muted)!important;border-style:dashed!important}
:root[data-ryujin-theme="dark"] .main-frame .filterbar b,
:root[data-ryujin-theme="dark"] .main-frame .eventrow em:not(.green),
:root[data-ryujin-theme="dark"] .main-frame .orderrow em{background:#424854!important;color:#f0f2f7!important}
:root[data-ryujin-theme="dark"] .main-frame .eventrow em.green,
:root[data-ryujin-theme="dark"] .main-frame .eventrow .green{background:#31543f!important;color:#baf2cc!important}
:root[data-ryujin-theme="dark"] .main-frame .eventrow>i{background:#523844!important;color:#ffb2c3!important}
:root[data-ryujin-theme="dark"] .main-frame .eventrow span,
:root[data-ryujin-theme="dark"] .main-frame .eventrow small,
:root[data-ryujin-theme="dark"] .main-frame .orderrow span,
:root[data-ryujin-theme="dark"] .main-frame .orderrow small,
:root[data-ryujin-theme="dark"] .main-frame .side p,
:root[data-ryujin-theme="dark"] .main-frame .side dt,
:root[data-ryujin-theme="dark"] .main-frame .welcome em,
:root[data-ryujin-theme="dark"] .main-frame .welcome>div:last-child b{color:var(--ry-muted)!important}
:root[data-ryujin-theme="dark"] .main-frame .side label{color:#ffa7b9!important}
:root[data-ryujin-theme="dark"] .main-frame .materialStatButton:hover,
:root[data-ryujin-theme="dark"] .main-frame .eventrow:hover,
:root[data-ryujin-theme="dark"] .main-frame .orderrow:hover{background:var(--ry-soft)!important}
:root[data-ryujin-theme="dark"] .main-frame .eventHintStat .statLabel,
:root[data-ryujin-theme="dark"] .main-frame .eventHintStat>span{color:var(--ry-muted)!important}
:root[data-ryujin-theme="dark"] .main-frame .eventHintStat>strong{font-size:var(--ry-font-page)!important;color:var(--ry-text)!important;line-height:1.2;margin:5px 0!important}
:root[data-ryujin-theme="dark"] .main-frame .stat.materialStatPlaceholder{background:var(--ry-surface)!important}
:root[data-ryujin-theme="dark"] .main-frame .phead button,
:root[data-ryujin-theme="dark"] .main-frame .week section button{background:var(--ry-field)!important;color:var(--ry-text)!important;border-color:var(--ry-border)!important}
:root[data-ryujin-theme="dark"] .main-frame .tabs button,
:root[data-ryujin-theme="dark"] .main-frame .membertabs button{color:var(--ry-text)!important}
:root[data-ryujin-theme="dark"] .main-frame .membertabs button.active{color:#ffa4b6!important;border-bottom-color:#e76a85!important}
:root[data-ryujin-theme="dark"] .main-frame .list button span small,
:root[data-ryujin-theme="dark"] .main-frame .phead p,
:root[data-ryujin-theme="dark"] .main-frame .historyrow span small{color:var(--ry-muted)!important}
:root[data-ryujin-theme="dark"] .main-frame .stats .stat{color:var(--ry-text)!important}
:root[data-ryujin-theme="dark"] .main-frame .stats .stat b{color:var(--ry-text)!important}
:root[data-ryujin-theme="dark"] .main-frame .stats .stat span,
:root[data-ryujin-theme="dark"] .main-frame .stats .stat small{color:var(--ry-muted)!important}

/* v0.47.41: Dokumentensuche – dezente, konsistente Eingabefeldrahmen */
.main-frame .docToolbar #docsearch,
.main-frame .docToolbar input[type="search"],
.main-frame .docToolbar input[type="text"]{
  border:1px solid #d5d7dc!important;
  outline:none!important;
  box-shadow:none!important;
  border-radius:8px!important;
  padding:9px 12px!important;
  min-width:0;
}
.main-frame .docToolbar #docsearch:focus,
.main-frame .docToolbar input[type="search"]:focus,
.main-frame .docToolbar input[type="text"]:focus{
  border-color:#a7aab3!important;
  box-shadow:0 0 0 2px rgba(145,35,63,.10)!important;
}
:root[data-ryujin-theme="dark"] .main-frame .docToolbar #docsearch,
:root[data-ryujin-theme="dark"] .main-frame .docToolbar input[type="search"],
:root[data-ryujin-theme="dark"] .main-frame .docToolbar input[type="text"]{
  background:var(--ry-field,#343943)!important;
  color:var(--ry-text,#f0f1f4)!important;
  border-color:var(--ry-border,#555a66)!important;
  box-shadow:none!important;
}
:root[data-ryujin-theme="dark"] .main-frame .docToolbar #docsearch:focus{
  border-color:#8c909b!important;
  box-shadow:0 0 0 2px rgba(218,131,153,.14)!important;
}

/* v0.47.42: Kommunikations-Chatsuche – dezenter Rahmen wie bei Dokumenten */
.main-frame .commLayout #commSearch{
  box-sizing:border-box;min-width:0;border:1px solid #d5d7dc!important;
  border-radius:8px!important;outline:none!important;box-shadow:none!important;
  padding:9px 12px!important;
}
.main-frame .commLayout #commSearch:focus{
  border-color:#a7aab3!important;box-shadow:0 0 0 2px rgba(145,35,63,.10)!important;
}
:root[data-ryujin-theme="dark"] .main-frame .commLayout #commSearch{
  background:var(--ry-field,#343943)!important;color:var(--ry-text,#f0f1f4)!important;
  border-color:var(--ry-border,#555a66)!important;box-shadow:none!important;
}
:root[data-ryujin-theme="dark"] .main-frame .commLayout #commSearch:focus{
  border-color:#8c909b!important;box-shadow:0 0 0 2px rgba(218,131,153,.14)!important;
}

/* v0.47.44: mobile content reflow without changing desktop */
@media(max-width:900px){
 .main-frame .page{padding:16px 12px 28px!important;min-width:0!important;max-width:100%!important}
 .main-frame .title,.main-frame .welcome{flex-wrap:wrap!important;gap:10px!important;margin-bottom:16px!important}
 .main-frame .title h1,.main-frame .welcome h1{font-size:clamp(23px,6vw,var(--ry-font-page,28px))!important}
 .main-frame .stats{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:9px!important}
 .main-frame .stats .stat{min-width:0!important;padding:12px!important;overflow-wrap:anywhere!important}
 .main-frame .stats .stat b{font-size:clamp(21px,5.5vw,30px)!important}
 .main-frame .twocol,.main-frame .people,.main-frame .train{grid-template-columns:minmax(0,1fr)!important}
 .main-frame .card,.main-frame .stat,.main-frame .week,.main-frame .side{min-width:0!important;max-width:100%!important}
 .main-frame .appt{grid-template-columns:56px minmax(0,1fr)!important;gap:9px!important;padding:12px!important}
 .main-frame .appt>span{grid-column:2!important;justify-self:start!important}
 .main-frame .appt>div{min-width:0!important;overflow-wrap:anywhere!important}
 .main-frame .docToolbar{grid-template-columns:1fr!important}
 .main-frame .pdata{grid-template-columns:1fr!important;padding:12px!important}
 .main-frame .phead{grid-template-columns:46px minmax(0,1fr)!important;padding:12px!important}
 .main-frame .phead button{grid-column:2!important;justify-self:start!important}
 .main-frame .tabs,.main-frame .membertabs{overflow-x:auto!important;max-width:100%!important;-webkit-overflow-scrolling:touch!important}
 .main-frame input,.main-frame select,.main-frame textarea{max-width:100%!important;min-width:0!important}
 .main-frame .week>#days{overflow-x:auto!important;grid-template-columns:repeat(7,145px)!important}
 .main-frame .title button{max-width:100%!important}
 .main-frame .eventrow,.main-frame .orderrow{min-width:0!important}
 .main-frame .doccard,.main-frame .bookings{overflow-x:auto!important}
 .modalback .modal,.modalback .dialog,.modal{max-width:calc(100vw - 24px)!important;max-height:calc(100dvh - 40px)!important;overflow:auto!important}
}
@media(max-width:440px){
 .main-frame .stats .stat span,.main-frame .stats .stat small{font-size:12px!important}
 .main-frame .stats .stat b{font-size:24px!important}
 .main-frame .title .red{font-size:13px!important}
}

/* v0.47.48 */
.ryujinPasswordWrap{display:block;position:relative;width:100%}
.ryujinPasswordWrap input{padding-right:47px!important;box-sizing:border-box}
.ryujinPasswordEye{position:absolute;right:7px;top:50%;transform:translateY(-50%);display:grid;place-items:center;width:34px;height:34px;padding:0;border:0;border-radius:7px;background:transparent;color:inherit;cursor:pointer;font-size:19px;opacity:.75}
.ryujinPasswordEye:hover,.ryujinPasswordEye:focus-visible{background:rgba(128,128,128,.13);opacity:1}
.ryujinAccountEditCompact .modalbody{padding-top:10px;padding-bottom:10px}
.ryujinAccountEditCompact .modalactions{margin-top:10px!important}
.ryujinAccountEditCompact .ryujinAccountPasswordSection{padding-top:0}
.ryujinAccountEditCompact .ryujinAccountPasswordSection hr{margin:5px 0 12px}
.ryujinAccountEditCompact .ryujinAccountPasswordSection p{margin:7px 0}

/* v0.47.49: reveal personal credentials passwords */
.ryujinCredentialPasswordHolder{display:block;position:relative;width:100%}
.ryujinCredentialPasswordHolder input{width:100%;box-sizing:border-box;padding-right:47px!important}
.ryujinCredentialEye{position:absolute;right:7px;top:50%;transform:translateY(-50%);display:grid;place-items:center;width:34px;height:34px;border:0;border-radius:7px;background:transparent;color:inherit;opacity:.72;cursor:pointer;padding:0}
.ryujinCredentialEye:hover,.ryujinCredentialEye:focus-visible{background:rgba(128,128,128,.13);opacity:1}

/* v0.47.51 – Account-Sitzungskarte: gleiche Abstände und Eingabefelder wie oben */
.ryujinOwnPage .ryujinLogoutAllCard{margin-top:16px;padding:28px 36px!important}
.ryujinOwnPage .ryujinLogoutAllCard .ryujinAccountForm{gap:16px}
.ryujinOwnPage .ryujinLogoutAllCard h2{margin:0 0 6px;font-size:var(--ry-font-section)}
.ryujinOwnPage .ryujinLogoutAllIntro{margin:0 0 4px;line-height:1.55;color:var(--ry-text-secondary,#62585d);font-size:var(--ry-font-secondary)}
.ryujinOwnPage .ryujinLogoutAllCard .ryujinAccountForm label{width:100%;max-width:520px}
.ryujinOwnPage .ryujinLogoutAllCard .ryujinCredentialPasswordHolder{display:block;position:relative;width:100%;max-width:520px}
.ryujinOwnPage .ryujinLogoutAllCard .ryujinCredentialPasswordHolder input{width:100%;max-width:none;padding-right:48px}
.ryujinOwnPage .ryujinLogoutAllCard .ryujinRightsFooter{margin-top:12px;padding-top:16px;width:100%}
@media(max-width:700px){.ryujinOwnPage .ryujinLogoutAllCard{padding:20px!important}}

/* v0.47.75 – eigenständige Navigation und einheitliche automatische Gruppenauswahl */
.ryujinGroupMainNav{display:flex;gap:12px;flex-wrap:wrap;margin:16px 0 20px}
.ryujinGroupMainNav button{font:600 var(--ry-font-secondary) inherit;padding:13px 20px;border-radius:10px;border:1px solid var(--ry-border,#ddd);background:var(--ry-surface,#fff);color:var(--ry-text,#242424);cursor:pointer}
.ryujinGroupMainNav button.active{background:#792b3d;color:#fff;border-color:#792b3d}
.ryujinAutomaticCard{padding:24px 30px}
.ryujinAutomaticCard .paneTitle{margin-bottom:12px}
.ryujinAutomaticCard .adminNote{margin-bottom:22px}
#automaticGroupBindings{display:grid;gap:14px;max-width:850px}
.ryujinAutomaticRow{display:grid;grid-template-columns:minmax(170px,240px) minmax(220px,1fr);align-items:center;gap:22px;font-size:var(--ry-font-secondary);font-weight:600}
.ryujinAutomaticRow select{width:100%;max-width:440px;padding:11px 13px;border:1px solid var(--ry-border,#ddd);border-radius:9px;background:var(--ry-field,#fff);color:var(--ry-text,#222);font:inherit;font-weight:400}
.ryujinAutomaticCard .ryujinSharedSaveFooter{padding:25px 0 0;min-height:0}
@media(max-width:650px){.ryujinAutomaticCard{padding:18px}.ryujinAutomaticRow{grid-template-columns:1fr;gap:6px}.ryujinGroupMainNav button{flex:1 1 210px}}

/* v0.47.84: Speicherübersicht in der bestehenden Backup-Verwaltung */
.ryujinBackupStats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:14px 0}.ryujinBackupStats>div{padding:14px;border:1px solid var(--line,#ddd);border-radius:10px;display:flex;flex-direction:column;gap:6px}.ryujinBackupStats small{opacity:.7}.ryujinBackupStats strong{font-size:1.3rem}@media(max-width:700px){.ryujinBackupStats{grid-template-columns:1fr}}
/* Avoid a broken-image icon if the account has no assigned belt graphic. */
.dashboardWelcomeBelt.ryujinGraduationUnavailable{display:none}
