:root{font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;color:#1a1a1a;background:#e9edf2;line-height:1.5;font-weight:400}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;background:#e9edf2}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}#app{min-height:100vh}.page-shell{max-width:1600px;margin:0 auto;padding:28px 20px 48px}.hero,.auth-layout{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(280px,.9fr);gap:24px;align-items:stretch}.hero-copy,.auth-form,.dashboard-panel{min-width:0;background:#fff;border:1px solid #b8c4d0;border-radius:4px;padding:22px;box-shadow:none}.hero-copy,.auth-copy{padding:16px 0}.hero-copy h1,.auth-copy h1,.dashboard-header h1{margin:0 0 12px;font-size:clamp(2rem,4vw,3.5rem)}.eyebrow{margin:0 0 12px;font-size:.85rem;font-weight:700;text-transform:uppercase;color:#0d4f8b}.lead{margin:0;max-width:60ch;color:#47576a}.actions{display:flex;gap:12px;margin-top:24px}.button-group{display:flex;flex-wrap:wrap;gap:10px}.button{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:0 18px;border-radius:3px;border:1px solid #7f96ac;cursor:pointer;transition:background-color .2s ease,border-color .2s ease,color .2s ease;font-weight:700}.button:disabled{cursor:wait;opacity:.7}.button-primary{background:#0d4f8b;color:#fff;border-color:#083c69}.button-primary:hover{background:#083c69}.button-secondary{background:#f5f7f9;color:#1a1a1a;border-color:#aab7c4}.link-button{display:inline-grid;gap:2px;padding:0;border:0;background:transparent;color:inherit;text-align:left;cursor:pointer}.link-button:hover strong{color:#0d4f8b;text-decoration:underline}.loading-overlay{position:fixed;inset:0;z-index:9999;display:grid;place-items:center;background:#e9edf2ad;-webkit-backdrop-filter:grayscale(1);backdrop-filter:grayscale(1)}.loading-overlay-box{display:inline-flex;align-items:center;gap:12px;min-height:58px;padding:0 18px;border:1px solid #9fb0c2;border-radius:4px;background:#fff;color:#173d5e}.loading-spinner{width:26px;height:26px;border:3px solid #d4dee8;border-top-color:#0d4f8b;border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.hero-list{display:grid;gap:14px;list-style:none;margin:0;padding:0}.hero-panel{padding:14px 16px;border-radius:4px;background:#fff;border:1px solid #b8c4d0;font-weight:600;box-shadow:none}.auth-form{display:grid;gap:18px}.auth-form label{display:grid;gap:8px;font-weight:600}.auth-form input{min-height:46px;padding:0 14px;border:1px solid #aab7c4;border-radius:3px;background:#fff}select,textarea{border:1px solid #aab7c4;border-radius:3px;background:#fff}.error-message{margin:0;color:#9f1f1f;font-weight:600}.success-message{margin:0;color:#17633a;font-weight:600}.dashboard-header{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;margin-bottom:18px;padding:16px 18px;border:1px solid #0a4a80;border-radius:4px;background:linear-gradient(180deg,#0e548f,#0a4677);color:#fff}.dashboard-header .eyebrow,.dashboard-header .lead{color:#ffffffe0}.dashboard-header h1{color:#fff}.dashboard-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}.dashboard-panel h2{margin-top:0;margin-bottom:12px;font-size:1.125rem}.dashboard-panel p{margin:0;color:#47576a}.rankings-layout{display:grid;grid-template-columns:minmax(260px,320px) minmax(0,1fr);gap:24px;align-items:start}.admin-section-menu,.public-section-menu{display:grid;gap:14px;margin-bottom:18px}.admin-section-menu-header{margin-bottom:0;padding-bottom:0;border-bottom:0}.admin-menu-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.public-mode-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.admin-menu-button{display:grid;gap:6px;min-height:84px;padding:14px 16px;border:1px solid #b8c4d0;border-radius:3px;background:#f8fafc;text-align:left;cursor:pointer}.admin-menu-button strong{font-size:.95rem}.admin-menu-button span{color:#58697b;font-size:.86rem;line-height:1.35}.admin-menu-button.active{border-color:#0d4f8b;background:#eef4fb}.rankings-main{display:grid;gap:18px;align-content:start;align-self:start;min-width:0}.rankings-sidebar{align-self:start;min-width:0}.panel-header{margin-bottom:16px;padding-bottom:10px;border-bottom:1px solid #d0d8e0}.panel-header h2{margin:0 0 8px;font-size:1.125rem}.panel-header p{margin:0;color:#4e6175}.ranking-list,.catalog-list{display:grid;gap:8px;list-style:none;margin:0;padding:0}.catalog-list-item{display:grid;gap:4px;padding:10px 12px;border:1px solid #c3ced8;border-radius:3px;background:#f8fafc}.catalog-list-item span{color:#5a6b7d;font-size:.92rem}.ranking-list-button{width:100%;display:grid;gap:4px;text-align:left;padding:10px 12px;border:1px solid #c3ced8;border-radius:3px;background:#f8fafc;cursor:pointer}.ranking-list-button span{color:#5a6b7d;font-size:.9rem}.ranking-list-button.active{border-color:#0d4f8b;background:#e8f0f7}.ranking-form,.field-group,.field-grid{display:grid;gap:16px}.field-grid label,.ranking-form label{display:grid;gap:8px;font-weight:600}.field-grid input,.field-grid select,.field-grid textarea,.ranking-form input,.ranking-form select,.ranking-form textarea{min-height:44px;padding:8px 10px}.field-grid select{width:100%}.field-grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.field-grid-1{grid-template-columns:1fr}.form-inline-action{display:flex;align-items:end}.exception-builder,.nested-field-group{padding:12px;border:1px dashed #b6c2cf;border-radius:3px;background:#f7fafc}.compact-selection-list{gap:8px}.info-tile{display:grid;gap:4px;padding:10px 12px;border:1px solid #c3ced8;border-radius:3px;background:#f8fafc}.info-tile strong{font-size:.9rem}.info-tile span{color:#4e6175}.status-stack{display:grid;gap:6px;justify-items:start}.status-stack-inline{display:flex;flex-wrap:wrap;justify-content:flex-end;align-items:center}.status-badge{display:inline-flex;align-items:center;min-height:28px;padding:0 10px;border:1px solid #b8c4d0;border-radius:3px;font-size:.84rem;font-weight:700;background:#f3f6f8}.status-ok{border-color:#7ba274;background:#edf7eb;color:#1d5b1d}.status-off{border-color:#c98c8c;background:#fff0f0;color:#8c2525}.status-neutral{border-color:#b8c4d0;background:#f3f6f8;color:#45576a}.check-list{display:grid;gap:8px;list-style:none;margin:0;padding:0}.check-list li{display:grid;gap:2px}.check-ok strong{color:#1d5b1d}.check-fail strong{color:#8c2525}.selection-item-stacked{display:grid;gap:14px;align-items:start}.selection-item-grid{width:100%;align-items:start}.compact-field-group{gap:8px;min-width:0}.wrapped-checkbox-row{flex-wrap:wrap}.selection-item-header{display:flex;align-items:start;justify-content:space-between;gap:12px}.selection-item-header .button{flex:0 0 auto}.dataset-role-grid{display:grid;grid-template-columns:repeat(2,minmax(0,max-content));gap:10px 18px;align-items:start}.dataset-role-grid .inline-checkbox{align-items:start}.dataset-visibility-toggle{align-self:end}.field-grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.field-group-title{margin:0;font-weight:700;color:#234561}.field-hint{margin:0;color:#5a6b7d;font-size:.94rem}.checkbox-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.checkbox-card{display:flex;gap:8px;align-items:flex-start;padding:8px 9px;border:1px solid #c5d0da;border-radius:3px;background:#f7f9fb;font-weight:500}.checkbox-card input,.inline-checkbox input{width:14px;height:14px;min-height:14px;margin:2px 0 0;padding:0;flex:0 0 auto;accent-color:#0d4f8b}.checkbox-card.competition-card{display:grid;grid-template-columns:14px minmax(0,1fr);gap:10px;align-items:start}.checkbox-card.competition-card>input{margin-top:4px}.competition-card-copy,.selection-item-copy{display:grid;gap:6px;min-width:0;overflow-wrap:anywhere}.competition-card-copy strong,.selection-item-copy strong{display:block;font-size:.98rem;line-height:1.3}.competition-card-meta{display:flex;flex-wrap:wrap;gap:6px 10px;align-items:center}.competition-date-badge{display:inline-flex;align-items:center;min-height:24px;padding:0 8px;border:1px solid #c7d3df;border-radius:999px;background:#eef4f9;color:#234561;font-size:.78rem;font-weight:700}.competition-card-subtext,.selection-subtext{color:#58697b;font-size:.88rem;line-height:1.35}.competition-tag-list{display:flex;flex-wrap:wrap;gap:6px}.competition-tag-chip{display:inline-flex;align-items:center;min-height:24px;padding:0 8px;border:1px solid #d5dfe8;border-radius:999px;background:#fff;color:#4a6076;font-size:.8rem;line-height:1.2}.dataset-competition-grid{align-content:start}.dataset-competition-card{width:100%;padding:10px 12px;box-sizing:border-box}.checkbox-row{display:flex;flex-wrap:wrap;gap:18px}.subsection-header{display:flex;align-items:center;justify-content:space-between;gap:12px}.inline-checkbox{display:inline-flex;align-items:center;gap:10px;font-weight:600}.compact-checkbox{min-height:0}.competition-grid,.competition-scroll-area{max-height:18rem;overflow-y:auto;padding-right:4px;scrollbar-gutter:stable}.selection-list{display:grid;gap:8px}.selection-item{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:9px 11px;border:1px solid #c5cfda;border-radius:3px;background:#fbfcfd}.selection-item .button{min-height:36px;padding:0 12px}.subranking-card,.subranking-result,.ranking-meta{display:grid;gap:14px;padding:14px;border:1px solid #c5cfda;border-radius:3px;background:#fbfcfd}.ranking-meta summary{display:flex;align-items:center;justify-content:space-between;gap:12px;cursor:pointer;font-weight:700}.summary-count{color:#5a6b7d;font-size:.86rem;font-weight:600}.form-error{margin:-6px 0 0;color:#a12424;font-size:.92rem;font-weight:600}.ranking-results-table{overflow-x:auto;border:1px solid #c5cfda}.ranking-results-table table{width:100%;border-collapse:collapse}.ranking-results-table th,.ranking-results-table td{padding:10px 12px;border-bottom:1px solid #d2d9e0;text-align:left;vertical-align:top}.ranking-results-table th{font-size:.85rem;text-transform:uppercase;color:#244663;background:#eff4f8}.table-row-selected{background:#f2f7fc}.table-subline{margin-top:4px;color:#58697b;font-size:.9rem}.contribution-list{display:grid;gap:4px;color:#425669;font-size:.92rem}.athlete-detail-toggle span{color:#0d4f8b;font-size:.82rem;font-weight:700}.profile-row-detail>td{background:#fbfcfd}.profile-row-detail-grid{display:grid;grid-template-columns:minmax(220px,1fr) minmax(220px,1fr) minmax(220px,1fr);gap:12px}.profile-row-detail-card{display:grid;gap:8px;min-width:0;padding:12px;border:1px solid #d5dfe8;border-radius:3px;background:#fff}.profile-row-detail-card p{margin:0;color:#4e6175}.representation-overview-stack,.overview-profile-list,.overview-athlete-list{display:grid;gap:12px}.representation-profile-header,.overview-year-header,.overview-profile-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.representation-profile-header{margin-bottom:18px}.representation-summary-panel{background:#fbfcfd}.overview-year-group{background:#fff}.representation-overview-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:14px;align-items:start}.overview-category-card{display:grid;gap:12px;padding:12px;border:1px solid #c5cfda;border-radius:3px;background:#fbfcfd;align-content:start}.overview-title-stack{display:grid;gap:3px;min-width:0}.overview-title-stack>span{color:#58697b;font-size:.88rem}.overview-category-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.overview-stat{display:grid;gap:1px;min-width:0;padding:7px 8px;border:1px solid #d5dfe8;border-radius:3px;background:#fff}.overview-stat strong{color:#173d5e;font-size:1rem;line-height:1.1}.overview-stat span{color:#607184;font-size:.76rem;text-transform:uppercase}.overview-profile-row{display:grid;gap:10px;padding:10px;border:1px solid #d3dde6;border-radius:3px;background:#fff}.overview-profile-row.active{border-color:#0d4f8b;background:#eef4fb}.overview-profile-copy{display:grid;gap:4px;min-width:0}.overview-detail-button{min-height:34px;padding:0 11px;flex:0 0 auto}.overview-detail-button.active{border-color:#0d4f8b;background:#dceaf6;color:#173d5e}.overview-athlete-list{list-style:none;margin:0;padding:0}.overview-athlete-row{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;padding-top:9px;border-top:1px solid #e1e7ee}.overview-athlete-row:first-child{padding-top:0;border-top:0}.overview-athlete-row div{display:grid;gap:2px;min-width:0}.overview-athlete-row span{color:#5a6b7d;font-size:.88rem;line-height:1.35}.overview-athlete-score{white-space:nowrap;color:#173d5e}.overview-empty-state{display:grid;gap:3px;padding:10px 12px;border:1px dashed #c3ced8;border-radius:3px;background:#fff;color:#58697b}.overview-empty-state strong{color:#33485c}.overview-empty-state span{font-size:.9rem}.representation-view-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.ranking-matrix-meta{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-bottom:16px}.representation-ranking-scroll{width:100%;min-width:0;max-height:min(80vh,900px);max-width:100%;overflow:auto;border:1px solid #c5cfda;scrollbar-gutter:stable}.representation-ranking-table{min-width:max-content;border-collapse:separate;border-spacing:0;background:#fff}.representation-ranking-table th,.representation-ranking-table td{min-width:74px;padding:8px 9px;border-right:1px solid #d5dde6;border-bottom:1px solid #d5dde6;text-align:right;vertical-align:bottom;white-space:nowrap}.representation-ranking-table th{position:sticky;top:0;z-index:3;height:172px;background:#eff4f8;color:#244663;font-size:.8rem;font-weight:700}.representation-ranking-table tbody td{font-size:.9rem}.rank-sticky{position:sticky;z-index:2;background:#fff}.representation-ranking-table thead .rank-sticky{z-index:6;background:#eff4f8}.representation-ranking-table .table-row-selected .rank-sticky{background:#f2f7fc}.representation-ranking-table .rank-col-position{left:0;min-width:52px;width:52px;text-align:center}.representation-ranking-table .rank-col-athlete{left:52px;min-width:230px;width:230px;text-align:left}.representation-ranking-table .rank-col-average{left:282px;min-width:96px;width:96px;color:#0047d9}.rank-col-athlete strong,.rank-col-athlete span{display:block}.rank-col-athlete strong{font-size:.98rem}.rank-col-athlete span{color:#5a6b7d;font-size:.82rem}.rank-starts-column,.rank-starts-cell{min-width:54px;width:54px;max-width:54px;text-align:center}.rank-competition-column{min-width:68px;width:68px;max-width:68px;padding:6px 4px}.rank-vertical-column>span{display:block;writing-mode:vertical-rl;transform:rotate(180deg);text-align:left}.rank-competition-date{color:#3a536a;font-size:.72rem;font-weight:700}.rank-competition-name{max-height:136px;overflow:hidden;text-overflow:ellipsis}.rank-score-counted{color:#d01818;font-weight:800}.rank-score-excluded{color:#718093;text-decoration:line-through;text-decoration-thickness:2px}.rank-score-list{display:grid;gap:3px;justify-items:end}.rank-score-empty{color:#a0acb8}.mobile-ranking-hint,.mobile-ranking-list,.mobile-ranking-modal-backdrop{display:none}.mobile-ranking-hint{position:sticky;top:10px;z-index:40;gap:12px;align-items:center;justify-content:space-between;margin:0 0 12px;padding:12px 14px;border:1px solid #9eb9d3;border-radius:12px;background:linear-gradient(135deg,#f0f8ff,#fff);box-shadow:0 14px 32px #1937522e}.mobile-ranking-hint div{display:grid;min-width:0;gap:2px}.mobile-ranking-hint strong{color:#18334d;font-size:.9rem}.mobile-ranking-hint span{color:#435f78;font-size:.82rem;line-height:1.35}.mobile-ranking-hint button{flex:0 0 auto;padding:8px 10px;border:1px solid #a8bfd5;border-radius:999px;background:#fff;color:#1f4f78;font-size:.78rem;font-weight:800;cursor:pointer}.mobile-ranking-list-head{display:grid;grid-template-columns:44px minmax(0,1fr) 96px;gap:8px;padding:8px 10px;color:#244663;font-size:.78rem;font-weight:800}.mobile-ranking-list-head span:last-child{text-align:right}.mobile-ranking-row{display:grid;grid-template-columns:44px minmax(0,1fr) 96px;gap:8px;align-items:center;width:100%;padding:11px 10px;border:0;border-top:1px solid #d9e1ea;background:#fff;color:inherit;text-align:left;cursor:pointer}.mobile-ranking-row:active{background:#f2f7fc}.mobile-ranking-position{color:#2d4053;font-variant-numeric:tabular-nums;text-align:center}.mobile-ranking-athlete{display:grid;min-width:0;gap:2px}.mobile-ranking-athlete strong{overflow:hidden;color:#1d2f42;font-size:1rem;text-overflow:ellipsis;white-space:nowrap}.mobile-ranking-athlete span{overflow:hidden;color:#6c7c8c;font-size:.78rem;text-overflow:ellipsis;white-space:nowrap}.mobile-ranking-score{color:#0047d9;font-size:1rem;font-variant-numeric:tabular-nums;text-align:right}.mobile-ranking-modal-backdrop{position:fixed;inset:0;z-index:50;align-items:flex-end;justify-content:center;padding:14px;background:#0e1c2a6b}.mobile-ranking-modal{display:grid;width:min(720px,100%);max-height:min(86vh,760px);gap:16px;overflow:auto;padding:18px;border:1px solid #b8c7d6;border-radius:16px 16px 4px 4px;background:#f7fafc;box-shadow:0 24px 70px #0d1f3047}.mobile-ranking-modal-header{display:flex;gap:14px;align-items:flex-start;justify-content:space-between}.mobile-ranking-modal-header h2{margin:2px 0 4px;color:#182b3c;font-size:1.2rem}.mobile-ranking-modal-header p{margin:0;color:#5b6d7f}.mobile-ranking-detail-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.mobile-ranking-detail-block{display:grid;gap:10px}.mobile-ranking-chip-list{display:flex;flex-wrap:wrap;gap:6px}.mobile-ranking-result-list{display:grid;gap:8px;margin:0;padding:0;list-style:none}.mobile-ranking-result-item{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:center;padding:10px 12px;border:1px solid #d4dee8;border-radius:8px;background:#fff}.mobile-ranking-result-item div:first-child{display:grid;min-width:0;gap:2px}.mobile-ranking-result-item strong{overflow:hidden;color:#22394f;text-overflow:ellipsis;white-space:nowrap}.mobile-ranking-result-item span{color:#617384;font-size:.82rem}.mobile-ranking-result-scores{display:grid;gap:4px;justify-items:end;font-variant-numeric:tabular-nums}@media(max-width:900px){.hero,.auth-layout,.dashboard-grid,.admin-menu-grid,.public-mode-grid,.representation-overview-grid,.rankings-layout,.field-grid-2,.field-grid-3,.checkbox-grid{grid-template-columns:1fr}.dashboard-header{flex-direction:column;align-items:stretch}.selection-item,.representation-profile-header,.overview-year-header,.overview-profile-header{flex-direction:column}.status-stack-inline{justify-content:flex-start}.ranking-matrix-meta{grid-template-columns:1fr}.selection-item-header{flex-direction:column}.dataset-role-grid,.profile-row-detail-grid{grid-template-columns:1fr}.general-ranking-desktop-matrix{display:none}.mobile-ranking-hint{display:flex}.mobile-ranking-list{display:grid;overflow:hidden;border:1px solid #c5cfda;border-radius:8px;background:#fff}.mobile-ranking-modal-backdrop{display:flex}}@media(max-width:520px){.rankings-page{padding-inline:14px}.rankings-page .dashboard-panel{padding:14px}.mobile-ranking-list-head,.mobile-ranking-row{grid-template-columns:34px minmax(0,1fr) 84px;padding-inline:8px}.mobile-ranking-detail-summary,.mobile-ranking-result-item{grid-template-columns:1fr}.mobile-ranking-result-scores{display:flex;flex-wrap:wrap;justify-content:flex-start}}.calendar-page{min-height:100vh;padding:24px clamp(14px,3vw,32px) 48px;background:radial-gradient(circle at 12% 8%,rgba(199,220,188,.9),transparent 28%),linear-gradient(135deg,#f4efe6,#e7edf0 44%,#dde8dc);color:#17231d}.calendar-hero{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;max-width:1640px;margin:0 auto 18px;padding:20px;border:1px solid rgba(76,96,80,.24);border-radius:18px;background:#fffcf6e0;box-shadow:0 18px 44px #34443c1f}.calendar-hero h1{margin:0 0 8px;font-size:clamp(2rem,5vw,4.6rem);line-height:.95;letter-spacing:-.05em}.calendar-toolbar{display:grid;gap:14px;max-width:1640px;margin:0 auto 16px;padding:16px;border:1px solid rgba(76,96,80,.22);border-radius:16px;background:#faf8f1eb}.calendar-toolbar-primary{display:grid;grid-template-columns:minmax(320px,.9fr) minmax(320px,1.4fr);gap:14px;align-items:end}.calendar-filter-grid{display:grid;grid-template-columns:repeat(6,minmax(130px,1fr)) minmax(150px,auto);gap:10px;align-items:end}.calendar-toolbar label,.calendar-search-field{display:grid;gap:6px;min-width:0;font-weight:700;color:#314238}.calendar-toolbar input,.calendar-toolbar select{width:100%;min-height:42px;padding:0 12px;border:1px solid #a9b7aa;border-radius:10px;background:#fffdf8}.calendar-month-switcher{display:grid;grid-template-columns:auto minmax(0,1fr) auto auto;gap:10px;align-items:center}.calendar-month-switcher div{display:grid;gap:2px;min-width:0;text-align:center}.calendar-month-switcher strong{overflow:hidden;font-size:1.25rem;text-overflow:ellipsis;white-space:nowrap}.calendar-month-switcher span{color:#65746b;font-size:.86rem}.calendar-check{display:flex!important;min-height:42px;align-items:center;gap:8px!important;padding:0 10px;border:1px solid #c4cec3;border-radius:10px;background:#fffdf8;white-space:nowrap}.calendar-check input{min-height:auto}.calendar-mobile-filter-toggle{display:none;min-height:44px;align-items:center;justify-content:space-between;gap:10px;padding:0 14px;border:1px solid #9fb09f;border-radius:12px;background:#eef3e8;color:#203927;font-weight:900;cursor:pointer}.calendar-mobile-filter-toggle strong{display:inline-grid;min-width:24px;height:24px;place-items:center;border-radius:999px;background:#315b37;color:#fff;font-size:.78rem}.calendar-filter-actions{display:flex;gap:8px;align-items:end}.calendar-filter-actions .calendar-check{flex:1 1 auto}.calendar-filter-clear{min-height:42px;padding:0 12px;border:1px solid #b9c5b9;border-radius:10px;background:#fffdf8;color:#314238;font-weight:900;cursor:pointer}.calendar-search-navigator{display:grid;gap:10px;max-width:1640px;margin:0 auto 16px;padding:12px 14px;border:1px solid rgba(76,96,80,.2);border-radius:14px;background:#fffcf6eb}.calendar-search-navigator>div:first-child{display:flex;flex-wrap:wrap;gap:8px;align-items:baseline}.calendar-search-navigator span{color:#65746b;font-size:.9rem}.calendar-search-months{display:flex;flex-wrap:wrap;gap:8px}.calendar-search-months button{min-height:34px;padding:0 12px;border:1px solid #c4cec3;border-radius:999px;background:#fffdf8;color:#314238;cursor:pointer;font-weight:800}.calendar-search-months button:hover,.calendar-search-month-active{border-color:#315b37!important;background:#e8efe1!important;color:#203927!important}.calendar-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(320px,390px);gap:16px;max-width:1640px;margin:0 auto}.calendar-board,.calendar-detail-panel{min-width:0;border:1px solid rgba(76,96,80,.24);border-radius:18px;background:#fffcf6f0;box-shadow:0 18px 44px #34443c1f}.calendar-board{position:relative;padding:0;overflow-x:auto;-webkit-overflow-scrolling:touch}.calendar-timeline-row{display:grid;grid-template-columns:76px repeat(var(--calendar-lanes),minmax(118px,1fr)) 48px;min-width:calc(76px + var(--calendar-lanes) * 118px + 48px)}.calendar-timeline{width:max-content;min-width:100%;overflow:clip;border:0;border-radius:18px;background:linear-gradient(90deg,rgba(244,248,237,.92) 0 76px,transparent 76px),#fffef9}.calendar-timeline-row{position:relative;min-height:34px;border-top:1px solid #d8ded4;color:inherit;text-align:left;cursor:pointer}.calendar-timeline-row:first-child{border-top:0}.calendar-timeline-row:hover,.calendar-timeline-row-selected{background:#e8efe1bf}.calendar-timeline-row-weekend{background:linear-gradient(90deg,#6b746c1a,#6b746c0e),#f8f7f1}.calendar-timeline-row-weekend .calendar-timeline-day{background:#e6e8e1fa}.calendar-timeline-row-today{background:linear-gradient(90deg,#e7b9582e,#e7b9580d),#fffef9}.calendar-timeline-row-today .calendar-timeline-day{background:#fff0c9}.calendar-timeline-row-today .calendar-timeline-day strong{color:#6f3f22}.calendar-timeline-row-today-pulse{animation:today-row-pulse .72s ease-in-out 3}@keyframes today-row-pulse{0%,to{box-shadow:inset 0 0 #cf812500}45%{box-shadow:inset 0 0 0 3px #cf812585}}.calendar-timeline-day{position:sticky;left:0;z-index:3;display:grid;grid-template-columns:auto 1fr;gap:6px;align-items:center;min-height:34px;padding:4px 8px;border-right:1px solid #c8d1c4;background:#f4f8edf5}.calendar-timeline-day strong{font-weight:950;font-size:1rem;line-height:1}.calendar-timeline-day span{color:#65746b;font-size:.72rem;font-weight:800;text-transform:uppercase}.calendar-lane-cell{min-width:0;min-height:34px;padding:0;border-right:1px solid #e2e6de;background:linear-gradient(180deg,#ffffff94,#ffffff29),transparent}.calendar-timeline-row-weekend .calendar-lane-cell,.calendar-timeline-row-weekend .calendar-row-more-cell{background:linear-gradient(180deg,#ffffff6b,#ffffff14),#6b746c0b}.calendar-event-segment span{display:grid;gap:1px;min-width:0}.calendar-event-segment small{overflow:hidden;color:#1d2a22b8;font-size:.68rem;font-weight:900;text-overflow:ellipsis;white-space:nowrap}.calendar-event,.calendar-event-more{display:block;width:100%;overflow:hidden;padding:3px 7px;border:0;border-radius:8px;color:#1d2a22;font-size:.75rem;font-weight:800;text-align:left;text-overflow:ellipsis;white-space:nowrap}.calendar-event{cursor:pointer}.calendar-event-importance-1{border-left:5px solid #1f4c2b}.calendar-event-importance-2{border-left:5px solid #527286}.calendar-event-importance-3{border-left:5px solid #a97434}.calendar-event-importance-none{border-left:5px solid #9aa49a}.calendar-event-group-30{background:#cfe4c6}.calendar-event-group-61{background:#d9e9f1}.calendar-event-group-19{background:#f2dfbd}.calendar-event-group-62{background:#d8d2ee}.calendar-event-group-91{background:#ead8c6}.calendar-event-group-127{background:#d2eadf}.calendar-event-group-252{background:#ece1ed}.calendar-event-group-other{background:#e6ebe4}.calendar-event-international{box-shadow:inset 0 0 0 2px #1b4b6938}.calendar-event-cancelled{background:#e6e0dc;color:#756d68;text-decoration:line-through;border-left-color:#8b8179}.calendar-event.calendar-event-segment{min-height:34px;height:100%;padding:4px 8px;border-radius:0;box-shadow:none}.calendar-event.calendar-event-segment-start,.calendar-event.calendar-event-segment-clipped-start{min-height:34px;border-radius:10px 10px 0 0}.calendar-event.calendar-event-segment-middle{min-height:35px;margin-top:-1px;border-radius:0}.calendar-event.calendar-event-segment-end,.calendar-event.calendar-event-segment-clipped-end{min-height:35px;margin-top:-1px;border-radius:0 0 10px 10px}.calendar-event.calendar-event-segment-single{min-height:34px;border-radius:10px}.calendar-event-more{background:#f1eee8;color:#65746b}.calendar-row-more-cell{display:grid;align-items:center;justify-items:center;min-width:0;min-height:34px;border-right:1px solid #e2e6de}.calendar-row-more{width:auto;max-width:38px;padding:3px 6px;white-space:nowrap}.calendar-empty{margin:16px 0 4px;color:#65746b;font-weight:700}.calendar-detail-panel{display:grid;align-content:start;gap:16px;padding:16px}.calendar-panel-heading h2,.calendar-event-detail h2{margin:0;line-height:1.1}.calendar-day-list{display:grid;gap:8px}.calendar-list-event{display:grid;gap:4px;padding:12px;border:1px solid #d2d9cf;border-radius:12px;background:#fffef9;color:inherit;text-align:left;cursor:pointer}.calendar-list-event:hover{border-color:#637a5e;background:#f4f8ed}.calendar-list-event span{color:#65746b;font-size:.88rem}.calendar-event-detail{display:grid;gap:10px;padding-top:14px;border-top:1px solid #d8ded4}.calendar-event-detail p{margin:0}.calendar-event-title-link{color:inherit;text-decoration:underline;text-decoration-color:#315b3759;text-decoration-thickness:.08em;text-underline-offset:.14em}.calendar-event-title-link:hover{color:#315b37;text-decoration-color:currentColor}.calendar-detail-badges{display:flex;flex-wrap:wrap;gap:6px}.calendar-detail-badges span{padding:4px 8px;border-radius:999px;background:#e9efe2;color:#314238;font-size:.78rem;font-weight:800}.calendar-detail-actions{display:flex;flex-wrap:wrap;gap:8px}.calendar-detail-loading{padding:12px;border-radius:10px;background:#f3f0e8;color:#65746b;font-weight:800}@media(max-width:1180px){.calendar-toolbar-primary{grid-template-columns:repeat(2,minmax(0,1fr))}.calendar-filter-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.calendar-layout{grid-template-columns:1fr}}@media(max-width:680px){.calendar-page{padding:14px 10px 32px}.calendar-hero{display:grid;padding:16px}.calendar-toolbar{position:sticky;top:0;z-index:20;gap:12px;padding:10px}.calendar-toolbar-primary{grid-template-columns:1fr}.calendar-mobile-filter-toggle{display:flex}.calendar-filter-grid{display:none;grid-template-columns:1fr;max-height:min(62vh,520px);overflow:auto;padding-top:12px;border-top:1px solid rgba(76,96,80,.18)}.calendar-filter-grid.calendar-filter-grid-open{display:grid}.calendar-board{padding:0;scrollbar-width:thin}.calendar-board:after{content:"";position:sticky;right:0;z-index:6;display:block;width:28px;height:0;margin-left:auto;pointer-events:none;box-shadow:-18px 0 18px #2530281f}.calendar-timeline-row{grid-template-columns:64px repeat(var(--calendar-lanes),minmax(96px,1fr)) 46px;min-width:calc(64px + var(--calendar-lanes) * 96px + 46px)}.calendar-timeline-day{grid-template-columns:auto 1fr;gap:4px;padding:4px 6px}.calendar-event,.calendar-event-more{padding:2px 5px;font-size:.66rem}.calendar-event-segment,.calendar-lane-cell,.calendar-timeline-day{min-height:32px}.calendar-row-more-cell{position:sticky;right:0;z-index:4;border-left:1px solid #d5ddd1;background:#faf8f1f5}.calendar-row-more{max-width:40px;padding-inline:5px}.calendar-month-switcher{grid-template-columns:repeat(3,minmax(0,1fr))}.calendar-month-switcher div{grid-column:1 / -1;order:-1}}
