@charset "UTF-8";/*!
 * Bootstrap  v5.2.3 (https://getbootstrap.com/)
 * Copyright 2011-2022 The Bootstrap Authors
 * Copyright 2011-2022 Twitter, Inc.
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
 */:root{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#d63384;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-black:#000;--bs-white:#fff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-gray-100:#f8f9fa;--bs-gray-200:#e9ecef;--bs-gray-300:#dee2e6;--bs-gray-400:#ced4da;--bs-gray-500:#adb5bd;--bs-gray-600:#6c757d;--bs-gray-700:#495057;--bs-gray-800:#343a40;--bs-gray-900:#212529;--bs-primary:#0d6efd;--bs-secondary:#6c757d;--bs-success:#198754;--bs-info:#0dcaf0;--bs-warning:#ffc107;--bs-danger:#dc3545;--bs-light:#f8f9fa;--bs-dark:#212529;--bs-primary-rgb:13,110,253;--bs-secondary-rgb:108,117,125;--bs-success-rgb:25,135,84;--bs-info-rgb:13,202,240;--bs-warning-rgb:255,193,7;--bs-danger-rgb:220,53,69;--bs-light-rgb:248,249,250;--bs-dark-rgb:33,37,41;--bs-white-rgb:255,255,255;--bs-black-rgb:0,0,0;--bs-body-color-rgb:33,37,41;--bs-body-bg-rgb:255,255,255;--bs-font-sans-serif:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue","Noto Sans","Liberation Sans",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--bs-font-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--bs-gradient:linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));--bs-body-font-family:var(--bs-font-sans-serif);--bs-body-font-size:1rem;--bs-body-font-weight:400;--bs-body-line-height:1.5;--bs-body-color:#212529;--bs-body-bg:#fff;--bs-border-width:1px;--bs-border-style:solid;--bs-border-color:#dee2e6;--bs-border-color-translucent:rgba(0, 0, 0, 0.175);--bs-border-radius:0.375rem;--bs-border-radius-sm:0.25rem;--bs-border-radius-lg:0.5rem;--bs-border-radius-xl:1rem;--bs-border-radius-2xl:2rem;--bs-border-radius-pill:50rem;--bs-link-color:#0d6efd;--bs-link-hover-color:#0a58ca;--bs-code-color:#d63384;--bs-highlight-bg:#fff3cd}*,::after,::before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}hr{margin:1rem 0;color:inherit;border:0;border-top:1px solid;opacity:.25}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}.h1,h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width:1200px){.h1,h1{font-size:2.5rem}}.h2,h2{font-size:calc(1.325rem + .9vw)}@media (min-width:1200px){.h2,h2{font-size:2rem}}.h3,h3{font-size:calc(1.3rem + .6vw)}@media (min-width:1200px){.h3,h3{font-size:1.75rem}}.h4,h4{font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){.h4,h4{font-size:1.5rem}}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}.small,small{font-size:.875em}.mark,mark{padding:.1875em;background-color:var(--bs-highlight-bg)}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:var(--bs-link-color);text-decoration:underline}a:hover{color:var(--bs-link-hover-color)}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:var(--bs-font-monospace);font-size:1em}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:var(--bs-code-color);word-wrap:break-word}a>code{color:inherit}kbd{padding:.1875rem .375rem;font-size:.875em;color:var(--bs-body-bg);background-color:var(--bs-body-color);border-radius:.25rem}kbd kbd{padding:0;font-size:1em}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:#6c757d;text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator{display:none!important}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + .3vw);line-height:inherit}@media (min-width:1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:textfield}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}::file-selector-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none!important}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-6{font-size:2.5rem}}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:.875em;color:#6c757d}.blockquote-footer::before{content:"— "}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid var(--bs-border-color);border-radius:.375rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:.875em;color:#6c757d}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{--bs-gutter-x:1.5rem;--bs-gutter-y:0;width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-right:auto;margin-left:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}@media (min-width:1400px){.container,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{max-width:1320px}}.row{--bs-gutter-x:1.5rem;--bs-gutter-y:0;display:flex;flex-wrap:wrap;margin-top:calc(-1 * var(--bs-gutter-y));margin-right:calc(-.5 * var(--bs-gutter-x));margin-left:calc(-.5 * var(--bs-gutter-x))}.row>*{flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.6666666667%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333333%}.col-2{flex:0 0 auto;width:16.66666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333333%}.col-5{flex:0 0 auto;width:41.66666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333333%}.col-8{flex:0 0 auto;width:66.66666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333333%}.col-11{flex:0 0 auto;width:91.66666667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-left:8.33333333%}.offset-2{margin-left:16.66666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333333%}.offset-5{margin-left:41.66666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333333%}.offset-8{margin-left:66.66666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333333%}.offset-11{margin-left:91.66666667%}.g-0,.gx-0{--bs-gutter-x:0}.g-0,.gy-0{--bs-gutter-y:0}.g-1,.gx-1{--bs-gutter-x:0.25rem}.g-1,.gy-1{--bs-gutter-y:0.25rem}.g-2,.gx-2{--bs-gutter-x:0.5rem}.g-2,.gy-2{--bs-gutter-y:0.5rem}.g-3,.gx-3{--bs-gutter-x:1rem}.g-3,.gy-3{--bs-gutter-y:1rem}.g-4,.gx-4{--bs-gutter-x:1.5rem}.g-4,.gy-4{--bs-gutter-y:1.5rem}.g-5,.gx-5{--bs-gutter-x:3rem}.g-5,.gy-5{--bs-gutter-y:3rem}@media (min-width:576px){.col-sm{flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.6666666667%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333333%}.col-sm-2{flex:0 0 auto;width:16.66666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333333%}.col-sm-5{flex:0 0 auto;width:41.66666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333333%}.col-sm-8{flex:0 0 auto;width:66.66666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333333%}.col-sm-11{flex:0 0 auto;width:91.66666667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333333%}.offset-sm-2{margin-left:16.66666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333333%}.offset-sm-5{margin-left:41.66666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333333%}.offset-sm-8{margin-left:66.66666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333333%}.offset-sm-11{margin-left:91.66666667%}.g-sm-0,.gx-sm-0{--bs-gutter-x:0}.g-sm-0,.gy-sm-0{--bs-gutter-y:0}.g-sm-1,.gx-sm-1{--bs-gutter-x:0.25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y:0.25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x:0.5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y:0.5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x:1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y:1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x:1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y:1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x:3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y:3rem}}@media (min-width:768px){.col-md{flex:1 0 0%}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.6666666667%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333333%}.col-md-2{flex:0 0 auto;width:16.66666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333333%}.col-md-5{flex:0 0 auto;width:41.66666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333333%}.col-md-8{flex:0 0 auto;width:66.66666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333333%}.col-md-11{flex:0 0 auto;width:91.66666667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333333%}.offset-md-2{margin-left:16.66666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333333%}.offset-md-5{margin-left:41.66666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333333%}.offset-md-8{margin-left:66.66666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333333%}.offset-md-11{margin-left:91.66666667%}.g-md-0,.gx-md-0{--bs-gutter-x:0}.g-md-0,.gy-md-0{--bs-gutter-y:0}.g-md-1,.gx-md-1{--bs-gutter-x:0.25rem}.g-md-1,.gy-md-1{--bs-gutter-y:0.25rem}.g-md-2,.gx-md-2{--bs-gutter-x:0.5rem}.g-md-2,.gy-md-2{--bs-gutter-y:0.5rem}.g-md-3,.gx-md-3{--bs-gutter-x:1rem}.g-md-3,.gy-md-3{--bs-gutter-y:1rem}.g-md-4,.gx-md-4{--bs-gutter-x:1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y:1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x:3rem}.g-md-5,.gy-md-5{--bs-gutter-y:3rem}}@media (min-width:992px){.col-lg{flex:1 0 0%}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.6666666667%}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333333%}.col-lg-2{flex:0 0 auto;width:16.66666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333333%}.col-lg-5{flex:0 0 auto;width:41.66666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333333%}.col-lg-8{flex:0 0 auto;width:66.66666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333333%}.col-lg-11{flex:0 0 auto;width:91.66666667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333333%}.offset-lg-2{margin-left:16.66666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333333%}.offset-lg-5{margin-left:41.66666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333333%}.offset-lg-8{margin-left:66.66666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333333%}.offset-lg-11{margin-left:91.66666667%}.g-lg-0,.gx-lg-0{--bs-gutter-x:0}.g-lg-0,.gy-lg-0{--bs-gutter-y:0}.g-lg-1,.gx-lg-1{--bs-gutter-x:0.25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y:0.25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x:0.5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y:0.5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x:1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y:1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x:1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y:1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x:3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y:3rem}}@media (min-width:1200px){.col-xl{flex:1 0 0%}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333333%}.col-xl-2{flex:0 0 auto;width:16.66666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333333%}.col-xl-5{flex:0 0 auto;width:41.66666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333333%}.col-xl-8{flex:0 0 auto;width:66.66666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333333%}.col-xl-11{flex:0 0 auto;width:91.66666667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333333%}.offset-xl-2{margin-left:16.66666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333333%}.offset-xl-5{margin-left:41.66666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333333%}.offset-xl-8{margin-left:66.66666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333333%}.offset-xl-11{margin-left:91.66666667%}.g-xl-0,.gx-xl-0{--bs-gutter-x:0}.g-xl-0,.gy-xl-0{--bs-gutter-y:0}.g-xl-1,.gx-xl-1{--bs-gutter-x:0.25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y:0.25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x:0.5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y:0.5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x:1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y:1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x:1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y:1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x:3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y:3rem}}@media (min-width:1400px){.col-xxl{flex:1 0 0%}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333333%}.col-xxl-2{flex:0 0 auto;width:16.66666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333333%}.col-xxl-5{flex:0 0 auto;width:41.66666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333333%}.col-xxl-8{flex:0 0 auto;width:66.66666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333333%}.col-xxl-11{flex:0 0 auto;width:91.66666667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.33333333%}.offset-xxl-2{margin-left:16.66666667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.33333333%}.offset-xxl-5{margin-left:41.66666667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.33333333%}.offset-xxl-8{margin-left:66.66666667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.33333333%}.offset-xxl-11{margin-left:91.66666667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x:0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y:0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x:0.25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y:0.25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x:0.5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y:0.5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x:1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y:1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x:1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y:1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x:3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y:3rem}}.table{--bs-table-color:var(--bs-body-color);--bs-table-bg:transparent;--bs-table-border-color:var(--bs-border-color);--bs-table-accent-bg:transparent;--bs-table-striped-color:var(--bs-body-color);--bs-table-striped-bg:rgba(0, 0, 0, 0.05);--bs-table-active-color:var(--bs-body-color);--bs-table-active-bg:rgba(0, 0, 0, 0.1);--bs-table-hover-color:var(--bs-body-color);--bs-table-hover-bg:rgba(0, 0, 0, 0.075);width:100%;margin-bottom:1rem;color:var(--bs-table-color);vertical-align:top;border-color:var(--bs-table-border-color)}.table>:not(caption)>*>*{padding:.5rem .5rem;background-color:var(--bs-table-bg);border-bottom-width:1px;box-shadow:inset 0 0 0 9999px var(--bs-table-accent-bg)}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table-group-divider{border-top:2px solid currentcolor}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem .25rem}.table-bordered>:not(caption)>*{border-width:1px 0}.table-bordered>:not(caption)>*>*{border-width:0 1px}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-borderless>:not(:first-child){border-top-width:0}.table-striped>tbody>tr:nth-of-type(odd)>*{--bs-table-accent-bg:var(--bs-table-striped-bg);color:var(--bs-table-striped-color)}.table-striped-columns>:not(caption)>tr>:nth-child(2n){--bs-table-accent-bg:var(--bs-table-striped-bg);color:var(--bs-table-striped-color)}.table-active{--bs-table-accent-bg:var(--bs-table-active-bg);color:var(--bs-table-active-color)}.table-hover>tbody>tr:hover>*{--bs-table-accent-bg:var(--bs-table-hover-bg);color:var(--bs-table-hover-color)}.table-primary{--bs-table-color:#000;--bs-table-bg:#cfe2ff;--bs-table-border-color:#bacbe6;--bs-table-striped-bg:#c5d7f2;--bs-table-striped-color:#000;--bs-table-active-bg:#bacbe6;--bs-table-active-color:#000;--bs-table-hover-bg:#bfd1ec;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-secondary{--bs-table-color:#000;--bs-table-bg:#e2e3e5;--bs-table-border-color:#cbccce;--bs-table-striped-bg:#d7d8da;--bs-table-striped-color:#000;--bs-table-active-bg:#cbccce;--bs-table-active-color:#000;--bs-table-hover-bg:#d1d2d4;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-success{--bs-table-color:#000;--bs-table-bg:#d1e7dd;--bs-table-border-color:#bcd0c7;--bs-table-striped-bg:#c7dbd2;--bs-table-striped-color:#000;--bs-table-active-bg:#bcd0c7;--bs-table-active-color:#000;--bs-table-hover-bg:#c1d6cc;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-info{--bs-table-color:#000;--bs-table-bg:#cff4fc;--bs-table-border-color:#badce3;--bs-table-striped-bg:#c5e8ef;--bs-table-striped-color:#000;--bs-table-active-bg:#badce3;--bs-table-active-color:#000;--bs-table-hover-bg:#bfe2e9;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-warning{--bs-table-color:#000;--bs-table-bg:#fff3cd;--bs-table-border-color:#e6dbb9;--bs-table-striped-bg:#f2e7c3;--bs-table-striped-color:#000;--bs-table-active-bg:#e6dbb9;--bs-table-active-color:#000;--bs-table-hover-bg:#ece1be;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-danger{--bs-table-color:#000;--bs-table-bg:#f8d7da;--bs-table-border-color:#dfc2c4;--bs-table-striped-bg:#eccccf;--bs-table-striped-color:#000;--bs-table-active-bg:#dfc2c4;--bs-table-active-color:#000;--bs-table-hover-bg:#e5c7ca;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-light{--bs-table-color:#000;--bs-table-bg:#f8f9fa;--bs-table-border-color:#dfe0e1;--bs-table-striped-bg:#ecedee;--bs-table-striped-color:#000;--bs-table-active-bg:#dfe0e1;--bs-table-active-color:#000;--bs-table-hover-bg:#e5e6e7;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-dark{--bs-table-color:#fff;--bs-table-bg:#212529;--bs-table-border-color:#373b3e;--bs-table-striped-bg:#2c3034;--bs-table-striped-color:#fff;--bs-table-active-bg:#373b3e;--bs-table-active-color:#fff;--bs-table-hover-bg:#323539;--bs-table-hover-color:#fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media (max-width:575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1399.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.form-label{margin-bottom:.5rem}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem}.form-text{margin-top:.25rem;font-size:.875em;color:#6c757d}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:.375rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:#212529;background-color:#fff;border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-control::-webkit-date-and-time-value{height:1.5em}.form-control::-moz-placeholder{color:#6c757d;opacity:1}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled{background-color:#e9ecef;opacity:1}.form-control::-webkit-file-upload-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:#212529;background-color:#e9ecef;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;-webkit-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}.form-control::file-selector-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:#212529;background-color:#e9ecef;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control::-webkit-file-upload-button{-webkit-transition:none;transition:none}.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:#dde0e3}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:#dde0e3}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext:focus{outline:0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{min-height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;border-radius:.25rem}.form-control-sm::-webkit-file-upload-button{padding:.25rem .5rem;margin:-.25rem -.5rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}.form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-.25rem -.5rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}.form-control-lg{min-height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;border-radius:.5rem}.form-control-lg::-webkit-file-upload-button{padding:.5rem 1rem;margin:-.5rem -1rem;-webkit-margin-end:1rem;margin-inline-end:1rem}.form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-.5rem -1rem;-webkit-margin-end:1rem;margin-inline-end:1rem}textarea.form-control{min-height:calc(1.5em + .75rem + 2px)}textarea.form-control-sm{min-height:calc(1.5em + .5rem + 2px)}textarea.form-control-lg{min-height:calc(1.5em + 1rem + 2px)}.form-control-color{width:3rem;height:calc(1.5em + .75rem + 2px);padding:.375rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{border:0!important;border-radius:.375rem}.form-control-color::-webkit-color-swatch{border-radius:.375rem}.form-control-color.form-control-sm{height:calc(1.5em + .5rem + 2px)}.form-control-color.form-control-lg{height:calc(1.5em + 1rem + 2px)}.form-select{display:block;width:100%;padding:.375rem 2.25rem .375rem .75rem;-moz-padding-start:calc(0.75rem - 3px);font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:1px solid #ced4da;border-radius:.375rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.form-select{transition:none}}.form-select:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-select[multiple],.form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}.form-select:disabled{background-color:#e9ecef}.form-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #212529}.form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem;border-radius:.25rem}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem;border-radius:.5rem}.form-check{display:block;min-height:1.5rem;padding-left:1.5em;margin-bottom:.125rem}.form-check .form-check-input{float:left;margin-left:-1.5em}.form-check-reverse{padding-right:1.5em;padding-left:0;text-align:right}.form-check-reverse .form-check-input{float:right;margin-right:-1.5em;margin-left:0}.form-check-input{width:1em;height:1em;margin-top:.25em;vertical-align:top;background-color:#fff;background-repeat:no-repeat;background-position:center;background-size:contain;border:1px solid rgba(0,0,0,.25);-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-print-color-adjust:exact;color-adjust:exact;print-color-adjust:exact}.form-check-input[type=checkbox]{border-radius:.25em}.form-check-input[type=radio]{border-radius:50%}.form-check-input:active{filter:brightness(90%)}.form-check-input:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-check-input:checked{background-color:#0d6efd;border-color:#0d6efd}.form-check-input:checked[type=checkbox]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e")}.form-check-input:checked[type=radio]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}.form-check-input[type=checkbox]:indeterminate{background-color:#0d6efd;border-color:#0d6efd;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.form-check-input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{cursor:default;opacity:.5}.form-switch{padding-left:2.5em}.form-switch .form-check-input{width:2em;margin-left:-2.5em;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");background-position:left center;border-radius:2em;transition:background-position .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{background-position:right center;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.form-switch.form-check-reverse{padding-right:2.5em;padding-left:0}.form-switch.form-check-reverse .form-check-input{margin-right:-2.5em;margin-left:0}.form-check-inline{display:inline-block;margin-right:1rem}.btn-check{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.btn-check:disabled+.btn,.btn-check[disabled]+.btn{pointer-events:none;filter:none;opacity:.65}.form-range{width:100%;height:1.5rem;padding:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(13,110,253,.25)}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(13,110,253,.25)}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#0d6efd;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.form-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}}.form-range::-webkit-slider-thumb:active{background-color:#b6d4fe}.form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.form-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#0d6efd;border:0;border-radius:1rem;-moz-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.form-range::-moz-range-thumb{-moz-transition:none;transition:none}}.form-range::-moz-range-thumb:active{background-color:#b6d4fe}.form-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.form-range:disabled::-moz-range-thumb{background-color:#adb5bd}.form-floating{position:relative}.form-floating>.form-control,.form-floating>.form-control-plaintext,.form-floating>.form-select{height:calc(3.5rem + 2px);line-height:1.25}.form-floating>label{position:absolute;top:0;left:0;width:100%;height:100%;padding:1rem .75rem;overflow:hidden;text-align:start;text-overflow:ellipsis;white-space:nowrap;pointer-events:none;border:1px solid transparent;transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media (prefers-reduced-motion:reduce){.form-floating>label{transition:none}}.form-floating>.form-control,.form-floating>.form-control-plaintext{padding:1rem .75rem}.form-floating>.form-control-plaintext::-moz-placeholder,.form-floating>.form-control::-moz-placeholder{color:transparent}.form-floating>.form-control-plaintext::placeholder,.form-floating>.form-control::placeholder{color:transparent}.form-floating>.form-control-plaintext:not(:-moz-placeholder-shown),.form-floating>.form-control:not(:-moz-placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control-plaintext:focus,.form-floating>.form-control-plaintext:not(:placeholder-shown),.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control-plaintext:-webkit-autofill,.form-floating>.form-control:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:not(:-moz-placeholder-shown)~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control-plaintext~label,.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-select~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control:-webkit-autofill~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control-plaintext~label{border-width:1px 0}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-floating,.input-group>.form-select{position:relative;flex:1 1 auto;width:1%;min-width:0}.input-group>.form-control:focus,.input-group>.form-floating:focus-within,.input-group>.form-select:focus{z-index:5}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:5}.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.375rem}.input-group-lg>.btn,.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;border-radius:.5rem}.input-group-sm>.btn,.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text{padding:.25rem .5rem;font-size:.875rem;border-radius:.25rem}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:3rem}.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-control,.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-select,.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating){border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4),.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-control,.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-select,.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:-1px;border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.form-floating:not(:first-child)>.form-control,.input-group>.form-floating:not(:first-child)>.form-select{border-top-left-radius:0;border-bottom-left-radius:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#198754}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:rgba(25,135,84,.9);border-radius:.375rem}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip{display:block}.form-control.is-valid,.was-validated .form-control:valid{border-color:#198754;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:#198754;box-shadow:0 0 0 .25rem rgba(25,135,84,.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.form-select.is-valid,.was-validated .form-select:valid{border-color:#198754}.form-select.is-valid:not([multiple]):not([size]),.form-select.is-valid:not([multiple])[size="1"],.was-validated .form-select:valid:not([multiple]):not([size]),.was-validated .form-select:valid:not([multiple])[size="1"]{padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.form-select.is-valid:focus,.was-validated .form-select:valid:focus{border-color:#198754;box-shadow:0 0 0 .25rem rgba(25,135,84,.25)}.form-control-color.is-valid,.was-validated .form-control-color:valid{width:calc(3rem + calc(1.5em + .75rem))}.form-check-input.is-valid,.was-validated .form-check-input:valid{border-color:#198754}.form-check-input.is-valid:checked,.was-validated .form-check-input:valid:checked{background-color:#198754}.form-check-input.is-valid:focus,.was-validated .form-check-input:valid:focus{box-shadow:0 0 0 .25rem rgba(25,135,84,.25)}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#198754}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.input-group>.form-control:not(:focus).is-valid,.input-group>.form-floating:not(:focus-within).is-valid,.input-group>.form-select:not(:focus).is-valid,.was-validated .input-group>.form-control:not(:focus):valid,.was-validated .input-group>.form-floating:not(:focus-within):valid,.was-validated .input-group>.form-select:not(:focus):valid{z-index:3}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:rgba(220,53,69,.9);border-radius:.375rem}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:#dc3545;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .25rem rgba(220,53,69,.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.form-select.is-invalid,.was-validated .form-select:invalid{border-color:#dc3545}.form-select.is-invalid:not([multiple]):not([size]),.form-select.is-invalid:not([multiple])[size="1"],.was-validated .form-select:invalid:not([multiple]):not([size]),.was-validated .form-select:invalid:not([multiple])[size="1"]{padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.form-select.is-invalid:focus,.was-validated .form-select:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .25rem rgba(220,53,69,.25)}.form-control-color.is-invalid,.was-validated .form-control-color:invalid{width:calc(3rem + calc(1.5em + .75rem))}.form-check-input.is-invalid,.was-validated .form-check-input:invalid{border-color:#dc3545}.form-check-input.is-invalid:checked,.was-validated .form-check-input:invalid:checked{background-color:#dc3545}.form-check-input.is-invalid:focus,.was-validated .form-check-input:invalid:focus{box-shadow:0 0 0 .25rem rgba(220,53,69,.25)}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#dc3545}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.input-group>.form-control:not(:focus).is-invalid,.input-group>.form-floating:not(:focus-within).is-invalid,.input-group>.form-select:not(:focus).is-invalid,.was-validated .input-group>.form-control:not(:focus):invalid,.was-validated .input-group>.form-floating:not(:focus-within):invalid,.was-validated .input-group>.form-select:not(:focus):invalid{z-index:4}.btn{--bs-btn-padding-x:0.75rem;--bs-btn-padding-y:0.375rem;--bs-btn-font-family: ;--bs-btn-font-size:1rem;--bs-btn-font-weight:400;--bs-btn-line-height:1.5;--bs-btn-color:#212529;--bs-btn-bg:transparent;--bs-btn-border-width:1px;--bs-btn-border-color:transparent;--bs-btn-border-radius:0.375rem;--bs-btn-hover-border-color:transparent;--bs-btn-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.15),0 1px 1px rgba(0, 0, 0, 0.075);--bs-btn-disabled-opacity:0.65;--bs-btn-focus-box-shadow:0 0 0 0.25rem rgba(var(--bs-btn-focus-shadow-rgb), .5);display:inline-block;padding:var(--bs-btn-padding-y) var(--bs-btn-padding-x);font-family:var(--bs-btn-font-family);font-size:var(--bs-btn-font-size);font-weight:var(--bs-btn-font-weight);line-height:var(--bs-btn-line-height);color:var(--bs-btn-color);text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;border:var(--bs-btn-border-width) solid var(--bs-btn-border-color);border-radius:var(--bs-btn-border-radius);background-color:var(--bs-btn-bg);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color)}.btn-check+.btn:hover{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color)}.btn:focus-visible{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:focus-visible+.btn{border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:checked+.btn,.btn.active,.btn.show,.btn:first-child:active,:not(.btn-check)+.btn:active{color:var(--bs-btn-active-color);background-color:var(--bs-btn-active-bg);border-color:var(--bs-btn-active-border-color)}.btn-check:checked+.btn:focus-visible,.btn.active:focus-visible,.btn.show:focus-visible,.btn:first-child:active:focus-visible,:not(.btn-check)+.btn:active:focus-visible{box-shadow:var(--bs-btn-focus-box-shadow)}.btn.disabled,.btn:disabled,fieldset:disabled .btn{color:var(--bs-btn-disabled-color);pointer-events:none;background-color:var(--bs-btn-disabled-bg);border-color:var(--bs-btn-disabled-border-color);opacity:var(--bs-btn-disabled-opacity)}.btn-primary{--bs-btn-color:#fff;--bs-btn-bg:#0d6efd;--bs-btn-border-color:#0d6efd;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#0b5ed7;--bs-btn-hover-border-color:#0a58ca;--bs-btn-focus-shadow-rgb:49,132,253;--bs-btn-active-color:#fff;--bs-btn-active-bg:#0a58ca;--bs-btn-active-border-color:#0a53be;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#0d6efd;--bs-btn-disabled-border-color:#0d6efd}.btn-secondary{--bs-btn-color:#fff;--bs-btn-bg:#6c757d;--bs-btn-border-color:#6c757d;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#5c636a;--bs-btn-hover-border-color:#565e64;--bs-btn-focus-shadow-rgb:130,138,145;--bs-btn-active-color:#fff;--bs-btn-active-bg:#565e64;--bs-btn-active-border-color:#51585e;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#6c757d;--bs-btn-disabled-border-color:#6c757d}.btn-success{--bs-btn-color:#fff;--bs-btn-bg:#198754;--bs-btn-border-color:#198754;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#157347;--bs-btn-hover-border-color:#146c43;--bs-btn-focus-shadow-rgb:60,153,110;--bs-btn-active-color:#fff;--bs-btn-active-bg:#146c43;--bs-btn-active-border-color:#13653f;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#198754;--bs-btn-disabled-border-color:#198754}.btn-info{--bs-btn-color:#000;--bs-btn-bg:#0dcaf0;--bs-btn-border-color:#0dcaf0;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#31d2f2;--bs-btn-hover-border-color:#25cff2;--bs-btn-focus-shadow-rgb:11,172,204;--bs-btn-active-color:#000;--bs-btn-active-bg:#3dd5f3;--bs-btn-active-border-color:#25cff2;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#0dcaf0;--bs-btn-disabled-border-color:#0dcaf0}.btn-warning{--bs-btn-color:#000;--bs-btn-bg:#ffc107;--bs-btn-border-color:#ffc107;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#ffca2c;--bs-btn-hover-border-color:#ffc720;--bs-btn-focus-shadow-rgb:217,164,6;--bs-btn-active-color:#000;--bs-btn-active-bg:#ffcd39;--bs-btn-active-border-color:#ffc720;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#ffc107;--bs-btn-disabled-border-color:#ffc107}.btn-danger{--bs-btn-color:#fff;--bs-btn-bg:#dc3545;--bs-btn-border-color:#dc3545;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#bb2d3b;--bs-btn-hover-border-color:#b02a37;--bs-btn-focus-shadow-rgb:225,83,97;--bs-btn-active-color:#fff;--bs-btn-active-bg:#b02a37;--bs-btn-active-border-color:#a52834;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#dc3545;--bs-btn-disabled-border-color:#dc3545}.btn-light{--bs-btn-color:#000;--bs-btn-bg:#f8f9fa;--bs-btn-border-color:#f8f9fa;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#d3d4d5;--bs-btn-hover-border-color:#c6c7c8;--bs-btn-focus-shadow-rgb:211,212,213;--bs-btn-active-color:#000;--bs-btn-active-bg:#c6c7c8;--bs-btn-active-border-color:#babbbc;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#f8f9fa;--bs-btn-disabled-border-color:#f8f9fa}.btn-dark{--bs-btn-color:#fff;--bs-btn-bg:#212529;--bs-btn-border-color:#212529;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#424649;--bs-btn-hover-border-color:#373b3e;--bs-btn-focus-shadow-rgb:66,70,73;--bs-btn-active-color:#fff;--bs-btn-active-bg:#4d5154;--bs-btn-active-border-color:#373b3e;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#212529;--bs-btn-disabled-border-color:#212529}.btn-outline-primary{--bs-btn-color:#0d6efd;--bs-btn-border-color:#0d6efd;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#0d6efd;--bs-btn-hover-border-color:#0d6efd;--bs-btn-focus-shadow-rgb:13,110,253;--bs-btn-active-color:#fff;--bs-btn-active-bg:#0d6efd;--bs-btn-active-border-color:#0d6efd;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#0d6efd;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#0d6efd;--bs-gradient:none}.btn-outline-secondary{--bs-btn-color:#6c757d;--bs-btn-border-color:#6c757d;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#6c757d;--bs-btn-hover-border-color:#6c757d;--bs-btn-focus-shadow-rgb:108,117,125;--bs-btn-active-color:#fff;--bs-btn-active-bg:#6c757d;--bs-btn-active-border-color:#6c757d;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#6c757d;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#6c757d;--bs-gradient:none}.btn-outline-success{--bs-btn-color:#198754;--bs-btn-border-color:#198754;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#198754;--bs-btn-hover-border-color:#198754;--bs-btn-focus-shadow-rgb:25,135,84;--bs-btn-active-color:#fff;--bs-btn-active-bg:#198754;--bs-btn-active-border-color:#198754;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#198754;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#198754;--bs-gradient:none}.btn-outline-info{--bs-btn-color:#0dcaf0;--bs-btn-border-color:#0dcaf0;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#0dcaf0;--bs-btn-hover-border-color:#0dcaf0;--bs-btn-focus-shadow-rgb:13,202,240;--bs-btn-active-color:#000;--bs-btn-active-bg:#0dcaf0;--bs-btn-active-border-color:#0dcaf0;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#0dcaf0;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#0dcaf0;--bs-gradient:none}.btn-outline-warning{--bs-btn-color:#ffc107;--bs-btn-border-color:#ffc107;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#ffc107;--bs-btn-hover-border-color:#ffc107;--bs-btn-focus-shadow-rgb:255,193,7;--bs-btn-active-color:#000;--bs-btn-active-bg:#ffc107;--bs-btn-active-border-color:#ffc107;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#ffc107;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#ffc107;--bs-gradient:none}.btn-outline-danger{--bs-btn-color:#dc3545;--bs-btn-border-color:#dc3545;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#dc3545;--bs-btn-hover-border-color:#dc3545;--bs-btn-focus-shadow-rgb:220,53,69;--bs-btn-active-color:#fff;--bs-btn-active-bg:#dc3545;--bs-btn-active-border-color:#dc3545;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#dc3545;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#dc3545;--bs-gradient:none}.btn-outline-light{--bs-btn-color:#f8f9fa;--bs-btn-border-color:#f8f9fa;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#f8f9fa;--bs-btn-hover-border-color:#f8f9fa;--bs-btn-focus-shadow-rgb:248,249,250;--bs-btn-active-color:#000;--bs-btn-active-bg:#f8f9fa;--bs-btn-active-border-color:#f8f9fa;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#f8f9fa;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#f8f9fa;--bs-gradient:none}.btn-outline-dark{--bs-btn-color:#212529;--bs-btn-border-color:#212529;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#212529;--bs-btn-hover-border-color:#212529;--bs-btn-focus-shadow-rgb:33,37,41;--bs-btn-active-color:#fff;--bs-btn-active-bg:#212529;--bs-btn-active-border-color:#212529;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#212529;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#212529;--bs-gradient:none}.btn-link{--bs-btn-font-weight:400;--bs-btn-color:var(--bs-link-color);--bs-btn-bg:transparent;--bs-btn-border-color:transparent;--bs-btn-hover-color:var(--bs-link-hover-color);--bs-btn-hover-border-color:transparent;--bs-btn-active-color:var(--bs-link-hover-color);--bs-btn-active-border-color:transparent;--bs-btn-disabled-color:#6c757d;--bs-btn-disabled-border-color:transparent;--bs-btn-box-shadow:none;--bs-btn-focus-shadow-rgb:49,132,253;text-decoration:underline}.btn-link:focus-visible{color:var(--bs-btn-color)}.btn-link:hover{color:var(--bs-btn-hover-color)}.btn-group-lg>.btn,.btn-lg{--bs-btn-padding-y:0.5rem;--bs-btn-padding-x:1rem;--bs-btn-font-size:1.25rem;--bs-btn-border-radius:0.5rem}.btn-group-sm>.btn,.btn-sm{--bs-btn-padding-y:0.25rem;--bs-btn-padding-x:0.5rem;--bs-btn-font-size:0.875rem;--bs-btn-border-radius:0.25rem}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{width:0;height:auto;transition:width .35s ease}@media (prefers-reduced-motion:reduce){.collapsing.collapse-horizontal{transition:none}}.dropdown,.dropdown-center,.dropend,.dropstart,.dropup,.dropup-center{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{--bs-dropdown-zindex:1000;--bs-dropdown-min-width:10rem;--bs-dropdown-padding-x:0;--bs-dropdown-padding-y:0.5rem;--bs-dropdown-spacer:0.125rem;--bs-dropdown-font-size:1rem;--bs-dropdown-color:#212529;--bs-dropdown-bg:#fff;--bs-dropdown-border-color:var(--bs-border-color-translucent);--bs-dropdown-border-radius:0.375rem;--bs-dropdown-border-width:1px;--bs-dropdown-inner-border-radius:calc(0.375rem - 1px);--bs-dropdown-divider-bg:var(--bs-border-color-translucent);--bs-dropdown-divider-margin-y:0.5rem;--bs-dropdown-box-shadow:0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-dropdown-link-color:#212529;--bs-dropdown-link-hover-color:#1e2125;--bs-dropdown-link-hover-bg:#e9ecef;--bs-dropdown-link-active-color:#fff;--bs-dropdown-link-active-bg:#0d6efd;--bs-dropdown-link-disabled-color:#adb5bd;--bs-dropdown-item-padding-x:1rem;--bs-dropdown-item-padding-y:0.25rem;--bs-dropdown-header-color:#6c757d;--bs-dropdown-header-padding-x:1rem;--bs-dropdown-header-padding-y:0.5rem;position:absolute;z-index:var(--bs-dropdown-zindex);display:none;min-width:var(--bs-dropdown-min-width);padding:var(--bs-dropdown-padding-y) var(--bs-dropdown-padding-x);margin:0;font-size:var(--bs-dropdown-font-size);color:var(--bs-dropdown-color);text-align:left;list-style:none;background-color:var(--bs-dropdown-bg);background-clip:padding-box;border:var(--bs-dropdown-border-width) solid var(--bs-dropdown-border-color);border-radius:var(--bs-dropdown-border-radius)}.dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:var(--bs-dropdown-spacer)}.dropdown-menu-start{--bs-position:start}.dropdown-menu-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-end{--bs-position:end}.dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-start{--bs-position:start}.dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-sm-end{--bs-position:end}.dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-start{--bs-position:start}.dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-md-end{--bs-position:end}.dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-start{--bs-position:start}.dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-lg-end{--bs-position:end}.dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-start{--bs-position:start}.dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xl-end{--bs-position:end}.dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media (min-width:1400px){.dropdown-menu-xxl-start{--bs-position:start}.dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xxl-end{--bs-position:end}.dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:var(--bs-dropdown-spacer)}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:var(--bs-dropdown-spacer)}.dropend .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropend .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-toggle::after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:var(--bs-dropdown-spacer)}.dropstart .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropstart .dropdown-toggle::after{display:none}.dropstart .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropstart .dropdown-toggle:empty::after{margin-left:0}.dropstart .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:var(--bs-dropdown-divider-margin-y) 0;overflow:hidden;border-top:1px solid var(--bs-dropdown-divider-bg);opacity:1}.dropdown-item{display:block;width:100%;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);clear:both;font-weight:400;color:var(--bs-dropdown-link-color);text-align:inherit;text-decoration:none;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:var(--bs-dropdown-link-hover-color);background-color:var(--bs-dropdown-link-hover-bg)}.dropdown-item.active,.dropdown-item:active{color:var(--bs-dropdown-link-active-color);text-decoration:none;background-color:var(--bs-dropdown-link-active-bg)}.dropdown-item.disabled,.dropdown-item:disabled{color:var(--bs-dropdown-link-disabled-color);pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:var(--bs-dropdown-header-padding-y) var(--bs-dropdown-header-padding-x);margin-bottom:0;font-size:.875rem;color:var(--bs-dropdown-header-color);white-space:nowrap}.dropdown-item-text{display:block;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);color:var(--bs-dropdown-link-color)}.dropdown-menu-dark{--bs-dropdown-color:#dee2e6;--bs-dropdown-bg:#343a40;--bs-dropdown-border-color:var(--bs-border-color-translucent);--bs-dropdown-box-shadow: ;--bs-dropdown-link-color:#dee2e6;--bs-dropdown-link-hover-color:#fff;--bs-dropdown-divider-bg:var(--bs-border-color-translucent);--bs-dropdown-link-hover-bg:rgba(255, 255, 255, 0.15);--bs-dropdown-link-active-color:#fff;--bs-dropdown-link-active-bg:#0d6efd;--bs-dropdown-link-disabled-color:#adb5bd;--bs-dropdown-header-color:#adb5bd}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;flex:1 1 auto}.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group{border-radius:.375rem}.btn-group>.btn-group:not(:first-child),.btn-group>:not(.btn-check:first-child)+.btn{margin-left:-1px}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn.dropdown-toggle-split:first-child,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:nth-child(n+3),.btn-group>:not(.btn-check)+.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropend .dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after{margin-left:0}.dropstart .dropdown-toggle-split::before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn~.btn{border-top-left-radius:0;border-top-right-radius:0}.nav{--bs-nav-link-padding-x:1rem;--bs-nav-link-padding-y:0.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color:var(--bs-link-color);--bs-nav-link-hover-color:var(--bs-link-hover-color);--bs-nav-link-disabled-color:#6c757d;display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);font-size:var(--bs-nav-link-font-size);font-weight:var(--bs-nav-link-font-weight);color:var(--bs-nav-link-color);text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media (prefers-reduced-motion:reduce){.nav-link{transition:none}}.nav-link:focus,.nav-link:hover{color:var(--bs-nav-link-hover-color)}.nav-link.disabled{color:var(--bs-nav-link-disabled-color);pointer-events:none;cursor:default}.nav-tabs{--bs-nav-tabs-border-width:1px;--bs-nav-tabs-border-color:#dee2e6;--bs-nav-tabs-border-radius:0.375rem;--bs-nav-tabs-link-hover-border-color:#e9ecef #e9ecef #dee2e6;--bs-nav-tabs-link-active-color:#495057;--bs-nav-tabs-link-active-bg:#fff;--bs-nav-tabs-link-active-border-color:#dee2e6 #dee2e6 #fff;border-bottom:var(--bs-nav-tabs-border-width) solid var(--bs-nav-tabs-border-color)}.nav-tabs .nav-link{margin-bottom:calc(-1 * var(--bs-nav-tabs-border-width));background:0 0;border:var(--bs-nav-tabs-border-width) solid transparent;border-top-left-radius:var(--bs-nav-tabs-border-radius);border-top-right-radius:var(--bs-nav-tabs-border-radius)}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{isolation:isolate;border-color:var(--bs-nav-tabs-link-hover-border-color)}.nav-tabs .nav-link.disabled,.nav-tabs .nav-link:disabled{color:var(--bs-nav-link-disabled-color);background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:var(--bs-nav-tabs-link-active-color);background-color:var(--bs-nav-tabs-link-active-bg);border-color:var(--bs-nav-tabs-link-active-border-color)}.nav-tabs .dropdown-menu{margin-top:calc(-1 * var(--bs-nav-tabs-border-width));border-top-left-radius:0;border-top-right-radius:0}.nav-pills{--bs-nav-pills-border-radius:0.375rem;--bs-nav-pills-link-active-color:#fff;--bs-nav-pills-link-active-bg:#0d6efd}.nav-pills .nav-link{background:0 0;border:0;border-radius:var(--bs-nav-pills-border-radius)}.nav-pills .nav-link:disabled{color:var(--bs-nav-link-disabled-color);background-color:transparent;border-color:transparent}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:var(--bs-nav-pills-link-active-color);background-color:var(--bs-nav-pills-link-active-bg)}.nav-fill .nav-item,.nav-fill>.nav-link{flex:1 1 auto;text-align:center}.nav-justified .nav-item,.nav-justified>.nav-link{flex-basis:0;flex-grow:1;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{--bs-navbar-padding-x:0;--bs-navbar-padding-y:0.5rem;--bs-navbar-color:rgba(0, 0, 0, 0.55);--bs-navbar-hover-color:rgba(0, 0, 0, 0.7);--bs-navbar-disabled-color:rgba(0, 0, 0, 0.3);--bs-navbar-active-color:rgba(0, 0, 0, 0.9);--bs-navbar-brand-padding-y:0.3125rem;--bs-navbar-brand-margin-end:1rem;--bs-navbar-brand-font-size:1.25rem;--bs-navbar-brand-color:rgba(0, 0, 0, 0.9);--bs-navbar-brand-hover-color:rgba(0, 0, 0, 0.9);--bs-navbar-nav-link-padding-x:0.5rem;--bs-navbar-toggler-padding-y:0.25rem;--bs-navbar-toggler-padding-x:0.75rem;--bs-navbar-toggler-font-size:1.25rem;--bs-navbar-toggler-icon-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");--bs-navbar-toggler-border-color:rgba(0, 0, 0, 0.1);--bs-navbar-toggler-border-radius:0.375rem;--bs-navbar-toggler-focus-width:0.25rem;--bs-navbar-toggler-transition:box-shadow 0.15s ease-in-out;position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding:var(--bs-navbar-padding-y) var(--bs-navbar-padding-x)}.navbar>.container,.navbar>.container-fluid,.navbar>.container-lg,.navbar>.container-md,.navbar>.container-sm,.navbar>.container-xl,.navbar>.container-xxl{display:flex;flex-wrap:inherit;align-items:center;justify-content:space-between}.navbar-brand{padding-top:var(--bs-navbar-brand-padding-y);padding-bottom:var(--bs-navbar-brand-padding-y);margin-right:var(--bs-navbar-brand-margin-end);font-size:var(--bs-navbar-brand-font-size);color:var(--bs-navbar-brand-color);text-decoration:none;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{color:var(--bs-navbar-brand-hover-color)}.navbar-nav{--bs-nav-link-padding-x:0;--bs-nav-link-padding-y:0.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color:var(--bs-navbar-color);--bs-nav-link-hover-color:var(--bs-navbar-hover-color);--bs-nav-link-disabled-color:var(--bs-navbar-disabled-color);display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link.active,.navbar-nav .show>.nav-link{color:var(--bs-navbar-active-color)}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem;color:var(--bs-navbar-color)}.navbar-text a,.navbar-text a:focus,.navbar-text a:hover{color:var(--bs-navbar-active-color)}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:var(--bs-navbar-toggler-padding-y) var(--bs-navbar-toggler-padding-x);font-size:var(--bs-navbar-toggler-font-size);line-height:1;color:var(--bs-navbar-color);background-color:transparent;border:var(--bs-border-width) solid var(--bs-navbar-toggler-border-color);border-radius:var(--bs-navbar-toggler-border-radius);transition:var(--bs-navbar-toggler-transition)}@media (prefers-reduced-motion:reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 var(--bs-navbar-toggler-focus-width)}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-image:var(--bs-navbar-toggler-icon-bg);background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--bs-scroll-height,75vh);overflow-y:auto}@media (min-width:576px){.navbar-expand-sm{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-sm .offcanvas .offcanvas-header{display:none}.navbar-expand-sm .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:768px){.navbar-expand-md{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-md .offcanvas .offcanvas-header{display:none}.navbar-expand-md .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:992px){.navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-lg .offcanvas .offcanvas-header{display:none}.navbar-expand-lg .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:1200px){.navbar-expand-xl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-xl .offcanvas .offcanvas-header{display:none}.navbar-expand-xl .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:1400px){.navbar-expand-xxl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}.navbar-expand-xxl .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-xxl .offcanvas .offcanvas-header{display:none}.navbar-expand-xxl .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}.navbar-expand{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand .offcanvas .offcanvas-header{display:none}.navbar-expand .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}.navbar-dark{--bs-navbar-color:rgba(255, 255, 255, 0.55);--bs-navbar-hover-color:rgba(255, 255, 255, 0.75);--bs-navbar-disabled-color:rgba(255, 255, 255, 0.25);--bs-navbar-active-color:#fff;--bs-navbar-brand-color:#fff;--bs-navbar-brand-hover-color:#fff;--bs-navbar-toggler-border-color:rgba(255, 255, 255, 0.1);--bs-navbar-toggler-icon-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.card{--bs-card-spacer-y:1rem;--bs-card-spacer-x:1rem;--bs-card-title-spacer-y:0.5rem;--bs-card-border-width:1px;--bs-card-border-color:var(--bs-border-color-translucent);--bs-card-border-radius:0.375rem;--bs-card-box-shadow: ;--bs-card-inner-border-radius:calc(0.375rem - 1px);--bs-card-cap-padding-y:0.5rem;--bs-card-cap-padding-x:1rem;--bs-card-cap-bg:rgba(0, 0, 0, 0.03);--bs-card-cap-color: ;--bs-card-height: ;--bs-card-color: ;--bs-card-bg:#fff;--bs-card-img-overlay-padding:1rem;--bs-card-group-margin:0.75rem;position:relative;display:flex;flex-direction:column;min-width:0;height:var(--bs-card-height);word-wrap:break-word;background-color:var(--bs-card-bg);background-clip:border-box;border:var(--bs-card-border-width) solid var(--bs-card-border-color);border-radius:var(--bs-card-border-radius)}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;padding:var(--bs-card-spacer-y) var(--bs-card-spacer-x);color:var(--bs-card-color)}.card-title{margin-bottom:var(--bs-card-title-spacer-y)}.card-subtitle{margin-top:calc(-.5 * var(--bs-card-title-spacer-y));margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link+.card-link{margin-left:var(--bs-card-spacer-x)}.card-header{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);margin-bottom:0;color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-bottom:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-header:first-child{border-radius:var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius) 0 0}.card-footer{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-top:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-footer:last-child{border-radius:0 0 var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius)}.card-header-tabs{margin-right:calc(-.5 * var(--bs-card-cap-padding-x));margin-bottom:calc(-1 * var(--bs-card-cap-padding-y));margin-left:calc(-.5 * var(--bs-card-cap-padding-x));border-bottom:0}.card-header-tabs .nav-link.active{background-color:var(--bs-card-bg);border-bottom-color:var(--bs-card-bg)}.card-header-pills{margin-right:calc(-.5 * var(--bs-card-cap-padding-x));margin-left:calc(-.5 * var(--bs-card-cap-padding-x))}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:var(--bs-card-img-overlay-padding);border-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-bottom,.card-img-top{width:100%}.card-img,.card-img-top{border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-bottom{border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card-group>.card{margin-bottom:var(--bs-card-group-margin)}@media (min-width:576px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.accordion{--bs-accordion-color:#212529;--bs-accordion-bg:#fff;--bs-accordion-transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out,border-radius 0.15s ease;--bs-accordion-border-color:var(--bs-border-color);--bs-accordion-border-width:1px;--bs-accordion-border-radius:0.375rem;--bs-accordion-inner-border-radius:calc(0.375rem - 1px);--bs-accordion-btn-padding-x:1.25rem;--bs-accordion-btn-padding-y:1rem;--bs-accordion-btn-color:#212529;--bs-accordion-btn-bg:var(--bs-accordion-bg);--bs-accordion-btn-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-icon-width:1.25rem;--bs-accordion-btn-icon-transform:rotate(-180deg);--bs-accordion-btn-icon-transition:transform 0.2s ease-in-out;--bs-accordion-btn-active-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230c63e4'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-focus-border-color:#86b7fe;--bs-accordion-btn-focus-box-shadow:0 0 0 0.25rem rgba(13, 110, 253, 0.25);--bs-accordion-body-padding-x:1.25rem;--bs-accordion-body-padding-y:1rem;--bs-accordion-active-color:#0c63e4;--bs-accordion-active-bg:#e7f1ff}.accordion-button{position:relative;display:flex;align-items:center;width:100%;padding:var(--bs-accordion-btn-padding-y) var(--bs-accordion-btn-padding-x);font-size:1rem;color:var(--bs-accordion-btn-color);text-align:left;background-color:var(--bs-accordion-btn-bg);border:0;border-radius:0;overflow-anchor:none;transition:var(--bs-accordion-transition)}@media (prefers-reduced-motion:reduce){.accordion-button{transition:none}}.accordion-button:not(.collapsed){color:var(--bs-accordion-active-color);background-color:var(--bs-accordion-active-bg);box-shadow:inset 0 calc(-1 * var(--bs-accordion-border-width)) 0 var(--bs-accordion-border-color)}.accordion-button:not(.collapsed)::after{background-image:var(--bs-accordion-btn-active-icon);transform:var(--bs-accordion-btn-icon-transform)}.accordion-button::after{flex-shrink:0;width:var(--bs-accordion-btn-icon-width);height:var(--bs-accordion-btn-icon-width);margin-left:auto;content:"";background-image:var(--bs-accordion-btn-icon);background-repeat:no-repeat;background-size:var(--bs-accordion-btn-icon-width);transition:var(--bs-accordion-btn-icon-transition)}@media (prefers-reduced-motion:reduce){.accordion-button::after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;border-color:var(--bs-accordion-btn-focus-border-color);outline:0;box-shadow:var(--bs-accordion-btn-focus-box-shadow)}.accordion-header{margin-bottom:0}.accordion-item{color:var(--bs-accordion-color);background-color:var(--bs-accordion-bg);border:var(--bs-accordion-border-width) solid var(--bs-accordion-border-color)}.accordion-item:first-of-type{border-top-left-radius:var(--bs-accordion-border-radius);border-top-right-radius:var(--bs-accordion-border-radius)}.accordion-item:first-of-type .accordion-button{border-top-left-radius:var(--bs-accordion-inner-border-radius);border-top-right-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:not(:first-of-type){border-top:0}.accordion-item:last-of-type{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.accordion-item:last-of-type .accordion-button.collapsed{border-bottom-right-radius:var(--bs-accordion-inner-border-radius);border-bottom-left-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:last-of-type .accordion-collapse{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.accordion-body{padding:var(--bs-accordion-body-padding-y) var(--bs-accordion-body-padding-x)}.accordion-flush .accordion-collapse{border-width:0}.accordion-flush .accordion-item{border-right:0;border-left:0;border-radius:0}.accordion-flush .accordion-item:first-child{border-top:0}.accordion-flush .accordion-item:last-child{border-bottom:0}.accordion-flush .accordion-item .accordion-button,.accordion-flush .accordion-item .accordion-button.collapsed{border-radius:0}.breadcrumb{--bs-breadcrumb-padding-x:0;--bs-breadcrumb-padding-y:0;--bs-breadcrumb-margin-bottom:1rem;--bs-breadcrumb-bg: ;--bs-breadcrumb-border-radius: ;--bs-breadcrumb-divider-color:#6c757d;--bs-breadcrumb-item-padding-x:0.5rem;--bs-breadcrumb-item-active-color:#6c757d;display:flex;flex-wrap:wrap;padding:var(--bs-breadcrumb-padding-y) var(--bs-breadcrumb-padding-x);margin-bottom:var(--bs-breadcrumb-margin-bottom);font-size:var(--bs-breadcrumb-font-size);list-style:none;background-color:var(--bs-breadcrumb-bg);border-radius:var(--bs-breadcrumb-border-radius)}.breadcrumb-item+.breadcrumb-item{padding-left:var(--bs-breadcrumb-item-padding-x)}.breadcrumb-item+.breadcrumb-item::before{float:left;padding-right:var(--bs-breadcrumb-item-padding-x);color:var(--bs-breadcrumb-divider-color);content:var(--bs-breadcrumb-divider, "/")}.breadcrumb-item.active{color:var(--bs-breadcrumb-item-active-color)}.pagination{--bs-pagination-padding-x:0.75rem;--bs-pagination-padding-y:0.375rem;--bs-pagination-font-size:1rem;--bs-pagination-color:var(--bs-link-color);--bs-pagination-bg:#fff;--bs-pagination-border-width:1px;--bs-pagination-border-color:#dee2e6;--bs-pagination-border-radius:0.375rem;--bs-pagination-hover-color:var(--bs-link-hover-color);--bs-pagination-hover-bg:#e9ecef;--bs-pagination-hover-border-color:#dee2e6;--bs-pagination-focus-color:var(--bs-link-hover-color);--bs-pagination-focus-bg:#e9ecef;--bs-pagination-focus-box-shadow:0 0 0 0.25rem rgba(13, 110, 253, 0.25);--bs-pagination-active-color:#fff;--bs-pagination-active-bg:#0d6efd;--bs-pagination-active-border-color:#0d6efd;--bs-pagination-disabled-color:#6c757d;--bs-pagination-disabled-bg:#fff;--bs-pagination-disabled-border-color:#dee2e6;display:flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;padding:var(--bs-pagination-padding-y) var(--bs-pagination-padding-x);font-size:var(--bs-pagination-font-size);color:var(--bs-pagination-color);text-decoration:none;background-color:var(--bs-pagination-bg);border:var(--bs-pagination-border-width) solid var(--bs-pagination-border-color);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:var(--bs-pagination-hover-color);background-color:var(--bs-pagination-hover-bg);border-color:var(--bs-pagination-hover-border-color)}.page-link:focus{z-index:3;color:var(--bs-pagination-focus-color);background-color:var(--bs-pagination-focus-bg);outline:0;box-shadow:var(--bs-pagination-focus-box-shadow)}.active>.page-link,.page-link.active{z-index:3;color:var(--bs-pagination-active-color);background-color:var(--bs-pagination-active-bg);border-color:var(--bs-pagination-active-border-color)}.disabled>.page-link,.page-link.disabled{color:var(--bs-pagination-disabled-color);pointer-events:none;background-color:var(--bs-pagination-disabled-bg);border-color:var(--bs-pagination-disabled-border-color)}.page-item:not(:first-child) .page-link{margin-left:-1px}.page-item:first-child .page-link{border-top-left-radius:var(--bs-pagination-border-radius);border-bottom-left-radius:var(--bs-pagination-border-radius)}.page-item:last-child .page-link{border-top-right-radius:var(--bs-pagination-border-radius);border-bottom-right-radius:var(--bs-pagination-border-radius)}.pagination-lg{--bs-pagination-padding-x:1.5rem;--bs-pagination-padding-y:0.75rem;--bs-pagination-font-size:1.25rem;--bs-pagination-border-radius:0.5rem}.pagination-sm{--bs-pagination-padding-x:0.5rem;--bs-pagination-padding-y:0.25rem;--bs-pagination-font-size:0.875rem;--bs-pagination-border-radius:0.25rem}.badge{--bs-badge-padding-x:0.65em;--bs-badge-padding-y:0.35em;--bs-badge-font-size:0.75em;--bs-badge-font-weight:700;--bs-badge-color:#fff;--bs-badge-border-radius:0.375rem;display:inline-block;padding:var(--bs-badge-padding-y) var(--bs-badge-padding-x);font-size:var(--bs-badge-font-size);font-weight:var(--bs-badge-font-weight);line-height:1;color:var(--bs-badge-color);text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:var(--bs-badge-border-radius)}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.alert{--bs-alert-bg:transparent;--bs-alert-padding-x:1rem;--bs-alert-padding-y:1rem;--bs-alert-margin-bottom:1rem;--bs-alert-color:inherit;--bs-alert-border-color:transparent;--bs-alert-border:1px solid var(--bs-alert-border-color);--bs-alert-border-radius:0.375rem;position:relative;padding:var(--bs-alert-padding-y) var(--bs-alert-padding-x);margin-bottom:var(--bs-alert-margin-bottom);color:var(--bs-alert-color);background-color:var(--bs-alert-bg);border:var(--bs-alert-border);border-radius:var(--bs-alert-border-radius)}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:3rem}.alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:1.25rem 1rem}.alert-primary{--bs-alert-color:#084298;--bs-alert-bg:#cfe2ff;--bs-alert-border-color:#b6d4fe}.alert-primary .alert-link{color:#06357a}.alert-secondary{--bs-alert-color:#41464b;--bs-alert-bg:#e2e3e5;--bs-alert-border-color:#d3d6d8}.alert-secondary .alert-link{color:#34383c}.alert-success{--bs-alert-color:#0f5132;--bs-alert-bg:#d1e7dd;--bs-alert-border-color:#badbcc}.alert-success .alert-link{color:#0c4128}.alert-info{--bs-alert-color:#055160;--bs-alert-bg:#cff4fc;--bs-alert-border-color:#b6effb}.alert-info .alert-link{color:#04414d}.alert-warning{--bs-alert-color:#664d03;--bs-alert-bg:#fff3cd;--bs-alert-border-color:#ffecb5}.alert-warning .alert-link{color:#523e02}.alert-danger{--bs-alert-color:#842029;--bs-alert-bg:#f8d7da;--bs-alert-border-color:#f5c2c7}.alert-danger .alert-link{color:#6a1a21}.alert-light{--bs-alert-color:#636464;--bs-alert-bg:#fefefe;--bs-alert-border-color:#fdfdfe}.alert-light .alert-link{color:#4f5050}.alert-dark{--bs-alert-color:#141619;--bs-alert-bg:#d3d3d4;--bs-alert-border-color:#bcbebf}.alert-dark .alert-link{color:#101214}@keyframes progress-bar-stripes{0%{background-position-x:1rem}}.progress{--bs-progress-height:1rem;--bs-progress-font-size:0.75rem;--bs-progress-bg:#e9ecef;--bs-progress-border-radius:0.375rem;--bs-progress-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.075);--bs-progress-bar-color:#fff;--bs-progress-bar-bg:#0d6efd;--bs-progress-bar-transition:width 0.6s ease;display:flex;height:var(--bs-progress-height);overflow:hidden;font-size:var(--bs-progress-font-size);background-color:var(--bs-progress-bg);border-radius:var(--bs-progress-border-radius)}.progress-bar{display:flex;flex-direction:column;justify-content:center;overflow:hidden;color:var(--bs-progress-bar-color);text-align:center;white-space:nowrap;background-color:var(--bs-progress-bar-bg);transition:var(--bs-progress-bar-transition)}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:var(--bs-progress-height) var(--bs-progress-height)}.progress-bar-animated{animation:1s linear infinite progress-bar-stripes}@media (prefers-reduced-motion:reduce){.progress-bar-animated{animation:none}}.list-group{--bs-list-group-color:#212529;--bs-list-group-bg:#fff;--bs-list-group-border-color:rgba(0, 0, 0, 0.125);--bs-list-group-border-width:1px;--bs-list-group-border-radius:0.375rem;--bs-list-group-item-padding-x:1rem;--bs-list-group-item-padding-y:0.5rem;--bs-list-group-action-color:#495057;--bs-list-group-action-hover-color:#495057;--bs-list-group-action-hover-bg:#f8f9fa;--bs-list-group-action-active-color:#212529;--bs-list-group-action-active-bg:#e9ecef;--bs-list-group-disabled-color:#6c757d;--bs-list-group-disabled-bg:#fff;--bs-list-group-active-color:#fff;--bs-list-group-active-bg:#0d6efd;--bs-list-group-active-border-color:#0d6efd;display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:var(--bs-list-group-border-radius)}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>.list-group-item::before{content:counters(section, ".") ". ";counter-increment:section}.list-group-item-action{width:100%;color:var(--bs-list-group-action-color);text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:var(--bs-list-group-action-hover-color);text-decoration:none;background-color:var(--bs-list-group-action-hover-bg)}.list-group-item-action:active{color:var(--bs-list-group-action-active-color);background-color:var(--bs-list-group-action-active-bg)}.list-group-item{position:relative;display:block;padding:var(--bs-list-group-item-padding-y) var(--bs-list-group-item-padding-x);color:var(--bs-list-group-color);text-decoration:none;background-color:var(--bs-list-group-bg);border:var(--bs-list-group-border-width) solid var(--bs-list-group-border-color)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:var(--bs-list-group-disabled-color);pointer-events:none;background-color:var(--bs-list-group-disabled-bg)}.list-group-item.active{z-index:2;color:var(--bs-list-group-active-color);background-color:var(--bs-list-group-active-bg);border-color:var(--bs-list-group-active-border-color)}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:calc(-1 * var(--bs-list-group-border-width));border-top-width:var(--bs-list-group-border-width)}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}@media (min-width:576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width:768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width:992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width:1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width:1400px){.list-group-horizontal-xxl{flex-direction:row}.list-group-horizontal-xxl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 var(--bs-list-group-border-width)}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{color:#084298;background-color:#cfe2ff}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#084298;background-color:#bacbe6}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#084298;border-color:#084298}.list-group-item-secondary{color:#41464b;background-color:#e2e3e5}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#41464b;background-color:#cbccce}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#41464b;border-color:#41464b}.list-group-item-success{color:#0f5132;background-color:#d1e7dd}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#0f5132;background-color:#bcd0c7}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#0f5132;border-color:#0f5132}.list-group-item-info{color:#055160;background-color:#cff4fc}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#055160;background-color:#badce3}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#055160;border-color:#055160}.list-group-item-warning{color:#664d03;background-color:#fff3cd}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#664d03;background-color:#e6dbb9}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#664d03;border-color:#664d03}.list-group-item-danger{color:#842029;background-color:#f8d7da}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#842029;background-color:#dfc2c4}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#842029;border-color:#842029}.list-group-item-light{color:#636464;background-color:#fefefe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#636464;background-color:#e5e5e5}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#636464;border-color:#636464}.list-group-item-dark{color:#141619;background-color:#d3d3d4}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#141619;background-color:#bebebf}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#141619;border-color:#141619}.btn-close{box-sizing:content-box;width:1em;height:1em;padding:.25em .25em;color:#000;background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat;border:0;border-radius:.375rem;opacity:.5}.btn-close:hover{color:#000;text-decoration:none;opacity:.75}.btn-close:focus{outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25);opacity:1}.btn-close.disabled,.btn-close:disabled{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;opacity:.25}.btn-close-white{filter:invert(1) grayscale(100%) brightness(200%)}.toast{--bs-toast-zindex:1090;--bs-toast-padding-x:0.75rem;--bs-toast-padding-y:0.5rem;--bs-toast-spacing:1.5rem;--bs-toast-max-width:350px;--bs-toast-font-size:0.875rem;--bs-toast-color: ;--bs-toast-bg:rgba(255, 255, 255, 0.85);--bs-toast-border-width:1px;--bs-toast-border-color:var(--bs-border-color-translucent);--bs-toast-border-radius:0.375rem;--bs-toast-box-shadow:0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-toast-header-color:#6c757d;--bs-toast-header-bg:rgba(255, 255, 255, 0.85);--bs-toast-header-border-color:rgba(0, 0, 0, 0.05);width:var(--bs-toast-max-width);max-width:100%;font-size:var(--bs-toast-font-size);color:var(--bs-toast-color);pointer-events:auto;background-color:var(--bs-toast-bg);background-clip:padding-box;border:var(--bs-toast-border-width) solid var(--bs-toast-border-color);box-shadow:var(--bs-toast-box-shadow);border-radius:var(--bs-toast-border-radius)}.toast.showing{opacity:0}.toast:not(.show){display:none}.toast-container{--bs-toast-zindex:1090;position:absolute;z-index:var(--bs-toast-zindex);width:-webkit-max-content;width:-moz-max-content;width:max-content;max-width:100%;pointer-events:none}.toast-container>:not(:last-child){margin-bottom:var(--bs-toast-spacing)}.toast-header{display:flex;align-items:center;padding:var(--bs-toast-padding-y) var(--bs-toast-padding-x);color:var(--bs-toast-header-color);background-color:var(--bs-toast-header-bg);background-clip:padding-box;border-bottom:var(--bs-toast-border-width) solid var(--bs-toast-header-border-color);border-top-left-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width));border-top-right-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width))}.toast-header .btn-close{margin-right:calc(-.5 * var(--bs-toast-padding-x));margin-left:var(--bs-toast-padding-x)}.toast-body{padding:var(--bs-toast-padding-x);word-wrap:break-word}.modal{--bs-modal-zindex:1055;--bs-modal-width:500px;--bs-modal-padding:1rem;--bs-modal-margin:0.5rem;--bs-modal-color: ;--bs-modal-bg:#fff;--bs-modal-border-color:var(--bs-border-color-translucent);--bs-modal-border-width:1px;--bs-modal-border-radius:0.5rem;--bs-modal-box-shadow:0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--bs-modal-inner-border-radius:calc(0.5rem - 1px);--bs-modal-header-padding-x:1rem;--bs-modal-header-padding-y:1rem;--bs-modal-header-padding:1rem 1rem;--bs-modal-header-border-color:var(--bs-border-color);--bs-modal-header-border-width:1px;--bs-modal-title-line-height:1.5;--bs-modal-footer-gap:0.5rem;--bs-modal-footer-bg: ;--bs-modal-footer-border-color:var(--bs-border-color);--bs-modal-footer-border-width:1px;position:fixed;top:0;left:0;z-index:var(--bs-modal-zindex);display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}.modal-dialog{position:relative;width:auto;margin:var(--bs-modal-margin);pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translate(0,-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - var(--bs-modal-margin) * 2)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - var(--bs-modal-margin) * 2)}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;color:var(--bs-modal-color);pointer-events:auto;background-color:var(--bs-modal-bg);background-clip:padding-box;border:var(--bs-modal-border-width) solid var(--bs-modal-border-color);border-radius:var(--bs-modal-border-radius);outline:0}.modal-backdrop{--bs-backdrop-zindex:1050;--bs-backdrop-bg:#000;--bs-backdrop-opacity:0.5;position:fixed;top:0;left:0;z-index:var(--bs-backdrop-zindex);width:100vw;height:100vh;background-color:var(--bs-backdrop-bg)}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:var(--bs-backdrop-opacity)}.modal-header{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;padding:var(--bs-modal-header-padding);border-bottom:var(--bs-modal-header-border-width) solid var(--bs-modal-header-border-color);border-top-left-radius:var(--bs-modal-inner-border-radius);border-top-right-radius:var(--bs-modal-inner-border-radius)}.modal-header .btn-close{padding:calc(var(--bs-modal-header-padding-y) * .5) calc(var(--bs-modal-header-padding-x) * .5);margin:calc(-.5 * var(--bs-modal-header-padding-y)) calc(-.5 * var(--bs-modal-header-padding-x)) calc(-.5 * var(--bs-modal-header-padding-y)) auto}.modal-title{margin-bottom:0;line-height:var(--bs-modal-title-line-height)}.modal-body{position:relative;flex:1 1 auto;padding:var(--bs-modal-padding)}.modal-footer{display:flex;flex-shrink:0;flex-wrap:wrap;align-items:center;justify-content:flex-end;padding:calc(var(--bs-modal-padding) - var(--bs-modal-footer-gap) * .5);background-color:var(--bs-modal-footer-bg);border-top:var(--bs-modal-footer-border-width) solid var(--bs-modal-footer-border-color);border-bottom-right-radius:var(--bs-modal-inner-border-radius);border-bottom-left-radius:var(--bs-modal-inner-border-radius)}.modal-footer>*{margin:calc(var(--bs-modal-footer-gap) * .5)}@media (min-width:576px){.modal{--bs-modal-margin:1.75rem;--bs-modal-box-shadow:0 0.5rem 1rem rgba(0, 0, 0, 0.15)}.modal-dialog{max-width:var(--bs-modal-width);margin-right:auto;margin-left:auto}.modal-sm{--bs-modal-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{--bs-modal-width:800px}}@media (min-width:1200px){.modal-xl{--bs-modal-width:1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen .modal-footer,.modal-fullscreen .modal-header{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}@media (max-width:575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-sm-down .modal-footer,.modal-fullscreen-sm-down .modal-header{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}}@media (max-width:767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-md-down .modal-footer,.modal-fullscreen-md-down .modal-header{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}}@media (max-width:991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-lg-down .modal-footer,.modal-fullscreen-lg-down .modal-header{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}}@media (max-width:1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xl-down .modal-footer,.modal-fullscreen-xl-down .modal-header{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}}@media (max-width:1399.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xxl-down .modal-footer,.modal-fullscreen-xxl-down .modal-header{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}}.tooltip{--bs-tooltip-zindex:1080;--bs-tooltip-max-width:200px;--bs-tooltip-padding-x:0.5rem;--bs-tooltip-padding-y:0.25rem;--bs-tooltip-margin: ;--bs-tooltip-font-size:0.875rem;--bs-tooltip-color:#fff;--bs-tooltip-bg:#000;--bs-tooltip-border-radius:0.375rem;--bs-tooltip-opacity:0.9;--bs-tooltip-arrow-width:0.8rem;--bs-tooltip-arrow-height:0.4rem;z-index:var(--bs-tooltip-zindex);display:block;padding:var(--bs-tooltip-arrow-height);margin:var(--bs-tooltip-margin);font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-tooltip-font-size);word-wrap:break-word;opacity:0}.tooltip.show{opacity:var(--bs-tooltip-opacity)}.tooltip .tooltip-arrow{display:block;width:var(--bs-tooltip-arrow-width);height:var(--bs-tooltip-arrow-height)}.tooltip .tooltip-arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow,.bs-tooltip-top .tooltip-arrow{bottom:0}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before,.bs-tooltip-top .tooltip-arrow::before{top:-1px;border-width:var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * .5) 0;border-top-color:var(--bs-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow,.bs-tooltip-end .tooltip-arrow{left:0;width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before,.bs-tooltip-end .tooltip-arrow::before{right:-1px;border-width:calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * .5) 0;border-right-color:var(--bs-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow,.bs-tooltip-bottom .tooltip-arrow{top:0}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before,.bs-tooltip-bottom .tooltip-arrow::before{bottom:-1px;border-width:0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height);border-bottom-color:var(--bs-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow,.bs-tooltip-start .tooltip-arrow{right:0;width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before,.bs-tooltip-start .tooltip-arrow::before{left:-1px;border-width:calc(var(--bs-tooltip-arrow-width) * .5) 0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height);border-left-color:var(--bs-tooltip-bg)}.tooltip-inner{max-width:var(--bs-tooltip-max-width);padding:var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x);color:var(--bs-tooltip-color);text-align:center;background-color:var(--bs-tooltip-bg);border-radius:var(--bs-tooltip-border-radius)}.popover{--bs-popover-zindex:1070;--bs-popover-max-width:276px;--bs-popover-font-size:0.875rem;--bs-popover-bg:#fff;--bs-popover-border-width:1px;--bs-popover-border-color:var(--bs-border-color-translucent);--bs-popover-border-radius:0.5rem;--bs-popover-inner-border-radius:calc(0.5rem - 1px);--bs-popover-box-shadow:0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-popover-header-padding-x:1rem;--bs-popover-header-padding-y:0.5rem;--bs-popover-header-font-size:1rem;--bs-popover-header-color: ;--bs-popover-header-bg:#f0f0f0;--bs-popover-body-padding-x:1rem;--bs-popover-body-padding-y:1rem;--bs-popover-body-color:#212529;--bs-popover-arrow-width:1rem;--bs-popover-arrow-height:0.5rem;--bs-popover-arrow-border:var(--bs-popover-border-color);z-index:var(--bs-popover-zindex);display:block;max-width:var(--bs-popover-max-width);font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-popover-font-size);word-wrap:break-word;background-color:var(--bs-popover-bg);background-clip:padding-box;border:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-radius:var(--bs-popover-border-radius)}.popover .popover-arrow{display:block;width:var(--bs-popover-arrow-width);height:var(--bs-popover-arrow-height)}.popover .popover-arrow::after,.popover .popover-arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid;border-width:0}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow,.bs-popover-top>.popover-arrow{bottom:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before,.bs-popover-top>.popover-arrow::after,.bs-popover-top>.popover-arrow::before{border-width:var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * .5) 0}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before,.bs-popover-top>.popover-arrow::before{bottom:0;border-top-color:var(--bs-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after,.bs-popover-top>.popover-arrow::after{bottom:var(--bs-popover-border-width);border-top-color:var(--bs-popover-bg)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow,.bs-popover-end>.popover-arrow{left:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before,.bs-popover-end>.popover-arrow::after,.bs-popover-end>.popover-arrow::before{border-width:calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * .5) 0}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before,.bs-popover-end>.popover-arrow::before{left:0;border-right-color:var(--bs-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after,.bs-popover-end>.popover-arrow::after{left:var(--bs-popover-border-width);border-right-color:var(--bs-popover-bg)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow,.bs-popover-bottom>.popover-arrow{top:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before,.bs-popover-bottom>.popover-arrow::after,.bs-popover-bottom>.popover-arrow::before{border-width:0 calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before,.bs-popover-bottom>.popover-arrow::before{top:0;border-bottom-color:var(--bs-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after,.bs-popover-bottom>.popover-arrow::after{top:var(--bs-popover-border-width);border-bottom-color:var(--bs-popover-bg)}.bs-popover-auto[data-popper-placement^=bottom] .popover-header::before,.bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:var(--bs-popover-arrow-width);margin-left:calc(-.5 * var(--bs-popover-arrow-width));content:"";border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-header-bg)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow,.bs-popover-start>.popover-arrow{right:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before,.bs-popover-start>.popover-arrow::after,.bs-popover-start>.popover-arrow::before{border-width:calc(var(--bs-popover-arrow-width) * .5) 0 calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before,.bs-popover-start>.popover-arrow::before{right:0;border-left-color:var(--bs-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after,.bs-popover-start>.popover-arrow::after{right:var(--bs-popover-border-width);border-left-color:var(--bs-popover-bg)}.popover-header{padding:var(--bs-popover-header-padding-y) var(--bs-popover-header-padding-x);margin-bottom:0;font-size:var(--bs-popover-header-font-size);color:var(--bs-popover-header-color);background-color:var(--bs-popover-header-bg);border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-top-left-radius:var(--bs-popover-inner-border-radius);border-top-right-radius:var(--bs-popover-inner-border-radius)}.popover-header:empty{display:none}.popover-body{padding:var(--bs-popover-body-padding-y) var(--bs-popover-body-padding-x);color:var(--bs-popover-body-color)}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-end,.carousel-item-next:not(.carousel-item-start){transform:translateX(100%)}.active.carousel-item-start,.carousel-item-prev:not(.carousel-item-end){transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:0 0;border:0;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%;list-style:none}.carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}.carousel-dark .carousel-control-next-icon,.carousel-dark .carousel-control-prev-icon{filter:invert(1) grayscale(100)}.carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}.carousel-dark .carousel-caption{color:#000}.spinner-border,.spinner-grow{display:inline-block;width:var(--bs-spinner-width);height:var(--bs-spinner-height);vertical-align:var(--bs-spinner-vertical-align);border-radius:50%;animation:var(--bs-spinner-animation-speed) linear infinite var(--bs-spinner-animation-name)}@keyframes spinner-border{to{transform:rotate(360deg)}}.spinner-border{--bs-spinner-width:2rem;--bs-spinner-height:2rem;--bs-spinner-vertical-align:-0.125em;--bs-spinner-border-width:0.25em;--bs-spinner-animation-speed:0.75s;--bs-spinner-animation-name:spinner-border;border:var(--bs-spinner-border-width) solid currentcolor;border-right-color:transparent}.spinner-border-sm{--bs-spinner-width:1rem;--bs-spinner-height:1rem;--bs-spinner-border-width:0.2em}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{--bs-spinner-width:2rem;--bs-spinner-height:2rem;--bs-spinner-vertical-align:-0.125em;--bs-spinner-animation-speed:0.75s;--bs-spinner-animation-name:spinner-grow;background-color:currentcolor;opacity:0}.spinner-grow-sm{--bs-spinner-width:1rem;--bs-spinner-height:1rem}@media (prefers-reduced-motion:reduce){.spinner-border,.spinner-grow{--bs-spinner-animation-speed:1.5s}}.offcanvas,.offcanvas-lg,.offcanvas-md,.offcanvas-sm,.offcanvas-xl,.offcanvas-xxl{--bs-offcanvas-zindex:1045;--bs-offcanvas-width:400px;--bs-offcanvas-height:30vh;--bs-offcanvas-padding-x:1rem;--bs-offcanvas-padding-y:1rem;--bs-offcanvas-color: ;--bs-offcanvas-bg:#fff;--bs-offcanvas-border-width:1px;--bs-offcanvas-border-color:var(--bs-border-color-translucent);--bs-offcanvas-box-shadow:0 0.125rem 0.25rem rgba(0, 0, 0, 0.075)}@media (max-width:575.98px){.offcanvas-sm{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:transform .3s ease-in-out}}@media (max-width:575.98px) and (prefers-reduced-motion:reduce){.offcanvas-sm{transition:none}}@media (max-width:575.98px){.offcanvas-sm.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}}@media (max-width:575.98px){.offcanvas-sm.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}}@media (max-width:575.98px){.offcanvas-sm.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}}@media (max-width:575.98px){.offcanvas-sm.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}}@media (max-width:575.98px){.offcanvas-sm.show:not(.hiding),.offcanvas-sm.showing{transform:none}}@media (max-width:575.98px){.offcanvas-sm.hiding,.offcanvas-sm.show,.offcanvas-sm.showing{visibility:visible}}@media (min-width:576px){.offcanvas-sm{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-sm .offcanvas-header{display:none}.offcanvas-sm .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:767.98px){.offcanvas-md{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:transform .3s ease-in-out}}@media (max-width:767.98px) and (prefers-reduced-motion:reduce){.offcanvas-md{transition:none}}@media (max-width:767.98px){.offcanvas-md.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}}@media (max-width:767.98px){.offcanvas-md.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}}@media (max-width:767.98px){.offcanvas-md.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}}@media (max-width:767.98px){.offcanvas-md.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}}@media (max-width:767.98px){.offcanvas-md.show:not(.hiding),.offcanvas-md.showing{transform:none}}@media (max-width:767.98px){.offcanvas-md.hiding,.offcanvas-md.show,.offcanvas-md.showing{visibility:visible}}@media (min-width:768px){.offcanvas-md{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-md .offcanvas-header{display:none}.offcanvas-md .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:991.98px){.offcanvas-lg{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:transform .3s ease-in-out}}@media (max-width:991.98px) and (prefers-reduced-motion:reduce){.offcanvas-lg{transition:none}}@media (max-width:991.98px){.offcanvas-lg.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}}@media (max-width:991.98px){.offcanvas-lg.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}}@media (max-width:991.98px){.offcanvas-lg.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}}@media (max-width:991.98px){.offcanvas-lg.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}}@media (max-width:991.98px){.offcanvas-lg.show:not(.hiding),.offcanvas-lg.showing{transform:none}}@media (max-width:991.98px){.offcanvas-lg.hiding,.offcanvas-lg.show,.offcanvas-lg.showing{visibility:visible}}@media (min-width:992px){.offcanvas-lg{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-lg .offcanvas-header{display:none}.offcanvas-lg .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:1199.98px){.offcanvas-xl{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:transform .3s ease-in-out}}@media (max-width:1199.98px) and (prefers-reduced-motion:reduce){.offcanvas-xl{transition:none}}@media (max-width:1199.98px){.offcanvas-xl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}}@media (max-width:1199.98px){.offcanvas-xl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}}@media (max-width:1199.98px){.offcanvas-xl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}}@media (max-width:1199.98px){.offcanvas-xl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}}@media (max-width:1199.98px){.offcanvas-xl.show:not(.hiding),.offcanvas-xl.showing{transform:none}}@media (max-width:1199.98px){.offcanvas-xl.hiding,.offcanvas-xl.show,.offcanvas-xl.showing{visibility:visible}}@media (min-width:1200px){.offcanvas-xl{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-xl .offcanvas-header{display:none}.offcanvas-xl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:1399.98px){.offcanvas-xxl{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:transform .3s ease-in-out}}@media (max-width:1399.98px) and (prefers-reduced-motion:reduce){.offcanvas-xxl{transition:none}}@media (max-width:1399.98px){.offcanvas-xxl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}}@media (max-width:1399.98px){.offcanvas-xxl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}}@media (max-width:1399.98px){.offcanvas-xxl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}}@media (max-width:1399.98px){.offcanvas-xxl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}}@media (max-width:1399.98px){.offcanvas-xxl.show:not(.hiding),.offcanvas-xxl.showing{transform:none}}@media (max-width:1399.98px){.offcanvas-xxl.hiding,.offcanvas-xxl.show,.offcanvas-xxl.showing{visibility:visible}}@media (min-width:1400px){.offcanvas-xxl{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-xxl .offcanvas-header{display:none}.offcanvas-xxl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}.offcanvas{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:transform .3s ease-in-out}@media (prefers-reduced-motion:reduce){.offcanvas{transition:none}}.offcanvas.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas.show:not(.hiding),.offcanvas.showing{transform:none}.offcanvas.hiding,.offcanvas.show,.offcanvas.showing{visibility:visible}.offcanvas-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.offcanvas-backdrop.fade{opacity:0}.offcanvas-backdrop.show{opacity:.5}.offcanvas-header{display:flex;align-items:center;justify-content:space-between;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x)}.offcanvas-header .btn-close{padding:calc(var(--bs-offcanvas-padding-y) * .5) calc(var(--bs-offcanvas-padding-x) * .5);margin-top:calc(-.5 * var(--bs-offcanvas-padding-y));margin-right:calc(-.5 * var(--bs-offcanvas-padding-x));margin-bottom:calc(-.5 * var(--bs-offcanvas-padding-y))}.offcanvas-title{margin-bottom:0;line-height:1.5}.offcanvas-body{flex-grow:1;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x);overflow-y:auto}.placeholder{display:inline-block;min-height:1em;vertical-align:middle;cursor:wait;background-color:currentcolor;opacity:.5}.placeholder.btn::before{display:inline-block;content:""}.placeholder-xs{min-height:.6em}.placeholder-sm{min-height:.8em}.placeholder-lg{min-height:1.2em}.placeholder-glow .placeholder{animation:placeholder-glow 2s ease-in-out infinite}@keyframes placeholder-glow{50%{opacity:.2}}.placeholder-wave{-webkit-mask-image:linear-gradient(130deg,#000 55%,rgba(0,0,0,0.8) 75%,#000 95%);mask-image:linear-gradient(130deg,#000 55%,rgba(0,0,0,0.8) 75%,#000 95%);-webkit-mask-size:200% 100%;mask-size:200% 100%;animation:placeholder-wave 2s linear infinite}@keyframes placeholder-wave{100%{-webkit-mask-position:-200% 0%;mask-position:-200% 0%}}.clearfix::after{display:block;clear:both;content:""}.text-bg-primary{color:#fff!important;background-color:RGBA(13,110,253,var(--bs-bg-opacity,1))!important}.text-bg-secondary{color:#fff!important;background-color:RGBA(108,117,125,var(--bs-bg-opacity,1))!important}.text-bg-success{color:#fff!important;background-color:RGBA(25,135,84,var(--bs-bg-opacity,1))!important}.text-bg-info{color:#000!important;background-color:RGBA(13,202,240,var(--bs-bg-opacity,1))!important}.text-bg-warning{color:#000!important;background-color:RGBA(255,193,7,var(--bs-bg-opacity,1))!important}.text-bg-danger{color:#fff!important;background-color:RGBA(220,53,69,var(--bs-bg-opacity,1))!important}.text-bg-light{color:#000!important;background-color:RGBA(248,249,250,var(--bs-bg-opacity,1))!important}.text-bg-dark{color:#fff!important;background-color:RGBA(33,37,41,var(--bs-bg-opacity,1))!important}.link-primary{color:#0d6efd!important}.link-primary:focus,.link-primary:hover{color:#0a58ca!important}.link-secondary{color:#6c757d!important}.link-secondary:focus,.link-secondary:hover{color:#565e64!important}.link-success{color:#198754!important}.link-success:focus,.link-success:hover{color:#146c43!important}.link-info{color:#0dcaf0!important}.link-info:focus,.link-info:hover{color:#3dd5f3!important}.link-warning{color:#ffc107!important}.link-warning:focus,.link-warning:hover{color:#ffcd39!important}.link-danger{color:#dc3545!important}.link-danger:focus,.link-danger:hover{color:#b02a37!important}.link-light{color:#f8f9fa!important}.link-light:focus,.link-light:hover{color:#f9fafb!important}.link-dark{color:#212529!important}.link-dark:focus,.link-dark:hover{color:#1a1e21!important}.ratio{position:relative;width:100%}.ratio::before{display:block;padding-top:var(--bs-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-1x1{--bs-aspect-ratio:100%}.ratio-4x3{--bs-aspect-ratio:75%}.ratio-16x9{--bs-aspect-ratio:56.25%}.ratio-21x9{--bs-aspect-ratio:42.8571428571%}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}@media (min-width:576px){.sticky-sm-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-sm-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media (min-width:768px){.sticky-md-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-md-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media (min-width:992px){.sticky-lg-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-lg-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media (min-width:1200px){.sticky-xl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-xl-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media (min-width:1400px){.sticky-xxl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-xxl-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}.hstack{display:flex;flex-direction:row;align-items:center;align-self:stretch}.vstack{display:flex;flex:1 1 auto;flex-direction:column;align-self:stretch}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vr{display:inline-block;align-self:stretch;width:1px;min-height:1em;background-color:currentcolor;opacity:.25}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.float-start{float:left!important}.float-end{float:right!important}.float-none{float:none!important}.opacity-0{opacity:0!important}.opacity-25{opacity:.25!important}.opacity-50{opacity:.5!important}.opacity-75{opacity:.75!important}.opacity-100{opacity:1!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.overflow-visible{overflow:visible!important}.overflow-scroll{overflow:scroll!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{box-shadow:none!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.top-0{top:0!important}.top-50{top:50%!important}.top-100{top:100%!important}.bottom-0{bottom:0!important}.bottom-50{bottom:50%!important}.bottom-100{bottom:100%!important}.start-0{left:0!important}.start-50{left:50%!important}.start-100{left:100%!important}.end-0{right:0!important}.end-50{right:50%!important}.end-100{right:100%!important}.translate-middle{transform:translate(-50%,-50%)!important}.translate-middle-x{transform:translateX(-50%)!important}.translate-middle-y{transform:translateY(-50%)!important}.border{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-0{border:0!important}.border-top{border-top:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-top-0{border-top:0!important}.border-end{border-right:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-end-0{border-right:0!important}.border-bottom{border-bottom:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-bottom-0{border-bottom:0!important}.border-start{border-left:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-start-0{border-left:0!important}.border-primary{--bs-border-opacity:1;border-color:rgba(var(--bs-primary-rgb),var(--bs-border-opacity))!important}.border-secondary{--bs-border-opacity:1;border-color:rgba(var(--bs-secondary-rgb),var(--bs-border-opacity))!important}.border-success{--bs-border-opacity:1;border-color:rgba(var(--bs-success-rgb),var(--bs-border-opacity))!important}.border-info{--bs-border-opacity:1;border-color:rgba(var(--bs-info-rgb),var(--bs-border-opacity))!important}.border-warning{--bs-border-opacity:1;border-color:rgba(var(--bs-warning-rgb),var(--bs-border-opacity))!important}.border-danger{--bs-border-opacity:1;border-color:rgba(var(--bs-danger-rgb),var(--bs-border-opacity))!important}.border-light{--bs-border-opacity:1;border-color:rgba(var(--bs-light-rgb),var(--bs-border-opacity))!important}.border-dark{--bs-border-opacity:1;border-color:rgba(var(--bs-dark-rgb),var(--bs-border-opacity))!important}.border-white{--bs-border-opacity:1;border-color:rgba(var(--bs-white-rgb),var(--bs-border-opacity))!important}.border-1{--bs-border-width:1px}.border-2{--bs-border-width:2px}.border-3{--bs-border-width:3px}.border-4{--bs-border-width:4px}.border-5{--bs-border-width:5px}.border-opacity-10{--bs-border-opacity:0.1}.border-opacity-25{--bs-border-opacity:0.25}.border-opacity-50{--bs-border-opacity:0.5}.border-opacity-75{--bs-border-opacity:0.75}.border-opacity-100{--bs-border-opacity:1}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.mw-100{max-width:100%!important}.vw-100{width:100vw!important}.min-vw-100{min-width:100vw!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mh-100{max-height:100%!important}.vh-100{height:100vh!important}.min-vh-100{min-height:100vh!important}.flex-fill{flex:1 1 auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:3rem!important}.m-auto{margin:auto!important}.mx-0{margin-right:0!important;margin-left:0!important}.mx-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-3{margin-right:1rem!important;margin-left:1rem!important}.mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-5{margin-right:3rem!important;margin-left:3rem!important}.mx-auto{margin-right:auto!important;margin-left:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-right:0!important}.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-3{margin-right:1rem!important}.me-4{margin-right:1.5rem!important}.me-5{margin-right:3rem!important}.me-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-left:0!important}.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-3{margin-left:1rem!important}.ms-4{margin-left:1.5rem!important}.ms-5{margin-left:3rem!important}.ms-auto{margin-left:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:3rem!important}.px-0{padding-right:0!important;padding-left:0!important}.px-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-3{padding-right:1rem!important;padding-left:1rem!important}.px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-5{padding-right:3rem!important;padding-left:3rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:3rem!important}.pe-0{padding-right:0!important}.pe-1{padding-right:.25rem!important}.pe-2{padding-right:.5rem!important}.pe-3{padding-right:1rem!important}.pe-4{padding-right:1.5rem!important}.pe-5{padding-right:3rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:3rem!important}.ps-0{padding-left:0!important}.ps-1{padding-left:.25rem!important}.ps-2{padding-left:.5rem!important}.ps-3{padding-left:1rem!important}.ps-4{padding-left:1.5rem!important}.ps-5{padding-left:3rem!important}.gap-0{gap:0!important}.gap-1{gap:.25rem!important}.gap-2{gap:.5rem!important}.gap-3{gap:1rem!important}.gap-4{gap:1.5rem!important}.gap-5{gap:3rem!important}.font-monospace{font-family:var(--bs-font-monospace)!important}.fs-1{font-size:calc(1.375rem + 1.5vw)!important}.fs-2{font-size:calc(1.325rem + .9vw)!important}.fs-3{font-size:calc(1.3rem + .6vw)!important}.fs-4{font-size:calc(1.275rem + .3vw)!important}.fs-5{font-size:1.25rem!important}.fs-6{font-size:1rem!important}.fst-italic{font-style:italic!important}.fst-normal{font-style:normal!important}.fw-light{font-weight:300!important}.fw-lighter{font-weight:lighter!important}.fw-normal{font-weight:400!important}.fw-bold{font-weight:700!important}.fw-semibold{font-weight:600!important}.fw-bolder{font-weight:bolder!important}.lh-1{line-height:1!important}.lh-sm{line-height:1.25!important}.lh-base{line-height:1.5!important}.lh-lg{line-height:2!important}.text-start{text-align:left!important}.text-end{text-align:right!important}.text-center{text-align:center!important}.text-decoration-none{text-decoration:none!important}.text-decoration-underline{text-decoration:underline!important}.text-decoration-line-through{text-decoration:line-through!important}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-break{word-wrap:break-word!important;word-break:break-word!important}.text-primary{--bs-text-opacity:1;color:rgba(var(--bs-primary-rgb),var(--bs-text-opacity))!important}.text-secondary{--bs-text-opacity:1;color:rgba(var(--bs-secondary-rgb),var(--bs-text-opacity))!important}.text-success{--bs-text-opacity:1;color:rgba(var(--bs-success-rgb),var(--bs-text-opacity))!important}.text-info{--bs-text-opacity:1;color:rgba(var(--bs-info-rgb),var(--bs-text-opacity))!important}.text-warning{--bs-text-opacity:1;color:rgba(var(--bs-warning-rgb),var(--bs-text-opacity))!important}.text-danger{--bs-text-opacity:1;color:rgba(var(--bs-danger-rgb),var(--bs-text-opacity))!important}.text-light{--bs-text-opacity:1;color:rgba(var(--bs-light-rgb),var(--bs-text-opacity))!important}.text-dark{--bs-text-opacity:1;color:rgba(var(--bs-dark-rgb),var(--bs-text-opacity))!important}.text-black{--bs-text-opacity:1;color:rgba(var(--bs-black-rgb),var(--bs-text-opacity))!important}.text-white{--bs-text-opacity:1;color:rgba(var(--bs-white-rgb),var(--bs-text-opacity))!important}.text-body{--bs-text-opacity:1;color:rgba(var(--bs-body-color-rgb),var(--bs-text-opacity))!important}.text-muted{--bs-text-opacity:1;color:#6c757d!important}.text-black-50{--bs-text-opacity:1;color:rgba(0,0,0,.5)!important}.text-white-50{--bs-text-opacity:1;color:rgba(255,255,255,.5)!important}.text-reset{--bs-text-opacity:1;color:inherit!important}.text-opacity-25{--bs-text-opacity:0.25}.text-opacity-50{--bs-text-opacity:0.5}.text-opacity-75{--bs-text-opacity:0.75}.text-opacity-100{--bs-text-opacity:1}.bg-primary{--bs-bg-opacity:1;background-color:rgba(var(--bs-primary-rgb),var(--bs-bg-opacity))!important}.bg-secondary{--bs-bg-opacity:1;background-color:rgba(var(--bs-secondary-rgb),var(--bs-bg-opacity))!important}.bg-success{--bs-bg-opacity:1;background-color:rgba(var(--bs-success-rgb),var(--bs-bg-opacity))!important}.bg-info{--bs-bg-opacity:1;background-color:rgba(var(--bs-info-rgb),var(--bs-bg-opacity))!important}.bg-warning{--bs-bg-opacity:1;background-color:rgba(var(--bs-warning-rgb),var(--bs-bg-opacity))!important}.bg-danger{--bs-bg-opacity:1;background-color:rgba(var(--bs-danger-rgb),var(--bs-bg-opacity))!important}.bg-light{--bs-bg-opacity:1;background-color:rgba(var(--bs-light-rgb),var(--bs-bg-opacity))!important}.bg-dark{--bs-bg-opacity:1;background-color:rgba(var(--bs-dark-rgb),var(--bs-bg-opacity))!important}.bg-black{--bs-bg-opacity:1;background-color:rgba(var(--bs-black-rgb),var(--bs-bg-opacity))!important}.bg-white{--bs-bg-opacity:1;background-color:rgba(var(--bs-white-rgb),var(--bs-bg-opacity))!important}.bg-body{--bs-bg-opacity:1;background-color:rgba(var(--bs-body-bg-rgb),var(--bs-bg-opacity))!important}.bg-transparent{--bs-bg-opacity:1;background-color:transparent!important}.bg-opacity-10{--bs-bg-opacity:0.1}.bg-opacity-25{--bs-bg-opacity:0.25}.bg-opacity-50{--bs-bg-opacity:0.5}.bg-opacity-75{--bs-bg-opacity:0.75}.bg-opacity-100{--bs-bg-opacity:1}.bg-gradient{background-image:var(--bs-gradient)!important}.user-select-all{-webkit-user-select:all!important;-moz-user-select:all!important;user-select:all!important}.user-select-auto{-webkit-user-select:auto!important;-moz-user-select:auto!important;user-select:auto!important}.user-select-none{-webkit-user-select:none!important;-moz-user-select:none!important;user-select:none!important}.pe-none{pointer-events:none!important}.pe-auto{pointer-events:auto!important}.rounded{border-radius:var(--bs-border-radius)!important}.rounded-0{border-radius:0!important}.rounded-1{border-radius:var(--bs-border-radius-sm)!important}.rounded-2{border-radius:var(--bs-border-radius)!important}.rounded-3{border-radius:var(--bs-border-radius-lg)!important}.rounded-4{border-radius:var(--bs-border-radius-xl)!important}.rounded-5{border-radius:var(--bs-border-radius-2xl)!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:var(--bs-border-radius-pill)!important}.rounded-top{border-top-left-radius:var(--bs-border-radius)!important;border-top-right-radius:var(--bs-border-radius)!important}.rounded-end{border-top-right-radius:var(--bs-border-radius)!important;border-bottom-right-radius:var(--bs-border-radius)!important}.rounded-bottom{border-bottom-right-radius:var(--bs-border-radius)!important;border-bottom-left-radius:var(--bs-border-radius)!important}.rounded-start{border-bottom-left-radius:var(--bs-border-radius)!important;border-top-left-radius:var(--bs-border-radius)!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media (min-width:576px){.float-sm-start{float:left!important}.float-sm-end{float:right!important}.float-sm-none{float:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:3rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-right:0!important;margin-left:0!important}.mx-sm-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-sm-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-sm-3{margin-right:1rem!important;margin-left:1rem!important}.mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-sm-5{margin-right:3rem!important;margin-left:3rem!important}.mx-sm-auto{margin-right:auto!important;margin-left:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:3rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-right:0!important}.me-sm-1{margin-right:.25rem!important}.me-sm-2{margin-right:.5rem!important}.me-sm-3{margin-right:1rem!important}.me-sm-4{margin-right:1.5rem!important}.me-sm-5{margin-right:3rem!important}.me-sm-auto{margin-right:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:3rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-left:0!important}.ms-sm-1{margin-left:.25rem!important}.ms-sm-2{margin-left:.5rem!important}.ms-sm-3{margin-left:1rem!important}.ms-sm-4{margin-left:1.5rem!important}.ms-sm-5{margin-left:3rem!important}.ms-sm-auto{margin-left:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:3rem!important}.px-sm-0{padding-right:0!important;padding-left:0!important}.px-sm-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-sm-3{padding-right:1rem!important;padding-left:1rem!important}.px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-sm-5{padding-right:3rem!important;padding-left:3rem!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:3rem!important}.pe-sm-0{padding-right:0!important}.pe-sm-1{padding-right:.25rem!important}.pe-sm-2{padding-right:.5rem!important}.pe-sm-3{padding-right:1rem!important}.pe-sm-4{padding-right:1.5rem!important}.pe-sm-5{padding-right:3rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:3rem!important}.ps-sm-0{padding-left:0!important}.ps-sm-1{padding-left:.25rem!important}.ps-sm-2{padding-left:.5rem!important}.ps-sm-3{padding-left:1rem!important}.ps-sm-4{padding-left:1.5rem!important}.ps-sm-5{padding-left:3rem!important}.gap-sm-0{gap:0!important}.gap-sm-1{gap:.25rem!important}.gap-sm-2{gap:.5rem!important}.gap-sm-3{gap:1rem!important}.gap-sm-4{gap:1.5rem!important}.gap-sm-5{gap:3rem!important}.text-sm-start{text-align:left!important}.text-sm-end{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.float-md-start{float:left!important}.float-md-end{float:right!important}.float-md-none{float:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:3rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-right:0!important;margin-left:0!important}.mx-md-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-md-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-md-3{margin-right:1rem!important;margin-left:1rem!important}.mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-md-5{margin-right:3rem!important;margin-left:3rem!important}.mx-md-auto{margin-right:auto!important;margin-left:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:3rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-right:0!important}.me-md-1{margin-right:.25rem!important}.me-md-2{margin-right:.5rem!important}.me-md-3{margin-right:1rem!important}.me-md-4{margin-right:1.5rem!important}.me-md-5{margin-right:3rem!important}.me-md-auto{margin-right:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:3rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-left:0!important}.ms-md-1{margin-left:.25rem!important}.ms-md-2{margin-left:.5rem!important}.ms-md-3{margin-left:1rem!important}.ms-md-4{margin-left:1.5rem!important}.ms-md-5{margin-left:3rem!important}.ms-md-auto{margin-left:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:3rem!important}.px-md-0{padding-right:0!important;padding-left:0!important}.px-md-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-md-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-md-3{padding-right:1rem!important;padding-left:1rem!important}.px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-md-5{padding-right:3rem!important;padding-left:3rem!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:3rem!important}.pe-md-0{padding-right:0!important}.pe-md-1{padding-right:.25rem!important}.pe-md-2{padding-right:.5rem!important}.pe-md-3{padding-right:1rem!important}.pe-md-4{padding-right:1.5rem!important}.pe-md-5{padding-right:3rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:3rem!important}.ps-md-0{padding-left:0!important}.ps-md-1{padding-left:.25rem!important}.ps-md-2{padding-left:.5rem!important}.ps-md-3{padding-left:1rem!important}.ps-md-4{padding-left:1.5rem!important}.ps-md-5{padding-left:3rem!important}.gap-md-0{gap:0!important}.gap-md-1{gap:.25rem!important}.gap-md-2{gap:.5rem!important}.gap-md-3{gap:1rem!important}.gap-md-4{gap:1.5rem!important}.gap-md-5{gap:3rem!important}.text-md-start{text-align:left!important}.text-md-end{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.float-lg-start{float:left!important}.float-lg-end{float:right!important}.float-lg-none{float:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:3rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-right:0!important;margin-left:0!important}.mx-lg-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-lg-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-lg-3{margin-right:1rem!important;margin-left:1rem!important}.mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-lg-5{margin-right:3rem!important;margin-left:3rem!important}.mx-lg-auto{margin-right:auto!important;margin-left:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:3rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-right:0!important}.me-lg-1{margin-right:.25rem!important}.me-lg-2{margin-right:.5rem!important}.me-lg-3{margin-right:1rem!important}.me-lg-4{margin-right:1.5rem!important}.me-lg-5{margin-right:3rem!important}.me-lg-auto{margin-right:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:3rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-left:0!important}.ms-lg-1{margin-left:.25rem!important}.ms-lg-2{margin-left:.5rem!important}.ms-lg-3{margin-left:1rem!important}.ms-lg-4{margin-left:1.5rem!important}.ms-lg-5{margin-left:3rem!important}.ms-lg-auto{margin-left:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:3rem!important}.px-lg-0{padding-right:0!important;padding-left:0!important}.px-lg-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-lg-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-lg-3{padding-right:1rem!important;padding-left:1rem!important}.px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-lg-5{padding-right:3rem!important;padding-left:3rem!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:3rem!important}.pe-lg-0{padding-right:0!important}.pe-lg-1{padding-right:.25rem!important}.pe-lg-2{padding-right:.5rem!important}.pe-lg-3{padding-right:1rem!important}.pe-lg-4{padding-right:1.5rem!important}.pe-lg-5{padding-right:3rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:3rem!important}.ps-lg-0{padding-left:0!important}.ps-lg-1{padding-left:.25rem!important}.ps-lg-2{padding-left:.5rem!important}.ps-lg-3{padding-left:1rem!important}.ps-lg-4{padding-left:1.5rem!important}.ps-lg-5{padding-left:3rem!important}.gap-lg-0{gap:0!important}.gap-lg-1{gap:.25rem!important}.gap-lg-2{gap:.5rem!important}.gap-lg-3{gap:1rem!important}.gap-lg-4{gap:1.5rem!important}.gap-lg-5{gap:3rem!important}.text-lg-start{text-align:left!important}.text-lg-end{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.float-xl-start{float:left!important}.float-xl-end{float:right!important}.float-xl-none{float:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:3rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-right:0!important;margin-left:0!important}.mx-xl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xl-auto{margin-right:auto!important;margin-left:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:3rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-right:0!important}.me-xl-1{margin-right:.25rem!important}.me-xl-2{margin-right:.5rem!important}.me-xl-3{margin-right:1rem!important}.me-xl-4{margin-right:1.5rem!important}.me-xl-5{margin-right:3rem!important}.me-xl-auto{margin-right:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:3rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-left:0!important}.ms-xl-1{margin-left:.25rem!important}.ms-xl-2{margin-left:.5rem!important}.ms-xl-3{margin-left:1rem!important}.ms-xl-4{margin-left:1.5rem!important}.ms-xl-5{margin-left:3rem!important}.ms-xl-auto{margin-left:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:3rem!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:3rem!important}.pe-xl-0{padding-right:0!important}.pe-xl-1{padding-right:.25rem!important}.pe-xl-2{padding-right:.5rem!important}.pe-xl-3{padding-right:1rem!important}.pe-xl-4{padding-right:1.5rem!important}.pe-xl-5{padding-right:3rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:3rem!important}.ps-xl-0{padding-left:0!important}.ps-xl-1{padding-left:.25rem!important}.ps-xl-2{padding-left:.5rem!important}.ps-xl-3{padding-left:1rem!important}.ps-xl-4{padding-left:1.5rem!important}.ps-xl-5{padding-left:3rem!important}.gap-xl-0{gap:0!important}.gap-xl-1{gap:.25rem!important}.gap-xl-2{gap:.5rem!important}.gap-xl-3{gap:1rem!important}.gap-xl-4{gap:1.5rem!important}.gap-xl-5{gap:3rem!important}.text-xl-start{text-align:left!important}.text-xl-end{text-align:right!important}.text-xl-center{text-align:center!important}}@media (min-width:1400px){.float-xxl-start{float:left!important}.float-xxl-end{float:right!important}.float-xxl-none{float:none!important}.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.flex-xxl-fill{flex:1 1 auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:3rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-right:0!important;margin-left:0!important}.mx-xxl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xxl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xxl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xxl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xxl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xxl-auto{margin-right:auto!important;margin-left:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:3rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-right:0!important}.me-xxl-1{margin-right:.25rem!important}.me-xxl-2{margin-right:.5rem!important}.me-xxl-3{margin-right:1rem!important}.me-xxl-4{margin-right:1.5rem!important}.me-xxl-5{margin-right:3rem!important}.me-xxl-auto{margin-right:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:3rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-left:0!important}.ms-xxl-1{margin-left:.25rem!important}.ms-xxl-2{margin-left:.5rem!important}.ms-xxl-3{margin-left:1rem!important}.ms-xxl-4{margin-left:1.5rem!important}.ms-xxl-5{margin-left:3rem!important}.ms-xxl-auto{margin-left:auto!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:3rem!important}.px-xxl-0{padding-right:0!important;padding-left:0!important}.px-xxl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xxl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xxl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xxl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xxl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:3rem!important}.pe-xxl-0{padding-right:0!important}.pe-xxl-1{padding-right:.25rem!important}.pe-xxl-2{padding-right:.5rem!important}.pe-xxl-3{padding-right:1rem!important}.pe-xxl-4{padding-right:1.5rem!important}.pe-xxl-5{padding-right:3rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:3rem!important}.ps-xxl-0{padding-left:0!important}.ps-xxl-1{padding-left:.25rem!important}.ps-xxl-2{padding-left:.5rem!important}.ps-xxl-3{padding-left:1rem!important}.ps-xxl-4{padding-left:1.5rem!important}.ps-xxl-5{padding-left:3rem!important}.gap-xxl-0{gap:0!important}.gap-xxl-1{gap:.25rem!important}.gap-xxl-2{gap:.5rem!important}.gap-xxl-3{gap:1rem!important}.gap-xxl-4{gap:1.5rem!important}.gap-xxl-5{gap:3rem!important}.text-xxl-start{text-align:left!important}.text-xxl-end{text-align:right!important}.text-xxl-center{text-align:center!important}}@media (min-width:1200px){.fs-1{font-size:2.5rem!important}.fs-2{font-size:2rem!important}.fs-3{font-size:1.75rem!important}.fs-4{font-size:1.5rem!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.d-print-none{display:none!important}}
/*# sourceMappingURL=bootstrap.min.css.map */
/* Wrapping element */
/* Set some basic padding to keep content from hitting the edges */
.body-content {
    margin-top: 15px;
    padding-left: 15px;
    padding-right: 15px;
}

/* Set widths on the form inputs since otherwise they're 100% wide */
input,
select,
textarea {
    max-width: 280px;
}

/* Keep action labels intact. Responsive action containers wrap whole buttons. */
.btn {
    flex-shrink: 0;
    white-space: nowrap;
    word-break: keep-all;
    overflow-wrap: normal;
}

/* Responsive: Portrait tablets and up */
@media screen and (min-width: 768px) {
    .body-content {
        padding: 0;
    }
}

:root {
    --font-body: "BIZ UDPGothic", "Noto Sans JP", -apple-system, BlinkMacSystemFont, "Segoe UI", "Hiragino Kaku Gothic ProN", "Yu Gothic UI", "Yu Gothic", "Meiryo", sans-serif;
    --font-head: "BIZ UDPGothic", "Noto Sans JP", -apple-system, BlinkMacSystemFont, "Segoe UI", "Hiragino Kaku Gothic ProN", "Yu Gothic UI", "Yu Gothic", "Meiryo", sans-serif;
    --ink-900: #1b2434;
    --ink-800: #253249;
    --ink-700: #334155;
    --ink-600: #475569;
    --muted-500: #64748b;
    --surface-0: #ffffff;
    --surface-1: #f8fafc;
    --surface-2: #eef2f7;
    --line-200: #e2e8f0;
    --line-300: #cbd5e1;
    --brand-600: #2a5bd7;
    --brand-500: #3b72f0;
    --brand-400: #6b94f6;
    --accent-500: #12a3a6;
    --danger-500: #d14949;
    --shadow-soft: 0 22px 50px rgba(15, 23, 42, 0.12);
    --shadow-card: 0 14px 30px rgba(15, 23, 42, 0.08);
    --radius-lg: 20px;
    --radius-md: 14px;
    --radius-sm: 10px;
    --ease-out-expo: cubic-bezier(0.16, 1, 0.3, 1);
    --ease-out-quart: cubic-bezier(0.25, 1, 0.5, 1);
}

*,
*::before,
*::after {
    box-sizing: border-box;
}

body.app-body {
    margin: 0;
    min-height: 100vh;
    font-family: var(--font-body);
    color: var(--ink-900);
    background:
        radial-gradient(circle at 12% 18%, rgba(42, 91, 215, 0.08), transparent 45%),
        radial-gradient(circle at 86% 10%, rgba(18, 163, 166, 0.1), transparent 40%),
        linear-gradient(180deg, #f8fafc 0%, #eef2f7 100%);
    line-height: 1.6;
    overflow-x: hidden;
}

body.app-body::before,
body.app-body::after {
    content: "";
    position: fixed;
    pointer-events: none;
    z-index: 0;
    width: 520px;
    height: 520px;
    border-radius: 50%;
    opacity: 0.6;
    filter: blur(0.5px);
}

body.app-body::before {
    top: -220px;
    right: -140px;
    background: radial-gradient(circle at 30% 30%, rgba(59, 114, 240, 0.26), rgba(59, 114, 240, 0) 70%);
}

body.app-body::after {
    bottom: -260px;
    left: -180px;
    background: radial-gradient(circle at 70% 70%, rgba(18, 163, 166, 0.22), rgba(18, 163, 166, 0) 70%);
}

h1,
h2,
h3,
h4,
h5 {
    font-family: var(--font-head);
    font-weight: 600;
    color: var(--ink-800);
    margin: 0 0 8px;
    letter-spacing: 0.02em;
}

p {
    margin: 0 0 12px;
}

a {
    color: var(--brand-600);
    text-decoration: none;
    transition: color 180ms ease;
}

a:hover {
    color: var(--accent-500);
}

input,
select,
textarea {
    max-width: 100%;
    font-family: var(--font-body);
}

.app-header,
.app-shell,
.login-shell {
    position: relative;
    z-index: 1;
}

.app-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 12px 20px;
    gap: 14px;
    background: rgba(255, 255, 255, 0.92);
    backdrop-filter: blur(14px);
    border-bottom: 1px solid var(--line-200);
    box-shadow: 0 8px 24px rgba(15, 23, 42, 0.08);
    position: sticky;
    top: 0;
    z-index: 70;
}

.app-header::after {
    content: "";
    position: absolute;
    left: 20px;
    right: 20px;
    bottom: 0;
    height: 2px;
    border-radius: 999px;
    background: linear-gradient(90deg, rgba(42, 91, 215, 0.7), rgba(18, 163, 166, 0.5));
}

.app-brand {
    display: flex;
    align-items: center;
    gap: 12px;
    min-width: 0;
}

.app-brand a {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    min-width: 0;
    color: var(--ink-900);
    font-size: 20px;
    font-weight: 600;
    letter-spacing: 0.08em;
    line-height: 1;
}

.app-brand-link {
    text-decoration: none;
}

.app-brand-logo {
    width: 34px;
    height: 34px;
    object-fit: contain;
    border-radius: 8px;
    flex: 0 0 auto;
}

.app-brand-text {
    display: inline-block;
    white-space: nowrap;
}

.app-page-title {
    display: inline-flex;
    align-items: baseline;
    gap: 8px;
    padding-left: 14px;
    margin-left: 2px;
    border-left: 1px solid rgba(148, 163, 184, 0.6);
    font-size: 14px;
    font-weight: 700;
    color: var(--ink-700);
    letter-spacing: 0.03em;
    max-width: min(44vw, 520px);
    min-width: 0;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}


.app-actions {
    display: flex;
    align-items: center;
    gap: 12px;
    flex-shrink: 0;
}

.app-notification {
    position: relative;
}

.app-notification-btn {
    display: inline-grid;
    place-items: center;
    width: 42px;
    height: 42px;
    border-radius: 14px;
    border: 1px solid rgba(42, 91, 215, 0.22);
    background: rgba(255, 255, 255, 0.7);
    color: var(--ink-800);
    cursor: pointer;
    text-decoration: none;
    transition: transform 180ms ease, background 180ms ease, border-color 180ms ease, box-shadow 180ms ease;
}

.app-notification-btn:hover,
.app-notification-btn:focus {
    background: rgba(42, 91, 215, 0.08);
    border-color: rgba(42, 91, 215, 0.36);
    transform: translateY(-1px);
}

.app-notification-btn:focus-visible {
    outline: none;
    box-shadow: 0 0 0 3px rgba(59, 114, 240, 0.22);
}

.app-notification-icon {
    width: 22px;
    height: 22px;
}

.app-notification-badge {
    position: absolute;
    top: -4px;
    right: -4px;
    min-width: 18px;
    height: 18px;
    padding: 0 5px;
    border-radius: 10px;
    background: #dc2626;
    color: #fff;
    font-size: 11px;
    font-weight: 700;
    line-height: 18px;
    text-align: center;
    box-shadow: 0 4px 12px rgba(220, 38, 38, 0.35);
}

.app-notification-panel {
    position: absolute;
    top: calc(100% + 10px);
    right: 0;
    width: min(360px, calc(100vw - 24px));
    max-height: min(440px, 70vh);
    overflow: auto;
    padding: 10px;
    background: rgba(255, 255, 255, 0.97);
    border: 1px solid rgba(203, 213, 225, 0.75);
    border-radius: 18px;
    box-shadow: 0 18px 36px rgba(15, 23, 42, 0.16);
    backdrop-filter: blur(10px);
    z-index: 95;
}

.app-notification-head {
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 0.08em;
    color: var(--muted-500);
    text-transform: uppercase;
    padding: 4px 6px 8px;
}

.app-notification-item {
    border: 1px solid rgba(203, 213, 225, 0.65);
    border-radius: 12px;
    margin-bottom: 8px;
    background: #fff;
    overflow: hidden;
}

.app-notification-item:last-child {
    margin-bottom: 0;
}

.app-notification-item.is-unread {
    border-color: rgba(37, 99, 235, 0.4);
    background: rgba(239, 246, 255, 0.9);
}

.app-notification-link {
    display: block;
    padding: 8px 10px;
    color: inherit;
    text-decoration: none;
}

.app-notification-link:hover {
    text-decoration: none;
    background: rgba(248, 250, 252, 0.7);
}

.app-notification-link:focus-visible {
    outline: 2px solid rgba(37, 99, 235, 0.45);
    outline-offset: -2px;
}

.app-notification-title {
    font-size: 13px;
    font-weight: 700;
    color: var(--ink-900);
}

.app-notification-body {
    margin-top: 4px;
    max-height: 7em;
    overflow: hidden;
    color: var(--ink-700);
    font-size: 12px;
    line-height: 1.45;
    overflow-wrap: anywhere;
    white-space: pre-line;
}

.app-notification-meta {
    margin-top: 4px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    font-size: 11px;
    color: var(--muted-500);
}

.app-notification-severity {
    display: inline-flex;
    align-items: center;
    padding: 2px 6px;
    border-radius: 999px;
    border: 1px solid rgba(148, 163, 184, 0.6);
    background: rgba(248, 250, 252, 0.95);
    color: var(--ink-700);
}

.app-notification-empty {
    padding: 10px;
    color: var(--muted-500);
    font-size: 12px;
}

.app-user {
    position: relative;
}

.app-user-btn {
    display: inline-grid;
    place-items: center;
    width: 42px;
    height: 42px;
    border-radius: 14px;
    border: 1px solid rgba(42, 91, 215, 0.22);
    background: rgba(255, 255, 255, 0.7);
    color: var(--ink-800);
    cursor: pointer;
    transition: transform 180ms ease, background 180ms ease, border-color 180ms ease, box-shadow 180ms ease;
}

.app-user-btn:hover,
.app-user-btn:focus {
    background: rgba(42, 91, 215, 0.08);
    border-color: rgba(42, 91, 215, 0.36);
    transform: translateY(-1px);
}

.app-user-btn:focus-visible {
    outline: none;
    box-shadow: 0 0 0 3px rgba(59, 114, 240, 0.22);
}

.app-user-btn-icon {
    width: 22px;
    height: 22px;
}

.app-user-menu {
    position: absolute;
    top: calc(100% + 10px);
    right: 0;
    width: min(320px, calc(100vw - 24px));
    padding: 12px;
    background: rgba(255, 255, 255, 0.95);
    border: 1px solid rgba(203, 213, 225, 0.75);
    border-radius: 18px;
    box-shadow: 0 18px 36px rgba(15, 23, 42, 0.16);
    backdrop-filter: blur(10px);
    z-index: 90;
}

.app-user-menu-grid {
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.app-user-menu-item {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 14px;
}

.app-user-menu-k {
    font-size: 11px;
    letter-spacing: 0.08em;
    color: var(--muted-500);
    white-space: nowrap;
}

.app-user-menu-v {
    font-size: 13px;
    font-weight: 700;
    color: var(--ink-800);
    max-width: 220px;
    min-width: 0;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    text-align: right;
}

.app-user-menu-select {
    font: inherit;
    color: inherit;
    background: rgba(255, 255, 255, 0.95);
    border: 1px solid rgba(203, 213, 225, 0.9);
    border-radius: 12px;
    padding: 6px 10px;
    line-height: 1.2;
    width: 120px;
    max-width: 100%;
}

.app-user-menu-select:focus {
    outline: none;
}

.app-user-menu-select:focus-visible {
    outline: none;
    box-shadow: 0 0 0 3px rgba(59, 114, 240, 0.22);
}

.app-user-menu-sep {
    height: 1px;
    background: rgba(203, 213, 225, 0.7);
    margin: 12px 0;
}

.app-user-menu-logout {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    padding: 10px 12px;
    border-radius: 14px;
    border: 1px solid rgba(42, 91, 215, 0.35);
    background: rgba(42, 91, 215, 0.08);
    color: var(--brand-600);
    font-weight: 700;
    text-decoration: none;
    transition: transform 180ms ease, background 180ms ease, border-color 180ms ease, color 180ms ease, box-shadow 180ms ease;
}

.app-user-menu-logout:hover,
.app-user-menu-logout:focus {
    background: rgba(42, 91, 215, 0.12);
    border-color: rgba(42, 91, 215, 0.45);
    color: var(--brand-600);
    transform: translateY(-1px);
}

.app-user-menu-logout:focus-visible {
    outline: none;
    box-shadow: 0 0 0 3px rgba(59, 114, 240, 0.22);
}

body.app-body:not(.dashboard-home) .app-brand a {
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 0.12em;
    color: var(--muted-500);
}

body.app-body:not(.dashboard-home) .app-page-title {
    font-size: 20px;
    color: var(--ink-900);
}

.app-nav-toggle {
    display: inline-grid;
    place-items: center;
    width: 42px;
    height: 42px;
    border-radius: 14px;
    border: 1px solid rgba(42, 91, 215, 0.22);
    background: rgba(255, 255, 255, 0.7);
    color: var(--ink-800);
    cursor: pointer;
    transition: transform 180ms ease, background 180ms ease, border-color 180ms ease, box-shadow 180ms ease;
}

.app-nav-toggle:hover,
.app-nav-toggle:focus {
    background: rgba(42, 91, 215, 0.08);
    border-color: rgba(42, 91, 215, 0.36);
    transform: translateY(-1px);
}

.app-nav-toggle:focus-visible {
    outline: none;
    box-shadow: 0 0 0 3px rgba(59, 114, 240, 0.22);
}

.app-nav-toggle-icon {
    width: 22px;
    height: 22px;
}

.app-meta {
    display: flex;
    gap: 12px;
    align-items: center;
    font-size: 12px;
    flex-wrap: wrap;
}

.app-meta-item {
    background: var(--surface-1);
    border: 1px solid var(--line-200);
    padding: 5px 12px;
    border-radius: 999px;
    letter-spacing: 0.03em;
    color: var(--ink-700);
}

.app-home {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    color: var(--ink-700);
    font-weight: 700;
    padding: 6px 12px;
    border-radius: 999px;
    border: 1px solid var(--line-200);
    background: rgba(255, 255, 255, 0.85);
    transition: transform 180ms ease, background 180ms ease, border-color 180ms ease, color 180ms ease, box-shadow 180ms ease;
}

.app-home:hover,
.app-home:focus {
    background: rgba(42, 91, 215, 0.08);
    border-color: rgba(42, 91, 215, 0.25);
    color: var(--brand-600);
    transform: translateY(-1px);
}

.app-home:focus-visible {
    outline: none;
    box-shadow: 0 0 0 3px rgba(59, 114, 240, 0.22);
}

.app-logout {
    color: var(--brand-600);
    font-weight: 600;
    padding: 6px 12px;
    border-radius: 999px;
    border: 1px solid rgba(42, 91, 215, 0.35);
    background: rgba(42, 91, 215, 0.08);
}

.app-shell {
    display: flex;
    align-items: flex-start;
    gap: 24px;
    padding: 20px 24px 32px;
    min-height: calc(100vh - 72px);
    max-width: 1480px;
    margin: 0;
    transition: padding-left 260ms var(--ease-out-quart);
}

.app-sidebar {
    width: min(280px, calc(100vw - 48px));
    background: var(--surface-0);
    padding: 18px 14px;
    border-radius: var(--radius-lg);
    border: 1px solid var(--line-200);
    box-shadow: var(--shadow-card);
    position: fixed;
    top: 92px;
    left: 24px;
    bottom: 24px;
    overflow-y: auto;
    transform: translateX(calc(-100% - 40px));
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    z-index: 50;
    transition: transform 260ms var(--ease-out-quart), opacity 200ms ease, visibility 0s linear 260ms;
}

body.nav-open {
    overflow: hidden;
}

body.nav-open .app-sidebar {
    transform: translateX(0);
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
    transition: transform 260ms var(--ease-out-quart), opacity 200ms ease, visibility 0s;
}

.app-nav-backdrop {
    position: fixed;
    inset: 0;
    background: rgba(255, 255, 255, 0.02);
    backdrop-filter: blur(2px) saturate(1.03);
    -webkit-backdrop-filter: blur(2px) saturate(1.03);
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    z-index: 40;
    border: none;
    padding: 0;
    margin: 0;
    cursor: pointer;
    transition: opacity 200ms ease, visibility 0s linear 200ms;
}

body.nav-open .app-nav-backdrop {
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
    transition: opacity 200ms ease, visibility 0s;
}

@media (min-width: 1101px) {
    body.nav-open {
        overflow: auto;
    }

    body.nav-open:not(.nav-pinned) .app-shell {
        padding-left: 328px;
    }

    body.nav-open:not(.nav-pinned) .app-nav-backdrop {
        display: none;
    }

    body.nav-pinned {
        overflow: auto;
    }

    body.nav-pinned .app-sidebar {
        position: sticky;
        top: 92px;
        left: auto;
        bottom: auto;
        flex: 0 0 280px;
        width: 280px;
        max-height: calc(100vh - 92px - 24px);
        transform: none;
        opacity: 1;
        visibility: visible;
        pointer-events: auto;
        transition: none;
        z-index: 20;
    }

    body.nav-pinned .app-nav-backdrop {
        display: none;
    }
}

.app-sidebar-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    padding: 6px 6px 10px;
    margin: -6px -6px 8px;
    border-bottom: 1px solid var(--line-200);
}

.app-sidebar-head-title {
    font-weight: 700;
    font-size: 13px;
    letter-spacing: 0.1em;
    color: var(--ink-700);
}

.app-sidebar-actions {
    display: inline-flex;
    align-items: center;
    gap: 10px;
}

.app-sidebar-pin {
    display: inline-grid;
    place-items: center;
    width: 40px;
    height: 40px;
    border-radius: 12px;
    border: 1px solid var(--line-200);
    background: var(--surface-1);
    color: var(--ink-700);
    cursor: pointer;
    transition: transform 180ms ease, background 180ms ease, border-color 180ms ease, color 180ms ease;
}

.app-sidebar-pin:hover,
.app-sidebar-pin:focus {
    background: rgba(42, 91, 215, 0.08);
    border-color: rgba(42, 91, 215, 0.3);
    transform: translateY(-1px);
}

.app-sidebar-pin:focus-visible {
    outline: none;
    box-shadow: 0 0 0 3px rgba(59, 114, 240, 0.22);
}

.app-sidebar-pin[aria-pressed="true"] {
    background: rgba(42, 91, 215, 0.12);
    border-color: rgba(42, 91, 215, 0.35);
    color: var(--brand-600);
}

.app-sidebar-pin-icon {
    width: 18px;
    height: 18px;
}

.app-sidebar-close {
    display: inline-grid;
    place-items: center;
    width: 40px;
    height: 40px;
    border-radius: 12px;
    border: 1px solid var(--line-200);
    background: var(--surface-1);
    color: var(--ink-700);
    cursor: pointer;
    transition: transform 180ms ease, background 180ms ease, border-color 180ms ease;
}

.app-sidebar-close:hover,
.app-sidebar-close:focus {
    background: rgba(42, 91, 215, 0.08);
    border-color: rgba(42, 91, 215, 0.3);
    transform: translateY(-1px);
}

.app-sidebar-close:focus-visible {
    outline: none;
    box-shadow: 0 0 0 3px rgba(59, 114, 240, 0.22);
}

.app-sidebar-close-icon {
    width: 18px;
    height: 18px;
}

.app-nav {
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.app-nav a {
    color: var(--ink-700);
    text-decoration: none;
    padding: 10px 14px;
    border-radius: 12px;
    font-size: 14px;
    border: 1px solid transparent;
    position: relative;
    transition: transform 180ms ease, background 180ms ease, border-color 180ms ease, color 180ms ease;
}

.app-nav a.nav-sub {
    padding-left: 30px;
    font-size: 13px;
    color: var(--muted-500);
}

.app-nav a.nav-sub::before {
    left: 18px;
    width: 4px;
    height: 4px;
    opacity: 0.6;
}

.app-nav a::before {
    content: "";
    position: absolute;
    left: 10px;
    top: 50%;
    width: 6px;
    height: 6px;
    border-radius: 999px;
    background: transparent;
    transform: translateY(-50%);
}

.app-nav a:hover,
.app-nav a:focus {
    background: rgba(42, 91, 215, 0.08);
    border-color: rgba(42, 91, 215, 0.2);
    color: var(--brand-600);
    transform: translateX(2px);
}

.app-nav a.active,
.app-nav a[aria-current="page"] {
    background: rgba(42, 91, 215, 0.12);
    border-color: rgba(42, 91, 215, 0.3);
    color: var(--brand-600);
}

.app-nav a.active::before,
.app-nav a[aria-current="page"]::before {
    display: none;
}

.app-main {
    flex: 1;
    /* Allow flex item to shrink even if it contains wide tables (e.g. weekly calendar). */
    min-width: 0;
    padding: 4px 6px 12px;
    animation: riseIn 600ms var(--ease-out-expo) both;
}

.page-head {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 0;
    position: relative;
}

.page-head:not(:has(.page-actions)) {
    display: none;
}

.page-head > div:first-child {
    display: none;
}

.page-head .page-actions {
    margin-left: auto;
    margin-bottom: 18px;
}

.page-title {
    font-size: 28px;
    margin: 0;
}

.page-subtitle {
    color: var(--muted-500);
    margin: 4px 0 0;
    font-size: 13px;
}

.page-actions {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
}

.card {
    background: var(--surface-0);
    border: 1px solid var(--line-200);
    border-radius: var(--radius-lg);
    padding: 18px 20px;
    margin-bottom: 18px;
    box-shadow: var(--shadow-card);
    position: relative;
}

.card-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    flex-wrap: wrap;
    margin-bottom: 16px;
}

/* Grade portal: place daily work first and keep administration compact. */
.grade-portal-shell {
    gap: 16px;
}

.grade-portal-shell .portal-section {
    border-radius: 8px;
    background: #ffffff;
}

.grade-portal-toolbar {
    display: flex;
    justify-content: flex-end;
}

.grade-portal-workspace {
    border-color: rgba(59, 114, 240, 0.28);
    box-shadow: 0 12px 28px rgba(38, 72, 124, 0.1);
}

.grade-portal-workspace-grid {
    display: grid;
    grid-template-columns: minmax(0, 1.55fr) minmax(300px, 0.85fr);
    gap: 0;
}

.grade-portal-workspace-grid--single {
    grid-template-columns: minmax(0, 1fr);
}

.grade-portal-primary-task,
.grade-portal-review-task {
    min-width: 0;
    padding: 4px 8px 4px 0;
}

.grade-portal-review-task {
    margin-left: 24px;
    padding-left: 28px;
    border-left: 1px solid var(--line-200);
}

.grade-portal-primary-task h2,
.grade-portal-review-task h2 {
    margin: 6px 0 5px;
    color: var(--ink-900);
    font-size: 24px;
    line-height: 1.3;
}

.grade-portal-primary-task p,
.grade-portal-review-task p {
    max-width: 720px;
    margin: 0;
    color: var(--muted-500);
    font-size: 14px;
    line-height: 1.6;
}

.grade-portal-eyebrow {
    color: #2563eb;
    font-size: 12px;
    font-weight: 800;
}

.grade-portal-eyebrow--review {
    color: #b45309;
}

.grade-portal-task-counts,
.grade-portal-review-counts {
    display: flex;
    flex-wrap: wrap;
    gap: 10px 20px;
    margin-top: 18px;
    color: var(--ink-600);
    font-size: 13px;
}

.grade-portal-task-counts strong {
    margin-right: 3px;
    color: var(--ink-900);
    font-size: 22px;
    font-variant-numeric: tabular-nums;
}

.grade-portal-review-counts span {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    align-items: baseline;
    gap: 5px;
}

.grade-portal-review-counts strong {
    color: #92400e;
    font-size: 24px;
    font-variant-numeric: tabular-nums;
}

.grade-portal-review-counts small {
    color: var(--ink-600);
    font-size: 12px;
}

.grade-portal-primary-action,
.grade-portal-review-action {
    margin-top: 18px;
}

.grade-portal-primary-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 10px;
    margin-top: 18px;
}

.grade-portal-primary-actions .grade-portal-primary-action {
    margin-top: 0;
}

/* Grade import */
.grade-import-page {
    display: grid;
    gap: 18px;
}

.grade-import-toolbar {
    display: flex;
    justify-content: flex-end;
}

.grade-import-card {
    padding: 24px;
}

.grade-import-head {
    margin-bottom: 22px;
}

.grade-import-head h2 {
    margin: 0 0 6px;
}

.grade-import-head p {
    margin: 0;
}

.grade-import-warning {
    display: grid;
    gap: 4px;
    margin-bottom: 18px;
    padding: 14px 16px;
    border: 1px solid #f0c36d;
    border-left: 4px solid #d97706;
    border-radius: 6px;
    background: #fffaf0;
    color: #78350f;
}

.grade-import-course-row {
    display: grid;
    grid-template-columns: minmax(180px, 0.55fr) minmax(160px, 0.45fr) minmax(260px, 1fr) auto;
    align-items: end;
    gap: 16px;
}

.grade-import-upload-row {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: end;
    gap: 16px;
}

.grade-import-course-field,
.grade-import-category-field,
.grade-import-class-field,
.grade-import-file-field {
    min-width: 0;
    margin: 0;
}

.grade-import-steps {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 0;
    margin: 24px 0;
    padding: 0;
    border-block: 1px solid var(--line-200);
    list-style: none;
}

.grade-import-steps li {
    display: grid;
    grid-template-columns: 34px minmax(0, 1fr);
    align-items: center;
    gap: 10px;
    min-height: 72px;
    padding: 12px 16px;
    color: var(--ink-600);
    transition: background-color 160ms ease, box-shadow 160ms ease, opacity 160ms ease;
}

.grade-import-steps li + li {
    border-left: 1px solid var(--line-200);
}

.grade-import-steps strong {
    display: grid;
    width: 30px;
    height: 30px;
    place-items: center;
    border-radius: 50%;
    background: #e8f0ff;
    color: #2563eb;
    font-size: 14px;
}

.grade-import-steps li.is-current {
    background: #f4f7ff;
    box-shadow: inset 0 -3px #2563eb;
}

.grade-import-steps li.is-current strong {
    background: #2563eb;
    color: #fff;
}

.grade-import-steps li.is-complete {
    background: #f1faf7;
}

.grade-import-steps li.is-complete strong {
    background: #0f8a7b;
    color: #fff;
}

.grade-import-steps li.is-pending {
    opacity: 0.68;
}

.grade-import-steps span {
    min-width: 0;
    overflow-wrap: anywhere;
    color: var(--ink-700);
    font-size: 14px;
    font-weight: 700;
    line-height: 1.45;
}

.grade-import-step-status {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 8px 12px;
    margin: -8px 0 24px;
    color: var(--ink-800);
    font-weight: 700;
}

.grade-import-step-status > span {
    color: #2563eb;
    font-size: 12px;
}

.grade-import-step-current {
    min-width: 0;
    overflow-wrap: anywhere;
}

.grade-import-work-section {
    padding: 22px 0;
    border-top: 1px solid var(--line-200);
}

.grade-import-section-head {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 20px;
    margin-bottom: 16px;
}

.grade-import-section-head h3 {
    margin: 2px 0 4px;
    color: var(--ink-900);
    font-size: 19px;
}

.grade-import-section-head p {
    margin: 0;
    color: var(--ink-600);
    font-size: 14px;
    line-height: 1.55;
}

.grade-import-section-kicker {
    color: #0f8a7b;
    font-size: 12px;
    font-weight: 800;
}

.grade-import-selection-summary {
    display: grid;
    min-width: 220px;
    gap: 3px;
    padding-left: 16px;
    border-left: 3px solid #2563eb;
}

.grade-import-selection-summary strong {
    color: var(--ink-900);
    font-size: 17px;
}

.grade-import-selection-summary span {
    color: var(--ink-600);
    font-size: 13px;
    overflow-wrap: anywhere;
}

.grade-import-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin: 0;
}

.grade-import-rules {
    margin-top: 22px;
    padding: 18px 20px;
    border: 1px solid #b9ded8;
    border-left: 4px solid #0f8a7b;
    border-radius: 6px;
    background: #f6fbfa;
}

.grade-import-rules-head {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 8px 14px;
    margin-bottom: 14px;
}

.grade-import-rules-head h3,
.grade-import-rules-head p,
.grade-import-rule-note {
    margin: 0;
}

.grade-import-rules-head h3 {
    color: var(--ink-900);
    font-size: 18px;
}

.grade-import-rules-head p,
.grade-import-rule-note {
    color: var(--ink-600);
    font-size: 14px;
    line-height: 1.55;
}

.grade-import-rule-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 10px;
}

.grade-import-rule {
    display: grid;
    grid-template-columns: minmax(62px, auto) minmax(0, 1fr);
    align-items: center;
    gap: 10px;
    min-height: 52px;
    padding: 10px 12px;
    border: 1px solid var(--line-200);
    border-radius: 6px;
    background: #fff;
}

.grade-import-rule strong {
    color: var(--ink-900);
    font-size: 16px;
}

.grade-import-rule span {
    color: var(--ink-700);
    font-size: 14px;
    font-weight: 700;
    line-height: 1.4;
}

.grade-import-rule.is-clear {
    border-color: #f0c36d;
    background: #fffaf0;
}

.grade-import-rule.is-excused {
    border-color: #cbd5e1;
    background: #f8fafc;
}

.grade-import-rule-note {
    margin-top: 12px;
}

.grade-import-card > .help-text {
    margin: 10px 0 0;
}

.grade-import-result {
    margin-top: 22px;
    padding-top: 20px;
    border-top: 1px solid var(--line-200);
}

.grade-import-result h3 {
    margin: 0 0 10px;
    font-size: 18px;
}

.grade-import-result-summary {
    display: flex;
    flex-wrap: wrap;
    gap: 8px 18px;
    margin-bottom: 12px;
    color: var(--ink-700);
}

.grade-import-result-table {
    width: 100%;
    border-collapse: collapse;
}

.grade-import-result-table th,
.grade-import-result-table td {
    padding: 10px 12px;
    border-bottom: 1px solid var(--line-200);
    text-align: left;
    vertical-align: top;
}

.grade-import-result-table th {
    background: #eef3f9;
    color: var(--ink-700);
    font-size: 13px;
}

.grade-import-result-table td {
    overflow-wrap: anywhere;
}

.grade-portal-section-head {
    margin-bottom: 14px;
}

.grade-portal-progress-grid {
    display: grid;
    grid-template-columns: repeat(6, minmax(0, 1fr));
    gap: 10px;
}

.grade-portal-progress-item {
    display: flex;
    min-width: 0;
    min-height: 86px;
    flex-direction: column;
    justify-content: space-between;
    gap: 8px;
    padding: 12px 13px;
    border: 1px solid var(--line-200);
    border-top: 3px solid #94a3b8;
    border-radius: 8px;
    background: #ffffff;
    color: var(--ink-700);
    text-decoration: none;
}

.grade-portal-progress-item:hover,
.grade-portal-progress-item:focus-visible {
    border-color: #7ea1da;
    background: #f8fbff;
    color: var(--ink-900);
}

.grade-portal-progress-item:focus-visible,
.grade-portal-utility-link:focus-visible,
.grade-portal-setup-row:focus-visible,
.grade-portal-secondary-links a:focus-visible {
    outline: 3px solid rgba(59, 130, 246, 0.22);
    outline-offset: 2px;
}

.grade-portal-progress-item > span {
    overflow-wrap: anywhere;
    font-size: 13px;
    font-weight: 700;
}

.grade-portal-progress-item strong {
    color: var(--ink-900);
    font-size: 28px;
    font-variant-numeric: tabular-nums;
    line-height: 1;
}

.grade-portal-progress-item strong small {
    margin-left: 4px;
    color: var(--muted-500);
    font-size: 11px;
    font-weight: 600;
}

.grade-portal-progress-item--active {
    border-top-color: #2563eb;
}

.grade-portal-progress-item--waiting {
    border-top-color: #d97706;
}

.grade-portal-progress-item--approved {
    border-top-color: #0f766e;
}

.grade-portal-progress-item--locked {
    border-top-color: #475569;
}

.grade-portal-progress-item--published {
    border-top-color: #15803d;
}

.grade-portal-utility-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
}

.grade-portal-utility-link {
    display: grid;
    min-width: 0;
    gap: 4px;
    padding: 14px 16px;
    border: 1px solid var(--line-200);
    border-radius: 8px;
    background: #ffffff;
    color: var(--ink-800);
    text-decoration: none;
}

.grade-portal-utility-link:hover {
    border-color: #8faedc;
    background: #f8fbff;
    color: var(--ink-900);
}

.grade-portal-utility-label {
    color: #2563eb;
    font-size: 12px;
    font-weight: 800;
}

.grade-portal-utility-link strong {
    overflow-wrap: anywhere;
    font-size: 16px;
}

.grade-portal-utility-link small {
    color: var(--muted-500);
    font-size: 12px;
}

.grade-portal-setup-list {
    border-top: 1px solid var(--line-200);
}

.grade-portal-setup-row {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: center;
    gap: 16px;
    min-height: 64px;
    padding: 10px 4px;
    border-bottom: 1px solid var(--line-200);
    color: var(--ink-800);
    text-decoration: none;
}

.grade-portal-setup-row:hover {
    background: #f8fafc;
    color: var(--ink-900);
}

.grade-portal-setup-row > span:first-child {
    display: grid;
    min-width: 0;
    gap: 3px;
}

.grade-portal-setup-row strong {
    overflow-wrap: anywhere;
    font-size: 14px;
}

.grade-portal-setup-row small {
    color: var(--muted-500);
    font-size: 12px;
}

.grade-portal-status {
    display: inline-flex;
    align-items: center;
    min-height: 28px;
    padding: 4px 10px;
    border: 1px solid transparent;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 800;
    white-space: nowrap;
}

.grade-portal-status--ready {
    border-color: rgba(13, 148, 136, 0.28);
    background: #ecfdf5;
    color: #047857;
}

.grade-portal-status--warning {
    border-color: rgba(217, 119, 6, 0.3);
    background: #fffbeb;
    color: #92400e;
}

.grade-portal-secondary-links {
    display: flex;
    flex-wrap: wrap;
    gap: 10px 20px;
    margin-top: 16px;
}

.grade-portal-secondary-links a {
    color: #2563eb;
    font-size: 13px;
    font-weight: 700;
    text-decoration: none;
}

.grade-portal-secondary-links a:hover {
    text-decoration: underline;
}

@media (max-width: 1180px) {
    .grade-portal-progress-grid {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }

    .grade-import-course-row {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 820px) {
    .grade-portal-workspace-grid {
        grid-template-columns: minmax(0, 1fr);
    }

    .grade-portal-review-task {
        margin: 22px 0 0;
        padding: 22px 0 0;
        border-top: 1px solid var(--line-200);
        border-left: 0;
    }

    .grade-import-rule-grid {
        grid-template-columns: minmax(0, 1fr);
    }
}

@media (max-width: 720px) {
    .grade-portal-toolbar .btn,
    .grade-portal-primary-action,
    .grade-portal-review-action {
        width: 100%;
    }

    .grade-portal-progress-grid,
    .grade-portal-utility-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .grade-portal-primary-actions,
    .grade-portal-primary-actions .btn,
    .grade-import-toolbar .btn,
    .grade-import-actions,
    .grade-import-actions .btn {
        width: 100%;
    }

    .grade-import-card {
        padding: 18px;
    }

    .grade-import-section-head {
        flex-direction: column;
        align-items: stretch;
    }

    .grade-import-selection-summary {
        min-width: 0;
    }

    .grade-import-course-row,
    .grade-import-upload-row,
    .grade-import-steps {
        grid-template-columns: minmax(0, 1fr);
    }

    .grade-import-course-row .btn {
        width: 100%;
    }

    .grade-import-steps li + li {
        border-top: 1px solid var(--line-200);
        border-left: 0;
    }

    .grade-import-result {
        overflow-x: auto;
    }
}

@media (max-width: 520px) {
    .grade-portal-progress-grid,
    .grade-portal-utility-grid {
        grid-template-columns: minmax(0, 1fr);
    }

    .grade-portal-setup-row {
        grid-template-columns: minmax(0, 1fr);
        gap: 8px;
    }

    .grade-portal-status {
        justify-self: start;
        white-space: normal;
    }
}

.card-head > :first-child {
    min-width: 0;
}

.card-head h2 {
    font-size: 20px;
    margin: 0;
}

.card h3 {
    font-size: 16px;
    margin-top: 2px;
}

.card .card {
    background: var(--surface-1);
    border-color: var(--line-200);
    box-shadow: none;
}

.grid {
    display: grid;
    gap: 16px;
}

.grid-2 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
}

.grid-3 {
    grid-template-columns: repeat(3, minmax(0, 1fr));
}

.stat-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    gap: 16px;
}

.stat-card {
    padding: 16px 18px;
    border-radius: var(--radius-md);
    border: 1px solid rgba(59, 114, 240, 0.18);
    background: linear-gradient(140deg, rgba(59, 114, 240, 0.08), rgba(255, 255, 255, 0.8));
}

.stat-card-link {
    display: block;
    color: inherit;
    text-decoration: none;
    transition: transform 180ms ease, box-shadow 180ms ease, border-color 180ms ease, background 180ms ease;
}

.stat-card-link:hover,
.stat-card-link:focus {
    color: inherit;
    text-decoration: none;
    transform: translateY(-1px);
    border-color: rgba(42, 91, 215, 0.42);
    background: linear-gradient(140deg, rgba(59, 114, 240, 0.14), rgba(255, 255, 255, 0.96));
    box-shadow: 0 10px 20px rgba(42, 91, 215, 0.12);
}

.stat-card-link:focus {
    outline: none;
}

.stat-card-link:focus-visible {
    box-shadow: 0 0 0 3px rgba(59, 114, 240, 0.2), 0 10px 20px rgba(42, 91, 215, 0.12);
}

.portal-shell {
    display: flex;
    flex-direction: column;
    gap: 18px;
}

.portal-shell .portal-section {
    margin-bottom: 0;
}

.portal-shell--attendance .portal-section {
    background: linear-gradient(160deg, rgba(20, 184, 166, 0.08), rgba(255, 255, 255, 0.98));
}

.portal-shell--grade .portal-section {
    background: linear-gradient(160deg, rgba(99, 102, 241, 0.08), rgba(255, 255, 255, 0.98));
}

.portal-shell--school .portal-section {
    background: linear-gradient(160deg, rgba(59, 114, 240, 0.08), rgba(255, 255, 255, 0.98));
}

.portal-section--priority {
    background: linear-gradient(145deg, rgba(59, 114, 240, 0.14), rgba(255, 255, 255, 0.99));
    border-color: rgba(59, 114, 240, 0.22);
}

.portal-section-copy {
    margin: 4px 0 0;
    color: #5d7394;
    font-size: 14px;
    line-height: 1.4;
}

.portal-summary-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 14px;
}

.portal-summary-grid--attendance {
    grid-template-columns: repeat(5, minmax(0, 1fr));
}

.portal-summary-grid--single {
    grid-template-columns: minmax(0, 1fr);
    max-width: 360px;
}

.portal-summary-card {
    display: flex;
    flex-direction: column;
    gap: 8px;
    min-height: 112px;
    border-radius: 14px;
    border: 1px solid #d8e3f3;
    background: #ffffff;
    padding: 12px 14px;
    text-decoration: none;
    color: inherit;
}

.portal-summary-card:hover,
.portal-summary-card:focus {
    border-color: #8eaee1;
    background: #f7faff;
    color: inherit;
}

.portal-summary-card:focus-visible {
    outline: none;
    box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.23);
}

.portal-summary-label {
    color: #627899;
    font-size: 14px;
    line-height: 1.35;
}

.portal-summary-grid--attendance .portal-summary-label {
    display: block;
    min-height: calc(1.35em * 2);
}

.portal-summary-value {
    font-size: 36px;
    font-weight: 700;
    font-variant-numeric: tabular-nums;
    line-height: 1.1;
    letter-spacing: 0.03em;
}

.portal-summary-value--danger {
    color: #d45d63;
}

.portal-summary-value--teal {
    color: #0f766e;
}

.portal-summary-value--amber {
    color: #b7791f;
}

.portal-summary-value--violet {
    color: #5b56cc;
}

.portal-summary-value--action {
    color: #22324a;
    font-size: 24px;
    letter-spacing: 0;
}

.portal-nav-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: 14px;
}

.portal-nav-grid--compact {
    grid-template-columns: repeat(auto-fit, minmax(220px, 320px));
}

.portal-priority-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 14px;
}

.portal-nav-card {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 6px;
    min-height: 160px;
    text-align: left;
    padding: 14px 16px;
}

.portal-nav-card .menu-tile-title {
    font-size: 20px;
    line-height: 1.25;
    margin: 0;
}

.portal-nav-card .menu-tile-sub {
    margin-top: 0;
    font-size: 14px;
    color: #5d7394;
    line-height: 1.35;
}

.portal-nav-card--priority {
    min-height: 192px;
    border-color: rgba(42, 91, 215, 0.3);
    background: linear-gradient(155deg, rgba(59, 114, 240, 0.18), rgba(255, 255, 255, 0.99));
    box-shadow: 0 16px 28px rgba(42, 91, 215, 0.1);
}

.portal-nav-card--priority .menu-tile-title {
    font-size: 22px;
}

.portal-nav-card--priority .menu-tile-sub {
    display: -webkit-box;
    overflow: hidden;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
}

.portal-priority-actions {
    width: 100%;
    margin-top: auto;
    padding-top: 8px;
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

.portal-priority-actions .btn {
    min-height: 40px;
}

.portal-priority-actions .btn-outline {
    background: rgba(255, 255, 255, 0.86);
}

.portal-priority-actions .btn-outline:hover,
.portal-priority-actions .btn-outline:focus {
    background: rgba(42, 91, 215, 0.08);
}

.portal-nav-card--hr {
    gap: 10px;
}

.portal-shell--attendance .portal-nav-card--hr-primary {
    border-color: rgba(13, 148, 136, 0.2);
    background: linear-gradient(160deg, rgba(20, 184, 166, 0.16), rgba(255, 255, 255, 0.99));
    box-shadow: 0 14px 26px rgba(15, 118, 110, 0.1);
}

.portal-shell--attendance .portal-nav-card--hr-primary:hover,
.portal-shell--attendance .portal-nav-card--hr-primary:focus {
    border-color: rgba(13, 148, 136, 0.32);
    background: linear-gradient(160deg, rgba(20, 184, 166, 0.2), rgba(255, 255, 255, 0.99));
}

.portal-shell--attendance .portal-nav-card--hr-secondary {
    border-color: rgba(15, 118, 110, 0.16);
    background: linear-gradient(160deg, rgba(20, 184, 166, 0.08), rgba(255, 255, 255, 0.99));
}

.portal-shell--attendance .portal-nav-card--hr-secondary:hover,
.portal-shell--attendance .portal-nav-card--hr-secondary:focus {
    border-color: rgba(15, 118, 110, 0.26);
    background: linear-gradient(160deg, rgba(20, 184, 166, 0.12), rgba(255, 255, 255, 0.99));
}

.portal-shell--attendance .portal-nav-card--approval {
    border-color: rgba(180, 83, 9, 0.18);
    background: linear-gradient(160deg, rgba(245, 158, 11, 0.12), rgba(255, 255, 255, 0.99));
    box-shadow: 0 12px 24px rgba(180, 83, 9, 0.08);
}

.portal-shell--attendance .portal-nav-card--approval:hover,
.portal-shell--attendance .portal-nav-card--approval:focus {
    border-color: rgba(180, 83, 9, 0.28);
    background: linear-gradient(160deg, rgba(245, 158, 11, 0.18), rgba(255, 255, 255, 0.99));
}

.portal-shell--attendance .portal-nav-card--daily-flow {
    border-color: rgba(13, 148, 136, 0.24);
    background: linear-gradient(160deg, rgba(20, 184, 166, 0.14), rgba(240, 249, 255, 0.98));
    box-shadow: 0 12px 24px rgba(15, 118, 110, 0.08);
}

.portal-shell--attendance .portal-nav-card--daily-flow:hover,
.portal-shell--attendance .portal-nav-card--daily-flow:focus {
    border-color: rgba(13, 148, 136, 0.36);
    background: linear-gradient(160deg, rgba(20, 184, 166, 0.19), rgba(240, 249, 255, 0.99));
}

.portal-nav-inline-link {
    color: var(--brand-600);
    text-decoration: none;
    font-size: 13px;
    font-weight: 600;
}

.portal-nav-inline-link:hover,
.portal-nav-inline-link:focus {
    color: var(--brand-700);
    text-decoration: underline;
}

.portal-nav-meta {
    margin-top: auto;
    color: #6b7280;
    font-size: 12px;
    line-height: 1.3;
    letter-spacing: 0.02em;
}

.portal-tag {
    display: inline-flex;
    align-items: center;
    padding: 3px 10px;
    border-radius: 999px;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    border: 1px solid transparent;
}

.portal-tag--attendance {
    color: #0f766e;
    background: rgba(20, 184, 166, 0.14);
    border-color: rgba(20, 184, 166, 0.25);
}

.portal-tag--grade {
    color: #4338ca;
    background: rgba(99, 102, 241, 0.14);
    border-color: rgba(99, 102, 241, 0.24);
}

.portal-tag--school {
    color: #2a5bd7;
    background: rgba(59, 114, 240, 0.14);
    border-color: rgba(59, 114, 240, 0.25);
}

/* 学校管理ポータル: スプライト非表示 */
.school-portal-icon-sprite {
    position: absolute;
    width: 0;
    height: 0;
    overflow: hidden;
}

.portal-shell--school .portal-nav-card-icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 44px;
    height: 44px;
    margin-bottom: 4px;
    border-radius: 12px;
    flex-shrink: 0;
    color: var(--brand-600);
    background: rgba(59, 114, 240, 0.12);
    border: 1px solid rgba(59, 114, 240, 0.22);
}

.portal-shell--school .portal-nav-card-icon svg {
    width: 24px;
    height: 24px;
}

.portal-subsection {
    margin-top: 22px;
}

.portal-subsection:first-of-type {
    margin-top: 0;
}

.portal-subsection-title {
    margin: 0 0 12px;
    font-size: 15px;
    font-weight: 700;
    color: var(--ink-700);
    letter-spacing: 0.02em;
}

/* 基本3件・学事6件: デスクトップで列数を安定（孤児カードを減らす） */
.portal-nav-grid--basic {
    grid-template-columns: repeat(3, minmax(0, 1fr));
}

.portal-nav-grid--academic {
    grid-template-columns: repeat(3, minmax(0, 1fr));
}

.portal-shell--school .stat-card-link.portal-nav-card .portal-nav-meta {
    color: var(--brand-600);
    font-weight: 600;
    letter-spacing: 0.04em;
}

.portal-shell--school .stat-card-link.portal-nav-card:hover .portal-nav-meta,
.portal-shell--school .stat-card-link.portal-nav-card:focus .portal-nav-meta {
    color: var(--accent-500);
}

.portal-shell--grade .stat-card-link.portal-nav-card .portal-nav-meta {
    color: #5b56cc;
    font-weight: 600;
    letter-spacing: 0.04em;
}

.portal-shell--grade .stat-card-link.portal-nav-card:hover .portal-nav-meta,
.portal-shell--grade .stat-card-link.portal-nav-card:focus .portal-nav-meta {
    color: #4338ca;
}

.portal-shell--attendance .stat-card-link.portal-nav-card .portal-nav-meta {
    color: #0f766e;
    font-weight: 600;
    letter-spacing: 0.04em;
}

.portal-shell--attendance .stat-card-link.portal-nav-card:hover .portal-nav-meta,
.portal-shell--attendance .stat-card-link.portal-nav-card:focus .portal-nav-meta {
    color: #0d9488;
}

.portal-nav-grid--grade-main {
    grid-template-columns: repeat(3, minmax(0, 1fr));
}

.portal-nav-grid--grade-settings {
    grid-template-columns: repeat(2, minmax(0, 1fr));
}

@media (max-width: 900px) {
    .portal-nav-grid--basic,
    .portal-nav-grid--academic {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 520px) {
    .portal-nav-grid--basic,
    .portal-nav-grid--academic {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 900px) {
    .portal-nav-grid--grade-main {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .portal-nav-grid--grade-settings {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 520px) {
    .portal-nav-grid--grade-main {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 1180px) {
    .portal-priority-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

.stat-label {
    font-size: 13px;
    color: var(--muted-500);
    margin-bottom: 6px;
    letter-spacing: 0.02em;
}

.stat-value {
    font-size: 28px;
    font-weight: 700;
    color: var(--ink-900);
    letter-spacing: 0.02em;
}

.stat-value-lg {
    font-size: 36px;
}

.form-row {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 10px 14px;
    margin-bottom: 12px;
}

.form-grid,
.filter-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
    gap: 12px 16px;
    margin-bottom: 14px;
}

.form-field,
.filter-field {
    display: flex;
    flex-direction: column;
    gap: 6px;
    min-width: 0;
}

.form-field-full {
    grid-column: 1 / -1;
}

.course-edit-basic-grid {
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    align-items: start;
    gap: 18px 24px;
}

.course-edit-basic-grid .form-field {
    gap: 7px;
    min-width: 0;
}

.course-transcript-visibility-control {
    display: flex;
    align-items: center;
    min-height: 40px;
    padding: 0 2px;
}

.course-transcript-visibility-check {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    color: var(--ink-800);
    font-weight: 700;
    line-height: 1.4;
}

.course-transcript-visibility-check input[type="checkbox"] {
    width: 18px;
    height: 18px;
    margin: 0;
    flex: 0 0 auto;
}

.course-transcript-visibility-check label {
    margin: 0;
    cursor: pointer;
}

.course-transcript-visibility-field .field-hint {
    white-space: normal;
    overflow-wrap: anywhere;
}

.course-subject-mode {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px 16px;
    padding: 0 0 12px;
    margin-bottom: 2px;
    border-bottom: 1px solid var(--line-200);
}

.course-subject-mode__label {
    color: var(--ink-700);
    font-size: 13px;
    font-weight: 700;
    white-space: nowrap;
}

.course-subject-mode__choices {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 3px;
    border: 1px solid var(--line-200);
    border-radius: 8px;
    background: var(--surface-1);
}

.course-subject-mode__choice {
    position: relative;
    margin: 0;
    cursor: pointer;
}

.course-subject-mode__choice input[type="radio"] {
    position: absolute;
    inset: 0;
    opacity: 0;
    cursor: pointer;
}

.course-subject-mode__choice-body {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 34px;
    padding: 7px 12px;
    border-radius: 6px;
    color: var(--ink-700);
    font-size: 13px;
    font-weight: 700;
    line-height: 1.2;
    white-space: nowrap;
    transition: background 160ms ease, color 160ms ease, box-shadow 160ms ease;
}

.course-subject-mode__choice input[type="radio"]:checked + .course-subject-mode__choice-body {
    background: var(--surface-0);
    color: var(--brand-600);
    box-shadow: 0 1px 4px rgba(15, 23, 42, 0.12);
}

.course-subject-mode__choice input[type="radio"]:focus-visible + .course-subject-mode__choice-body {
    outline: 2px solid rgba(59, 114, 240, 0.45);
    outline-offset: 2px;
}

.course-edit-basic-grid .form-field.is-inactive {
    opacity: 0.62;
}

.course-edit-basic-grid .form-field.is-inactive .form-control,
.course-edit-basic-grid .form-field.is-inactive input,
.course-edit-basic-grid .form-field.is-inactive select {
    background: var(--surface-2);
    color: var(--muted-500);
}

.course-edit-basic-grid .course-subject-existing-required-chip,
.course-edit-basic-grid .course-subject-new-required-chip {
    display: none;
}

.course-edit-basic-grid.is-existing-subject-mode .course-subject-existing-required-chip,
.course-edit-basic-grid.is-new-subject-mode .course-subject-new-required-chip {
    display: inline-flex;
}

.course-edit-basic-grid .form-field label {
    line-height: 1.35;
    margin: 0;
    white-space: normal;
    overflow-wrap: anywhere;
}

.course-edit-basic-grid .label-with-chip {
    display: flex;
    width: 100%;
    align-items: center;
    gap: 6px;
    flex-wrap: nowrap;
}

.course-edit-basic-grid .label-with-chip .label-text {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.course-edit-basic-grid .label-with-chip .required-chip,
.course-edit-basic-grid .label-with-chip .optional-chip {
    flex: 0 0 auto;
    padding: 1px 6px;
    font-size: 10px;
    letter-spacing: 0;
}

.course-edit-basic-grid .course-code-field {
    display: none;
}

@media (max-width: 720px) {
    .course-subject-mode {
        align-items: stretch;
        flex-direction: column;
    }

    .course-subject-mode__choices {
        width: 100%;
    }

    .course-subject-mode__choice {
        flex: 1 1 0;
    }

    .course-subject-mode__choice-body {
        width: 100%;
    }
}

.form-actions,
.filter-actions,
.chat-actions {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
}

.form-actions {
    justify-content: space-between;
}

.toggle-field {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 13px;
    color: var(--ink-700);
}

.status-message {
    margin-top: 12px;
    font-size: 13px;
    color: var(--ink-700);
}

.course-edit-alert {
    display: flex;
    align-items: center;
    min-height: 42px;
    margin: 0 0 16px;
    padding: 10px 14px;
    border: 1px solid var(--line-200);
    border-radius: 8px;
    font-weight: 700;
    line-height: 1.45;
}

.course-edit-alert--success {
    border-color: rgba(15, 118, 110, 0.24);
    background: rgba(20, 184, 166, 0.1);
    color: #0f766e;
}

.course-edit-alert--error {
    border-color: rgba(209, 73, 73, 0.26);
    background: rgba(209, 73, 73, 0.09);
    color: #b22626;
}

.form-row label,
.form-field label,
.filter-field label {
    font-weight: 600;
    font-size: 13px;
    color: var(--ink-700);
    letter-spacing: 0.02em;
    white-space: nowrap;
}

.form-control,
input[type="text"],
input[type="password"],
input[type="email"],
input[type="number"],
input[type="date"],
input[type="datetime-local"],
select,
textarea {
    background: var(--surface-0);
    border: 1px solid var(--line-300);
    border-radius: var(--radius-sm);
    padding: 9px 12px;
    min-width: 160px;
    box-shadow: inset 0 1px 2px rgba(15, 23, 42, 0.06);
    transition: border-color 180ms ease, box-shadow 180ms ease;
}

.form-control:focus,
input:focus,
select:focus,
textarea:focus {
    outline: none;
    border-color: rgba(59, 114, 240, 0.8);
    box-shadow: 0 0 0 3px rgba(59, 114, 240, 0.18);
}

input[type="checkbox"] {
    accent-color: var(--brand-600);
}

.badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 26px;
    padding: 3px 11px;
    border-radius: 999px;
    font-size: 12px;
    background: rgba(18, 163, 166, 0.12);
    color: var(--accent-500);
    font-weight: 600;
    line-height: 1.15;
    text-align: center;
    vertical-align: middle;
}

.student-detail-badges .badge {
    font-size: 14px;
    padding: 4px 12px;
    letter-spacing: 0.02em;
}

.table-shell {
    width: 100%;
    min-width: 0;
    overflow-x: auto;
    overscroll-behavior-inline: contain;
    -webkit-overflow-scrolling: touch;
    border-radius: var(--radius-md);
}

.student-commute-shell {
    border-color: #d7e2ef;
    background:
        radial-gradient(circle at top right, rgba(123, 160, 201, 0.14), transparent 34%),
        linear-gradient(180deg, #fbfdff 0%, #f5f9fc 100%);
}

.student-commute-card-head {
    margin-bottom: 12px;
}

.student-commute-accordion {
    padding: 0;
    overflow: hidden;
}

.student-commute-accordion summary {
    padding: 16px 20px;
    background: linear-gradient(180deg, rgba(233, 239, 246, 0.96), rgba(243, 247, 251, 0.96));
    font-size: 17px;
}

.student-commute-accordion > :not(summary) {
    padding: 20px 22px 22px;
}

.student-commute-summary {
    letter-spacing: 0.02em;
}

.student-commute-body {
    display: grid;
    gap: 16px;
}

.student-commute-copy {
    margin: 0;
    max-width: 760px;
    color: #5f7387;
    font-size: 13px;
    line-height: 1.6;
}

.student-commute-layout {
    display: grid;
    gap: 14px;
}

.student-commute-duo {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 14px;
}

.student-commute-panel {
    padding: 16px 18px;
    border-radius: 14px;
    border: 1px solid #d7e0ea;
    background: linear-gradient(180deg, rgba(255, 255, 255, 0.98), rgba(247, 250, 253, 0.95));
    box-shadow: 0 8px 18px rgba(25, 52, 83, 0.035);
}

.student-commute-panel-head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 10px;
}

.student-commute-panel-head h3 {
    margin: 0;
    font-size: 16px;
    color: #21364d;
}

.student-commute-panel-head p {
    margin: 4px 0 0;
    color: #667b90;
    font-size: 12px;
    line-height: 1.5;
}

.student-commute-chip {
    display: inline-flex;
    align-items: center;
    min-height: 24px;
    padding: 0 10px;
    border-radius: 999px;
    background: rgba(29, 78, 137, 0.1);
    color: #24527d;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.04em;
    white-space: nowrap;
}

.student-commute-help {
    margin-top: 10px;
}

.commute-choice-list {
    width: 100%;
    margin: 0;
    border-collapse: separate;
    border-spacing: 0 8px;
}

.commute-choice-list td {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 10px 12px;
    border: 1px solid #d7dde6;
    border-radius: 12px;
    background: rgba(255, 255, 255, 0.96);
    transition: border-color 180ms ease, box-shadow 180ms ease;
}

.commute-choice-list td:hover {
    border-color: #9db4cb;
    box-shadow: 0 6px 12px rgba(41, 72, 105, 0.05);
}

.commute-choice-list input[type="checkbox"],
.commute-choice-list input[type="radio"] {
    flex: 0 0 auto;
    width: 18px;
    height: 18px;
    margin: 0;
    accent-color: #24527d;
}

.commute-choice-list input[type="checkbox"] + label,
.commute-choice-list input[type="radio"] + label {
    display: inline-flex;
    align-items: center;
    flex: 1 1 auto;
    min-width: 0;
    margin: 0;
    color: #233548;
    font-size: 15px;
    font-weight: 500;
    line-height: 1.4;
    white-space: normal;
    cursor: pointer;
}

.table {
    width: 100%;
    border-collapse: separate;
    border-spacing: 0;
    background: var(--surface-0);
    border: 1px solid var(--line-200);
    border-radius: var(--radius-md);
    overflow: hidden;
    box-shadow: none;
}

.table th,
.table td {
    padding: 12px 14px;
    border-bottom: 1px solid var(--line-200);
    vertical-align: top;
}

.table th {
    background: var(--surface-2);
    text-align: left;
    font-size: 12px;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: var(--ink-600);
}

.table tr:last-child td {
    border-bottom: none;
}

.table-hover tbody tr:hover td {
    background: var(--surface-1);
}

.attendance-editor-filters {
    margin-bottom: 4px;
}

.attendance-editor-actions,
.grade-entry-actions {
    justify-content: flex-start;
    gap: 12px;
}

.attendance-editor-actions-group {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}

.attendance-editor-context {
    margin: 8px 0 10px;
    padding: 10px 12px;
    border: 1px solid var(--line-200);
    border-radius: var(--radius-md);
    background: rgba(255, 255, 255, 0.92);
}

.attendance-editor-context-title {
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.08em;
    color: var(--muted-500);
}

.attendance-editor-context-name {
    margin-top: 2px;
    font-size: 15px;
    font-weight: 800;
    color: var(--ink-900);
    line-height: 1.35;
}

.attendance-editor-context-meta {
    margin-top: 3px;
    font-size: 12px;
    color: var(--muted-500);
    line-height: 1.35;
}

.attendance-editor-context-hint {
    margin: 0 0 12px;
    font-size: 12px;
    color: var(--ink-700);
    line-height: 1.5;
}

.attendance-editor-context-message {
    margin-bottom: 8px;
}

.attendance-editor-context-actions-label {
    margin-bottom: 8px;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.04em;
    color: var(--ink-500);
}

.attendance-editor-context-actions {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
}

.attendance-editor-context-action {
    min-width: 0;
    width: 100%;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 4px;
    justify-content: flex-start;
    padding: 11px 12px;
    border-radius: 14px;
    border: 1px dashed rgba(71, 85, 105, 0.34);
    background: linear-gradient(180deg, rgba(250, 251, 253, 0.98), rgba(241, 245, 249, 0.98));
    color: var(--ink-900);
    text-decoration: none;
    box-shadow: 0 8px 20px rgba(15, 23, 42, 0.04);
    box-sizing: border-box;
}

.attendance-editor-context-action:only-child {
    grid-column: 1 / -1;
}

.attendance-editor-context-action:hover,
.attendance-editor-context-action:focus {
    transform: translateY(-1px);
    text-decoration: none;
    box-shadow: 0 12px 24px rgba(15, 23, 42, 0.10);
}

.attendance-editor-context-action--create {
    border-color: rgba(14, 116, 144, 0.32);
    background: linear-gradient(180deg, rgba(240, 249, 255, 0.98), rgba(224, 242, 254, 0.98));
}

.attendance-editor-context-action--create:hover,
.attendance-editor-context-action--create:focus {
    border-color: rgba(14, 116, 144, 0.52);
}

.attendance-editor-context-action--manage {
    border-color: rgba(124, 58, 237, 0.24);
    background: linear-gradient(180deg, rgba(248, 250, 252, 0.98), rgba(241, 245, 249, 0.98));
}

.attendance-editor-context-action--manage:hover,
.attendance-editor-context-action--manage:focus {
    border-color: rgba(71, 85, 105, 0.44);
}

.attendance-editor-context-action-kind {
    display: inline-flex;
    align-items: center;
    min-height: 22px;
    padding: 0 8px;
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.78);
    border: 1px solid rgba(148, 163, 184, 0.28);
    font-size: 10px;
    font-weight: 800;
    letter-spacing: 0.05em;
    color: var(--ink-600);
}

.attendance-editor-context-action-title {
    font-size: 13px;
    font-weight: 700;
    color: var(--ink-900);
    line-height: 1.2;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    width: 100%;
}

.attendance-editor-context-action-note {
    font-size: 11px;
    color: var(--ink-600);
    line-height: 1.2;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    width: 100%;
}

.attendance-editor-status {
    margin-top: 8px;
}

.attendance-session-state {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 10px;
    padding: 10px 14px;
    border-radius: 14px;
    border: 1px solid rgba(148, 163, 184, 0.22);
    background: rgba(248, 250, 252, 0.92);
}

.attendance-session-state-caption {
    font-size: 12px;
    font-weight: 700;
    color: var(--ink-600);
}

.attendance-session-state-pill {
    display: inline-flex;
    align-items: center;
    min-height: 30px;
    padding: 0 12px;
    border-radius: 999px;
    font-size: 13px;
    font-weight: 800;
    background: rgba(148, 163, 184, 0.16);
    color: var(--ink-800);
}

.attendance-session-state-detail {
    flex: 1 1 260px;
    min-width: 0;
    font-size: 13px;
    line-height: 1.5;
    color: var(--ink-700);
}

.attendance-session-state--draft {
    border-color: rgba(59, 114, 240, 0.22);
    background: linear-gradient(135deg, rgba(59, 114, 240, 0.09), rgba(255, 255, 255, 0.98));
}

.attendance-session-state--draft .attendance-session-state-pill {
    background: rgba(59, 114, 240, 0.14);
    color: var(--brand-700);
}

.attendance-session-state--submitted {
    border-color: rgba(217, 119, 6, 0.22);
    background: linear-gradient(135deg, rgba(245, 158, 11, 0.1), rgba(255, 255, 255, 0.98));
}

.attendance-session-state--submitted .attendance-session-state-pill {
    background: rgba(245, 158, 11, 0.16);
    color: #b45309;
}

.attendance-session-state--locked {
    border-color: rgba(15, 23, 42, 0.14);
    background: rgba(241, 245, 249, 0.96);
}

.attendance-session-state--locked .attendance-session-state-pill {
    background: rgba(15, 23, 42, 0.1);
    color: var(--ink-900);
}

.attendance-session-state--idle .attendance-session-state-pill,
.attendance-session-state--info .attendance-session-state-pill {
    background: rgba(148, 163, 184, 0.16);
    color: var(--ink-700);
}

.attendance-editor-feedback {
    margin-top: 12px;
    padding: 12px 14px;
    border-radius: 14px;
    border: 1px solid rgba(148, 163, 184, 0.24);
    font-size: 13px;
    font-weight: 700;
    line-height: 1.5;
    box-shadow: 0 10px 24px rgba(15, 23, 42, 0.05);
}

.attendance-editor-feedback--success {
    border-color: rgba(13, 148, 136, 0.22);
    background: linear-gradient(135deg, rgba(20, 184, 166, 0.12), rgba(255, 255, 255, 0.98));
    color: #0f766e;
}

.attendance-editor-feedback--danger {
    border-color: rgba(239, 68, 68, 0.22);
    background: linear-gradient(135deg, rgba(254, 226, 226, 0.9), rgba(255, 255, 255, 0.98));
    color: #b91c1c;
}

.attendance-editor-feedback--info {
    border-color: rgba(59, 114, 240, 0.22);
    background: linear-gradient(135deg, rgba(59, 114, 240, 0.1), rgba(255, 255, 255, 0.98));
    color: var(--brand-700);
}

.attendance-approval-context {
    margin-top: 12px;
    padding: 12px 14px;
    border-radius: 14px;
    border: 1px solid rgba(42, 91, 215, 0.18);
    background: linear-gradient(135deg, rgba(42, 91, 215, 0.08), rgba(18, 163, 166, 0.06));
    color: var(--ink-800);
}

.attendance-approval-context strong {
    display: block;
    margin-bottom: 4px;
    font-size: 13px;
}

.attendance-approval-context--locked {
    border-color: rgba(15, 23, 42, 0.12);
    background: rgba(241, 245, 249, 0.88);
}

.attendance-approval-note {
    margin: 0 0 14px;
}

.attendance-approval-filters {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(170px, 1fr));
    gap: 12px;
    align-items: end;
}

.attendance-approval-search {
    display: flex;
    align-items: end;
    gap: 10px;
    flex-wrap: wrap;
    min-width: 112px;
}

.attendance-approval-search .btn {
    flex: 1 1 120px;
    width: auto;
    min-width: 0;
}

.attendance-approval-summary {
    margin-top: 10px;
}

.attendance-approval-row-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

.attendance-approval-status-badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 76px;
    padding: 5px 10px;
    border: 1px solid rgba(100, 116, 139, 0.16);
    border-radius: 8px;
    background: rgba(241, 245, 249, 0.92);
    color: var(--ink-700);
    font-size: 13px;
    font-weight: 700;
    line-height: 1.2;
    white-space: nowrap;
}

.attendance-approval-status-badge.is-waiting {
    border-color: rgba(180, 83, 9, 0.24);
    background: rgba(255, 251, 235, 0.96);
    color: #b45309;
}

.attendance-approval-status-badge.is-approved {
    border-color: rgba(13, 148, 136, 0.24);
    background: rgba(240, 253, 250, 0.96);
    color: #0f766e;
}

.attendance-approval-status-badge.is-draft {
    border-color: rgba(220, 38, 38, 0.2);
    background: rgba(254, 242, 242, 0.96);
    color: #dc2626;
}

.attendance-approval-bulk-actions {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    flex-wrap: wrap;
    margin: 0 0 16px;
    padding: 14px 16px;
    border: 1px solid rgba(42, 91, 215, 0.16);
    border-radius: 18px;
    background: linear-gradient(135deg, rgba(219, 234, 254, 0.64), rgba(236, 253, 245, 0.72));
}

.attendance-approval-bulk-actions div {
    display: grid;
    gap: 3px;
}

.attendance-approval-bulk-actions strong {
    color: var(--ink-900);
    font-size: 15px;
}

.attendance-approval-bulk-actions span {
    color: var(--ink-600);
    font-size: 13px;
}

.attendance-approval-selected-count {
    display: inline-flex;
    align-items: center;
    width: fit-content;
    margin-top: 4px;
    padding: 3px 9px;
    border-radius: 8px;
    background: rgba(42, 91, 215, 0.1);
    color: var(--brand-700) !important;
    font-weight: 700;
}

.attendance-approval-select-all {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    color: var(--ink-700);
    font-size: 14px;
    font-weight: 700;
    white-space: nowrap;
}

.attendance-approval-select-all input {
    width: 18px;
    height: 18px;
}

.attendance-approval-row-check input {
    width: 18px;
    height: 18px;
    accent-color: #2563eb;
}

.attendance-reception-banner {
    margin-top: 12px;
    padding: 14px 16px;
    border-radius: 18px;
    border: 1px solid rgba(42, 91, 215, 0.16);
    background:
        linear-gradient(135deg, rgba(42, 91, 215, 0.08), rgba(18, 163, 166, 0.08)),
        rgba(255, 255, 255, 0.94);
    box-shadow: 0 10px 24px rgba(15, 23, 42, 0.06);
}

.attendance-reception-banner-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    flex-wrap: wrap;
}

.attendance-reception-banner-label {
    font-size: 12px;
    font-weight: 800;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--ink-700);
}

.attendance-reception-banner-body {
    display: grid;
    grid-template-columns: minmax(180px, 240px) minmax(0, 1fr);
    gap: 14px;
    margin-top: 12px;
    align-items: start;
}

.attendance-reception-banner-caption {
    display: block;
    margin-bottom: 6px;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--muted-500);
}

.attendance-reception-count strong {
    display: inline-block;
    font-size: 24px;
    line-height: 1.15;
    color: var(--ink-900);
}

.attendance-reception-count--open strong {
    color: #0f766e;
}

.attendance-reception-copy {
    padding: 12px 14px;
    border-radius: 14px;
    background: rgba(255, 255, 255, 0.78);
    border: 1px solid rgba(148, 163, 184, 0.24);
    color: var(--ink-700);
    line-height: 1.6;
}

.attendance-reception-pill {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 7px 14px;
    border-radius: 999px;
    font-size: 13px;
    font-weight: 800;
    letter-spacing: 0.03em;
    border: 1px solid transparent;
}

.attendance-reception-pill::before {
    content: "";
    width: 10px;
    height: 10px;
    border-radius: 50%;
    background: currentColor;
    box-shadow: 0 0 0 3px rgba(255, 255, 255, 0.5);
}

.attendance-reception-pill--open {
    background: rgba(16, 185, 129, 0.14);
    border-color: rgba(16, 185, 129, 0.24);
    color: #047857;
}

.attendance-reception-pill--closed {
    background: rgba(245, 158, 11, 0.14);
    border-color: rgba(245, 158, 11, 0.22);
    color: #b45309;
}

.attendance-reception-pill--idle,
.attendance-reception-pill--done {
    background: rgba(59, 114, 240, 0.1);
    border-color: rgba(59, 114, 240, 0.18);
    color: var(--brand-600);
}

.attendance-reception-pill--feature-off {
    background: rgba(100, 116, 139, 0.12);
    border-color: rgba(100, 116, 139, 0.18);
    color: var(--ink-600);
}

.attendance-editor-help,
.grade-entry-mobile-help {
    margin: 0 0 12px;
}

.daily-flow-shell .portal-section {
    overflow: visible;
}

.daily-flow-filter-card {
    padding: 16px 18px;
}

.daily-flow-filter-card .card-head {
    align-items: flex-start;
    margin-bottom: 12px;
}

.daily-flow-filter {
    display: grid;
    grid-template-columns: minmax(180px, 230px) minmax(220px, 360px) minmax(120px, 150px) minmax(140px, 170px) 112px;
    gap: 10px 14px;
    align-items: end;
    margin-bottom: 0;
}

.daily-flow-filter .form-field {
    gap: 4px;
}

.daily-flow-filter .form-control {
    width: 100%;
    min-width: 0;
    min-height: 42px;
}

.daily-flow-date-control {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 8px;
    align-items: center;
    min-width: 0;
}

.daily-flow-date-control .form-control {
    min-width: 0;
}

.daily-flow-weekday {
    display: inline-flex;
    min-width: 42px;
    min-height: 34px;
    align-items: center;
    justify-content: center;
    padding: 5px 9px;
    border: 1px solid rgba(100, 116, 139, 0.18);
    border-radius: 999px;
    background: rgba(248, 250, 252, 0.96);
    color: var(--ink-700);
    font-size: 13px;
    font-weight: 800;
    line-height: 1;
    white-space: nowrap;
}

.daily-flow-weekday.is-saturday,
.daily-flow-weekday--saturday,
.daily-flow-weekday[data-weekday="6"] {
    border-color: rgba(37, 99, 235, 0.22);
    background: rgba(239, 246, 255, 0.96);
    color: #1d4ed8;
}

.daily-flow-weekday.is-sunday,
.daily-flow-weekday--sunday,
.daily-flow-weekday[data-weekday="0"] {
    border-color: rgba(220, 38, 38, 0.2);
    background: rgba(254, 242, 242, 0.96);
    color: #b91c1c;
}

.daily-flow-filter .btn {
    width: 112px;
    min-width: 0;
    min-height: 42px;
    align-self: end;
    justify-self: start;
    padding-right: 16px;
    padding-left: 16px;
}

.daily-flow-panel .card-head {
    align-items: flex-start;
}

.daily-flow-create-actions {
    display: flex;
    justify-content: flex-end;
}

.daily-flow-progress {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin: 12px 0 0;
    padding: 10px;
    border: 1px solid rgba(148, 163, 184, 0.18);
    border-radius: 8px;
    background: rgba(255, 255, 255, 0.62);
}

.daily-flow-progress-chip {
    display: inline-flex;
    min-height: 40px;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    padding: 8px 10px;
    border: 1px solid rgba(148, 163, 184, 0.26);
    border-radius: 8px;
    background: rgba(255, 255, 255, 0.88);
    color: var(--ink-800);
    font: inherit;
    cursor: pointer;
    transition: border-color 0.18s ease, box-shadow 0.18s ease, transform 0.18s ease;
}

.daily-flow-progress-chip:hover,
.daily-flow-progress-chip:focus-visible {
    border-color: rgba(37, 99, 235, 0.42);
    box-shadow: 0 10px 20px rgba(37, 99, 235, 0.12);
    outline: none;
    transform: translateY(-1px);
}

.daily-flow-progress-label {
    font-weight: 800;
    white-space: nowrap;
}

.daily-flow-progress-status {
    min-width: 54px;
    padding: 3px 8px;
    border-radius: 8px;
    background: rgba(100, 116, 139, 0.1);
    color: var(--ink-600);
    font-size: 12px;
    font-weight: 800;
    text-align: center;
    white-space: nowrap;
}

.daily-flow-progress-chip--not-registered {
    border-color: rgba(100, 116, 139, 0.22);
}

.daily-flow-progress-chip--not-registered .daily-flow-progress-status {
    background: rgba(100, 116, 139, 0.1);
    color: #475569;
}

.daily-flow-progress-chip--pending {
    border-color: rgba(220, 38, 38, 0.26);
    background: rgba(254, 242, 242, 0.72);
}

.daily-flow-progress-chip--pending .daily-flow-progress-status {
    background: rgba(254, 226, 226, 0.88);
    color: #b91c1c;
}

.daily-flow-progress-chip--draft {
    border-color: rgba(245, 158, 11, 0.3);
    background: rgba(255, 251, 235, 0.72);
}

.daily-flow-progress-chip--draft .daily-flow-progress-status {
    background: rgba(254, 243, 199, 0.92);
    color: #b45309;
}

.daily-flow-progress-chip--submitted {
    border-color: rgba(37, 99, 235, 0.3);
    background: rgba(239, 246, 255, 0.78);
}

.daily-flow-progress-chip--submitted .daily-flow-progress-status {
    background: rgba(219, 234, 254, 0.92);
    color: #1d4ed8;
}

.daily-flow-progress-chip--locked {
    border-color: rgba(13, 148, 136, 0.3);
    background: rgba(240, 253, 250, 0.78);
}

.daily-flow-progress-chip--locked .daily-flow-progress-status {
    background: rgba(204, 251, 241, 0.92);
    color: #0f766e;
}

.daily-flow-context {
    margin: 4px 0 0;
    color: var(--ink-600);
    font-size: 14px;
}

.daily-flow-empty {
    margin: 0 0 16px;
    padding: 12px 14px;
    border: 1px solid rgba(180, 83, 9, 0.18);
    border-radius: 8px;
    background: rgba(255, 251, 235, 0.72);
    color: var(--ink-700);
}

.daily-flow-list {
    display: grid;
    gap: 12px;
}

.daily-flow-period-section {
    display: grid;
    gap: 10px;
    padding: 12px;
    border: 1px solid rgba(37, 99, 235, 0.16);
    border-left: 5px solid rgba(37, 99, 235, 0.46);
    border-radius: 8px;
    background: linear-gradient(160deg, rgba(239, 246, 255, 0.52), rgba(255, 255, 255, 0.9));
}

.daily-flow-period-section--empty {
    border-color: rgba(148, 163, 184, 0.22);
    border-left-color: rgba(148, 163, 184, 0.52);
    background: linear-gradient(160deg, rgba(248, 250, 252, 0.74), rgba(255, 255, 255, 0.92));
}

.daily-flow-period-section-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 2px 4px 4px;
}

.daily-flow-period-section-title {
    display: flex;
    align-items: center;
    gap: 10px;
    min-width: 0;
}

.daily-flow-period-section-label {
    color: var(--ink-900);
    font-size: 18px;
    font-weight: 800;
}

.daily-flow-period-section-count {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 26px;
    padding: 4px 10px;
    border-radius: 8px;
    background: rgba(219, 234, 254, 0.9);
    color: #1d4ed8;
    font-size: 12px;
    font-weight: 800;
    white-space: nowrap;
}

.daily-flow-period-section--empty .daily-flow-period-section-count {
    background: rgba(226, 232, 240, 0.88);
    color: var(--ink-600);
}

.daily-flow-period-section-hint {
    color: var(--ink-500);
    font-size: 12px;
    font-weight: 700;
    white-space: nowrap;
}

.daily-flow-period-lessons {
    display: grid;
    gap: 8px;
}

.daily-flow-period-add-slot {
    display: grid;
    gap: 8px;
    padding-top: 2px;
}

.daily-flow-step {
    display: grid;
    grid-template-columns: minmax(72px, 96px) minmax(0, 1fr) minmax(430px, max-content);
    gap: 14px;
    align-items: center;
    padding: 14px;
    border: 1px solid rgba(148, 163, 184, 0.24);
    border-radius: 8px;
    background: rgba(255, 255, 255, 0.88);
}

.daily-flow-step--hr {
    border-color: rgba(13, 148, 136, 0.24);
    background: linear-gradient(160deg, rgba(240, 253, 250, 0.96), rgba(255, 255, 255, 0.96));
}

.daily-flow-step--lesson {
    border-color: rgba(59, 130, 246, 0.2);
}

.daily-flow-step--registered {
    border-color: rgba(37, 99, 235, 0.26);
    background: linear-gradient(160deg, rgba(255, 255, 255, 0.98), rgba(248, 250, 252, 0.98));
    box-shadow: inset 4px 0 0 rgba(37, 99, 235, 0.5);
}

.daily-flow-step--candidate {
    border-style: dashed;
    border-color: rgba(148, 163, 184, 0.42);
    background: linear-gradient(160deg, rgba(248, 250, 252, 0.86), rgba(255, 255, 255, 0.94));
}

.daily-flow-step--period-selector {
    grid-template-columns: minmax(108px, 128px) minmax(160px, 240px) minmax(360px, 1fr);
    gap: 10px;
    align-items: center;
    padding: 10px 12px;
    border-style: dashed;
    border-color: rgba(148, 163, 184, 0.38);
    background: linear-gradient(160deg, rgba(248, 250, 252, 0.86), rgba(255, 255, 255, 0.96));
}

.daily-flow-period-section .daily-flow-step {
    border-radius: 8px;
    box-shadow: none;
}

.daily-flow-period-section .daily-flow-step--registered,
.daily-flow-period-section .daily-flow-step--candidate:not(.daily-flow-step--period-add-form) {
    grid-template-columns: minmax(0, 1fr) minmax(390px, max-content);
    padding: 12px 14px;
}

.daily-flow-period-section .daily-flow-step--registered .daily-flow-step-marker,
.daily-flow-period-section .daily-flow-step--candidate:not(.daily-flow-step--period-add-form) .daily-flow-step-marker {
    display: none;
}

.daily-flow-period-section .daily-flow-step--registered .daily-flow-step-title,
.daily-flow-period-section .daily-flow-step--candidate:not(.daily-flow-step--period-add-form) .daily-flow-step-title {
    font-size: 17px;
}

.daily-flow-period-section .daily-flow-step--registered {
    border-color: rgba(37, 99, 235, 0.22);
    background: linear-gradient(160deg, rgba(255, 255, 255, 0.98), rgba(248, 250, 252, 0.98));
}

.daily-flow-period-section .daily-flow-step--period-add-form {
    grid-template-columns: minmax(150px, 220px) minmax(0, 1fr);
    padding: 10px 12px;
    border-style: dashed;
    border-color: rgba(148, 163, 184, 0.48);
    background: linear-gradient(160deg, rgba(248, 250, 252, 0.88), rgba(255, 255, 255, 0.84));
}

.daily-flow-period-section .daily-flow-step--period-add-form .daily-flow-step-marker {
    display: none;
}

.daily-flow-period-section .daily-flow-step--period-add-form .daily-flow-step-title {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-size: 15px;
}

.daily-flow-period-section .daily-flow-step--period-add-form .daily-flow-step-title::before {
    content: "追加枠";
    display: inline-flex;
    min-height: 22px;
    align-items: center;
    justify-content: center;
    padding: 3px 8px;
    border-radius: 8px;
    background: rgba(226, 232, 240, 0.9);
    color: var(--ink-600);
    font-size: 12px;
    font-weight: 800;
    line-height: 1.2;
}

.daily-flow-period-section .daily-flow-step--period-add-form .daily-flow-step-sub {
    color: var(--ink-500);
}

.daily-flow-period-section .daily-flow-step--period-add-form .daily-flow-step-action {
    justify-content: stretch;
}

.daily-flow-period-section .daily-flow-step--period-add-form .daily-flow-period-add {
    width: 100%;
    grid-template-columns: minmax(240px, 1fr) max-content;
}

.daily-flow-step--period-selector + .daily-flow-step--lesson {
    margin-top: -4px;
}

.daily-flow-step.is-inline-open {
    border-color: rgba(37, 99, 235, 0.36);
    background: linear-gradient(160deg, rgba(239, 246, 255, 0.96), rgba(255, 255, 255, 0.96));
    box-shadow: 0 12px 28px rgba(37, 99, 235, 0.1);
}

.daily-flow-step--next:not(.is-inline-open) {
    border-color: rgba(37, 99, 235, 0.4);
    background: linear-gradient(160deg, rgba(239, 246, 255, 0.88), rgba(255, 255, 255, 0.96));
    box-shadow: inset 4px 0 0 rgba(37, 99, 235, 0.72), 0 12px 24px rgba(37, 99, 235, 0.1);
}

.daily-flow-step.is-progress-jump,
.daily-flow-period-section.is-progress-jump {
    outline: 3px solid rgba(37, 99, 235, 0.32);
    outline-offset: 2px;
}

.daily-flow-step-marker {
    display: flex;
    min-height: 42px;
    align-items: center;
    justify-content: center;
    flex-direction: column;
    gap: 3px;
    padding: 8px 10px;
    border-radius: 8px;
    background: rgba(15, 118, 110, 0.1);
    color: #0f766e;
    font-weight: 800;
    text-align: center;
}

.daily-flow-step--lesson .daily-flow-step-marker {
    background: rgba(59, 130, 246, 0.1);
    color: #1d4ed8;
}

.daily-flow-step--registered .daily-flow-step-marker {
    background: rgba(219, 234, 254, 0.86);
}

.daily-flow-step--candidate .daily-flow-step-marker,
.daily-flow-step--period-selector .daily-flow-step-marker {
    min-height: 38px;
    padding: 6px 8px;
    background: rgba(226, 232, 240, 0.86);
    color: #2563eb;
    white-space: nowrap;
}

.daily-flow-step-marker-main {
    display: block;
    line-height: 1.15;
}

.daily-flow-step-marker-tag {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 2px 6px;
    border-radius: 8px;
    background: rgba(255, 255, 255, 0.78);
    color: var(--ink-600);
    font-size: 11px;
    line-height: 1.2;
}

.daily-flow-step--period-selector .daily-flow-step-body {
    gap: 2px;
}

.daily-flow-step--period-selector .daily-flow-step-title {
    font-size: 16px;
    line-height: 1.35;
}

.daily-flow-step--period-selector .daily-flow-step-sub {
    font-size: 12px;
    line-height: 1.35;
}

.daily-flow-step--period-selector .daily-flow-step-meta {
    display: none;
}

.daily-flow-step-body {
    min-width: 0;
    display: grid;
    gap: 8px;
}

.daily-flow-step-head {
    display: flex;
    min-width: 0;
    align-items: flex-start;
    justify-content: space-between;
    gap: 12px;
}

.daily-flow-step-title {
    color: var(--ink-900);
    font-size: 18px;
    font-weight: 800;
    overflow-wrap: anywhere;
}

.daily-flow-step-sub,
.daily-flow-step-meta {
    color: var(--ink-600);
    font-size: 13px;
    line-height: 1.5;
    overflow-wrap: anywhere;
}

.daily-flow-status {
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 112px;
    min-width: 112px;
    padding: 5px 10px;
    border: 1px solid rgba(100, 116, 139, 0.18);
    border-radius: 8px;
    background: rgba(248, 250, 252, 0.96);
    color: var(--ink-600);
    font-size: 12px;
    font-weight: 800;
    white-space: nowrap;
}

.daily-flow-status--draft {
    border-color: rgba(220, 38, 38, 0.2);
    background: rgba(254, 242, 242, 0.95);
    color: #dc2626;
}

.daily-flow-status--submitted {
    border-color: rgba(180, 83, 9, 0.22);
    background: rgba(255, 251, 235, 0.95);
    color: #b45309;
}

.daily-flow-status--locked {
    border-color: rgba(13, 148, 136, 0.22);
    background: rgba(240, 253, 250, 0.95);
    color: #0f766e;
}

.daily-flow-step-action {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
    justify-content: flex-end;
    min-width: 0;
}

.daily-flow-step-status-wrap {
    display: inline-flex;
}

.daily-flow-step--period-selector .daily-flow-step-action {
    justify-content: flex-start;
}

.daily-flow-period-add {
    display: grid;
    grid-template-columns: minmax(260px, 460px) max-content;
    gap: 10px;
    align-items: start;
    justify-content: start;
    width: min(640px, 100%);
    min-width: 0;
}

.daily-flow-course-picker {
    display: flex;
    flex-direction: column;
    gap: 6px;
    min-width: 0;
}

.daily-flow-period-add .form-control {
    width: 100%;
    min-width: 0;
    min-height: 40px;
}

.daily-flow-course-select,
.daily-flow-course-select option {
    font-family: "BIZ UDGothic", "Yu Gothic", "Meiryo", ui-monospace, SFMono-Regular, Consolas, monospace;
}

.daily-flow-course-detail {
    min-height: 1.4em;
    color: var(--muted-500);
    font-size: 12px;
    line-height: 1.4;
}

.daily-flow-course-detail.has-course-detail {
    color: var(--ink-700);
    font-weight: 700;
}

.daily-flow-period-add .btn {
    min-width: 116px;
    padding-right: 16px;
    padding-left: 16px;
}

.daily-flow-period-picker {
    flex: 0 0 auto;
    display: grid;
    grid-template-columns: auto 150px;
    align-items: center;
    gap: 6px;
    min-width: 0;
}

.daily-flow-period-picker label {
    color: var(--ink-600);
    font-size: 12px;
    font-weight: 800;
}

.daily-flow-period-picker .form-control {
    box-sizing: border-box;
    width: 150px;
    min-width: 0;
    max-width: 150px;
    min-height: 40px;
    padding-top: 6px;
    padding-bottom: 6px;
}

.daily-flow-action-buttons {
    flex: 0 0 auto;
    display: flex;
    gap: 8px;
    align-items: center;
    justify-content: flex-end;
    flex-wrap: wrap;
    white-space: nowrap;
}

.daily-flow-step-action .btn {
    min-height: 40px;
}

.daily-flow-submit-direct {
    min-height: 34px !important;
    padding: 7px 14px;
    font-size: 12px;
}

.daily-flow-cancel-added {
    min-height: 34px !important;
    padding: 7px 12px;
    border-color: rgba(220, 38, 38, 0.26);
    background: rgba(255, 255, 255, 0.88);
    color: #b91c1c;
    font-size: 12px;
}

.daily-flow-cancel-added:hover,
.daily-flow-cancel-added:focus-visible {
    border-color: rgba(220, 38, 38, 0.42);
    background: rgba(254, 242, 242, 0.94);
    color: #991b1b;
}

.daily-flow-cancel-blocked {
    display: inline-flex;
    min-height: 34px;
    align-items: center;
    justify-content: center;
    min-width: 82px;
    padding: 6px 12px;
    border: 1px solid rgba(180, 83, 9, 0.24);
    border-radius: 8px;
    background: rgba(255, 251, 235, 0.92);
    color: #92400e;
    font-size: 12px;
    font-weight: 800;
    line-height: 1.35;
    text-align: center;
    white-space: nowrap;
}

.daily-flow-inline-editor {
    border-color: rgba(13, 148, 136, 0.22);
    scroll-margin-top: 18px;
    transition: border-color 180ms ease, box-shadow 180ms ease;
}

.daily-flow-list > .daily-flow-inline-editor {
    margin: 0;
}

.daily-flow-inline-editor.is-focus-target {
    border-color: rgba(37, 99, 235, 0.42);
    box-shadow: 0 18px 44px rgba(37, 99, 235, 0.16);
}

.daily-flow-inline-head {
    display: flex;
    align-items: flex-start;
}

.daily-flow-inline-head > :first-child {
    flex: 1 1 320px;
}

.daily-flow-inline-head-actions {
    flex: 0 0 auto;
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 12px;
    min-width: 0;
}

.daily-flow-inline-head-actions .btn {
    min-height: 40px;
    white-space: nowrap;
}

.daily-flow-inline-label {
    display: inline-flex;
    margin-bottom: 6px;
    padding: 4px 8px;
    border-radius: 8px;
    background: rgba(13, 148, 136, 0.1);
    color: #0f766e;
    font-size: 12px;
    font-weight: 800;
}

.daily-flow-inline-status {
    display: inline-flex;
    min-height: 40px;
    align-items: center;
    justify-content: flex-end;
    gap: 8px;
    color: var(--ink-600);
    font-size: 12px;
    font-weight: 700;
}

.daily-flow-inline-status > span:first-child {
    line-height: 1;
    white-space: nowrap;
}

.daily-flow-inline-bulkbar {
    position: static;
    z-index: auto;
    align-items: center;
    justify-content: flex-start;
    gap: 10px;
    width: 100%;
    margin: 10px 0 2px;
    padding: 10px 12px;
    border: 1px solid rgba(148, 163, 184, 0.28);
    border-radius: 10px;
    background: #f8fafc;
    box-shadow: none;
}

.daily-flow-inline-bulkbar .attendance-editor-actions-group {
    flex-wrap: wrap;
}

.daily-flow-inline-bulkbar .btn {
    min-height: 40px;
}

.daily-flow-inline-savebar {
    position: sticky;
    right: auto;
    bottom: 0;
    left: auto;
    z-index: 40;
    align-items: center;
    justify-content: space-between;
    gap: 12px 18px;
    width: calc(100% + 40px);
    max-width: none;
    margin: 16px -20px -18px;
    padding: 12px 20px max(12px, env(safe-area-inset-bottom));
    border: 0;
    border-top: 1px solid rgba(148, 163, 184, 0.38);
    border-radius: 0 0 var(--radius-lg) var(--radius-lg);
    background: #ffffff;
    box-shadow: 0 -12px 30px rgba(15, 23, 42, 0.14);
}

.daily-flow-inline-savebar .attendance-editor-actions-group {
    flex: 0 0 auto;
    flex-wrap: nowrap;
}

.daily-flow-inline-savebar .btn {
    min-height: 42px;
    white-space: nowrap;
}

.daily-flow-inline-save-state,
.daily-flow-inline-save-status,
.daily-flow-save-state {
    flex: 1 1 240px;
    min-width: 0;
    color: var(--ink-600);
    font-size: 13px;
    font-weight: 700;
    line-height: 1.5;
}

.daily-flow-inline-save-state.is-dirty,
.daily-flow-inline-save-status.is-dirty,
.daily-flow-save-state.is-dirty {
    color: #b45309;
}

.daily-flow-inline-save-state.is-saved,
.daily-flow-inline-save-status.is-saved,
.daily-flow-save-state.is-saved {
    color: #047857;
}

.daily-flow-step.is-inline-open .daily-flow-action-buttons {
    display: none;
}

.daily-flow-inline-editor .table-shell {
    padding-bottom: calc(86px + env(safe-area-inset-bottom));
}

.daily-flow-inline-grid {
    margin-top: 12px;
}

@media (min-width: 761px) and (max-width: 960px) {
    .daily-flow-filter {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .daily-flow-filter .btn {
        grid-column: 1 / -1;
        width: 100%;
        justify-self: stretch;
    }

    .daily-flow-step,
    .daily-flow-step--period-selector {
        grid-template-columns: minmax(72px, 96px) minmax(0, 1fr);
    }

    .daily-flow-step:not(.daily-flow-step--period-add-form) > .daily-flow-step-marker {
        grid-column: 1;
        grid-row: 1 / span 2;
    }

    .daily-flow-step:not(.daily-flow-step--period-add-form) > .daily-flow-step-body {
        grid-column: 2;
        grid-row: 1;
    }

    .daily-flow-step:not(.daily-flow-step--period-add-form) > .daily-flow-step-action {
        grid-column: 2;
        grid-row: 2;
        justify-content: flex-start;
    }

    .daily-flow-period-section .daily-flow-step--registered,
    .daily-flow-period-section .daily-flow-step--candidate:not(.daily-flow-step--period-add-form) {
        grid-template-columns: minmax(0, 1fr);
    }

    .daily-flow-period-section .daily-flow-step--registered .daily-flow-step-action,
    .daily-flow-period-section .daily-flow-step--candidate:not(.daily-flow-step--period-add-form) .daily-flow-step-action {
        grid-column: 1;
        grid-row: 2;
        justify-content: flex-start;
    }

    .daily-flow-period-section .daily-flow-step--registered .daily-flow-step-body,
    .daily-flow-period-section .daily-flow-step--candidate:not(.daily-flow-step--period-add-form) .daily-flow-step-body {
        grid-column: 1;
        grid-row: 1;
    }
}

@media (max-width: 760px) {
    .daily-flow-step {
        grid-template-columns: 1fr;
        align-items: stretch;
    }

    .daily-flow-filter {
        grid-template-columns: 1fr;
    }

    .daily-flow-filter .btn {
        width: 100%;
        justify-self: stretch;
    }

    .daily-flow-progress {
        gap: 6px;
        padding: 8px;
    }

    .daily-flow-progress-chip {
        flex: 1 1 132px;
    }

    .daily-flow-step-marker {
        justify-content: flex-start;
    }

    .daily-flow-step-head {
        flex-direction: column;
    }

    .daily-flow-status {
        width: auto;
        min-width: 78px;
    }

    .daily-flow-create-actions,
    .daily-flow-step-action {
        align-items: stretch;
        flex-direction: column;
        justify-content: stretch;
    }

    .daily-flow-period-picker {
        grid-template-columns: 1fr;
        width: 100%;
    }

    .daily-flow-period-picker .form-control {
        width: 100%;
        max-width: none;
    }

    .daily-flow-period-add {
        grid-template-columns: 1fr;
        width: 100%;
    }

    .daily-flow-period-section {
        padding: 10px;
    }

    .daily-flow-period-section-head {
        align-items: flex-start;
        flex-direction: column;
        gap: 6px;
    }

    .daily-flow-period-section-hint {
        white-space: normal;
    }

    .daily-flow-period-section .daily-flow-step--registered,
    .daily-flow-period-section .daily-flow-step--candidate:not(.daily-flow-step--period-add-form),
    .daily-flow-period-section .daily-flow-step--period-add-form {
        grid-template-columns: 1fr;
    }

    .daily-flow-period-section .daily-flow-step--period-add-form .daily-flow-period-add {
        grid-template-columns: 1fr;
    }

    .daily-flow-action-buttons {
        display: grid;
        grid-template-columns: 1fr;
        width: 100%;
    }

    .daily-flow-step-action .daily-flow-status,
    .daily-flow-create-actions .btn,
    .daily-flow-step-action .btn {
        width: 100%;
    }

    .daily-flow-inline-head {
        display: grid;
        gap: 12px;
    }

    .daily-flow-inline-head-actions {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        align-items: center;
        justify-content: stretch;
        gap: 8px;
        width: 100%;
    }

    .daily-flow-inline-head-actions .daily-flow-inline-status {
        grid-column: 1 / -1;
        display: flex;
        align-items: center;
        justify-content: space-between;
        width: 100%;
    }

    .daily-flow-inline-head-actions .btn {
        width: 100%;
        padding-right: 10px;
        padding-left: 10px;
    }

    .daily-flow-inline-bulkbar {
        align-items: stretch;
        flex-direction: column;
        justify-content: stretch;
        width: 100%;
    }

    .daily-flow-inline-bulkbar .attendance-editor-actions-group,
    .daily-flow-inline-bulkbar .btn {
        width: 100%;
    }

    .daily-flow-inline-bulkbar .attendance-editor-actions-group {
        display: flex;
        flex-direction: column;
        align-items: stretch;
    }

    .daily-flow-inline-bulkbar .daily-flow-context {
        margin-top: 0;
        font-size: 13px;
    }

    .daily-flow-inline-savebar {
        align-items: stretch;
        flex-direction: column;
        width: calc(100% + 40px);
        gap: 10px;
        padding-top: 10px;
    }

    .daily-flow-inline-savebar .attendance-editor-actions-group {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 8px;
        width: 100%;
    }

    .daily-flow-inline-savebar .attendance-editor-actions-group .btn {
        width: 100%;
        padding-right: 12px;
        padding-left: 12px;
    }

    .daily-flow-inline-save-state,
    .daily-flow-inline-save-status,
    .daily-flow-save-state {
        flex-basis: auto;
    }

    .daily-flow-inline-editor .table-shell {
        padding-bottom: calc(128px + env(safe-area-inset-bottom));
    }
}

.grade-entry-mobile-only-cell {
    display: none;
}

.grade-entry-mobile-toggle {
    width: 100%;
}

.student-name {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.student-name-with-avatar {
    display: flex;
    align-items: center;
    gap: 10px;
}

.avatar-stack {
    position: relative;
    flex: 0 0 auto;
    display: inline-block;
}

.avatar-stack--sm {
    width: 36px;
    height: 36px;
}

.avatar-stack--lg {
    width: 88px;
    height: 88px;
}

.avatar-stack .mock-avatar {
    position: absolute;
    top: 0;
    left: 0;
}

.avatar-img {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    border-radius: 50%;
    object-fit: cover;
    z-index: 1;
    border: 1px solid rgba(71, 85, 105, 0.18);
    background: #fff;
}

.mock-avatar {
    position: relative;
    flex: 0 0 auto;
    width: 48px;
    height: 48px;
    border-radius: 50%;
    border: 1px solid rgba(71, 85, 105, 0.18);
    background: linear-gradient(145deg, #e2e8f0, #cbd5e1);
    box-shadow: inset 0 1px 2px rgba(255, 255, 255, 0.45);
}

.mock-avatar::before {
    content: "";
    position: absolute;
    top: 10px;
    left: 50%;
    width: 14px;
    height: 14px;
    border-radius: 50%;
    transform: translateX(-50%);
    background: #94a3b8;
}

.mock-avatar::after {
    content: "";
    position: absolute;
    left: 50%;
    bottom: 8px;
    width: 24px;
    height: 14px;
    border-radius: 14px 14px 10px 10px;
    transform: translateX(-50%);
    background: #94a3b8;
}

.mock-avatar--sm {
    width: 36px;
    height: 36px;
}

.mock-avatar--sm::before {
    top: 7px;
    width: 10px;
    height: 10px;
}

.mock-avatar--sm::after {
    bottom: 6px;
    width: 18px;
    height: 10px;
}

.mock-avatar--lg {
    width: 88px;
    height: 88px;
}

.mock-avatar--lg::before {
    top: 18px;
    width: 24px;
    height: 24px;
}

.mock-avatar--lg::after {
    bottom: 14px;
    width: 44px;
    height: 24px;
}

.student-profile-head {
    display: flex;
    align-items: flex-start;
    gap: 16px;
    flex-wrap: wrap;
    margin-bottom: 12px;
}

.student-profile-head .student-profile-meta {
    margin-bottom: 0;
    flex: 1 1 420px;
}

.student-profile-head--compact {
    gap: 14px;
    margin-bottom: 0;
}

.student-profile-head--compact .student-profile-meta {
    flex: 1 1 0;
    min-width: 0;
}

.student-profile-title {
    margin-bottom: 8px;
}

.student-profile-name-row {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 10px;
}

.student-profile-name {
    font-size: 22px;
    font-weight: 700;
    color: var(--ink-900);
    line-height: 1.2;
    letter-spacing: 0.02em;
}

.student-profile-kana-inline {
    font-size: 12px;
    font-weight: 600;
    color: var(--muted-500);
    letter-spacing: 0.04em;
    line-height: 1.2;
}

.student-profile-kana-inline:empty {
    display: none;
}

.student-profile-romaji-inline {
    margin-top: 4px;
    font-size: 12px;
    color: var(--muted-500);
}

.student-profile-romaji-inline:empty {
    display: none;
}

.student-summary-kv-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
    gap: 12px;
    margin-top: 10px;
}

.student-summary-kv-grid .kv {
    margin: 0;
}

.student-profile-sub {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin-top: 6px;
    font-size: 12px;
    color: var(--muted-500);
}

.student-profile-kana,
.student-profile-romaji {
    display: inline-flex;
    align-items: center;
    padding: 2px 10px;
    border-radius: 999px;
    border: 1px solid var(--line-200);
    background: rgba(255, 255, 255, 0.85);
}

.kv-grid {
    margin: 10px 0 12px;
}

.kv {
    border-radius: var(--radius-md);
    border: 1px solid var(--line-200);
    background: rgba(255, 255, 255, 0.85);
    padding: 10px 12px;
    box-shadow: 0 10px 18px rgba(15, 23, 42, 0.06);
}

.kv-full {
    grid-column: 1 / -1;
}

.kv-label {
    font-size: 11px;
    color: var(--muted-500);
    letter-spacing: 0.04em;
    text-transform: uppercase;
}

.kv-label--keep-case {
    text-transform: none;
}

.kv-value {
    margin-top: 3px;
    font-size: 14px;
    font-weight: 600;
    color: var(--ink-900);
    word-break: break-word;
}

.public-profile-student-switcher {
    margin-bottom: 16px;
}

.public-profile-student-switcher .form-row {
    max-width: 560px;
    margin-bottom: 0;
}

.public-profile-reference-line {
    display: flex;
    justify-content: flex-end;
    margin: -2px 2px 10px;
    color: var(--muted-500);
    font-size: 13px;
    font-weight: 700;
}

.public-profile-priority-grid {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 16px;
    align-items: start;
    margin-bottom: 16px;
}

.public-profile-priority-grid > .card {
    margin-top: 0;
    margin-bottom: 0;
    height: auto;
}

.public-profile-overview-card {
    padding-top: 16px;
    padding-bottom: 16px;
}

.public-profile-overview-card .student-profile-head {
    align-items: center;
    gap: 18px;
    height: auto;
}

.public-profile-overview-card .student-profile-head--compact .student-profile-meta {
    display: grid;
    grid-template-columns: minmax(170px, 0.34fr) minmax(0, 1fr);
    gap: 14px 18px;
    align-items: center;
}

.public-profile-overview-card .student-profile-title {
    margin-bottom: 0;
}

.public-profile-overview-card .student-summary-kv-grid {
    grid-template-columns: repeat(6, minmax(112px, 1fr));
    gap: 10px;
    margin-top: 0;
}

.public-profile-overview-card .kv {
    padding: 9px 12px;
}

.public-contact-summary-card--priority {
    margin-top: 0;
}

.public-contact-summary-card--priority .public-course-summary-head {
    margin-bottom: 12px;
}

.public-contact-kv-grid {
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: 10px;
}

.public-contact-kv {
    min-width: 0;
}

.public-contact-kv--wide {
    grid-column: 1 / -1;
}

.public-profile-value-with-state {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 6px;
    min-width: 0;
}

.public-profile-value-text {
    min-width: 0;
    overflow-wrap: anywhere;
}

.public-profile-value-state {
    display: inline-flex;
    align-items: center;
    width: fit-content;
    max-width: 100%;
    min-height: 24px;
    padding: 3px 8px;
    border-radius: 6px;
    border: 1px solid rgba(100, 116, 139, 0.22);
    background: rgba(248, 250, 252, 0.96);
    color: var(--ink-700);
    font-size: 12px;
    font-weight: 800;
    line-height: 1.2;
}

.public-profile-value-state--empty {
    background: rgba(248, 250, 252, 0.96);
    color: var(--muted-500);
}

.public-profile-value-state--masked {
    border-color: rgba(37, 99, 235, 0.24);
    background: rgba(239, 246, 255, 0.95);
    color: var(--primary-700);
}

.public-profile-value-state--private {
    border-color: rgba(217, 119, 6, 0.24);
    background: rgba(255, 251, 235, 0.96);
    color: #92400e;
}

.public-profile-value-state--neutral {
    border-color: rgba(148, 163, 184, 0.22);
    background: rgba(241, 245, 249, 0.9);
    color: var(--ink-600);
}

.public-course-summary-card {
    margin-top: 16px;
}

.public-course-summary-card--priority {
    display: flex;
    flex-direction: column;
}

.public-course-summary-card--priority .public-course-summary-head {
    align-items: flex-start;
    gap: 14px;
    margin-bottom: 16px;
}

.public-course-summary-card--priority .public-course-summary-copy h2 {
    font-size: 22px;
}

.public-course-summary-card--priority .public-course-summary-stat {
    min-width: 124px;
}

.public-course-summary-card--priority .public-course-summary-stat__value {
    font-size: 24px;
}

.public-course-summary-card--priority .public-course-category-list {
    grid-template-columns: repeat(auto-fit, minmax(340px, 1fr));
    align-items: start;
}

.public-course-summary-card--priority .public-course-card-list {
    grid-template-columns: repeat(auto-fit, minmax(210px, 1fr));
}

.public-course-disclosure {
    border-radius: var(--radius-lg);
    border: 1px solid var(--line-200);
    background: rgba(255, 255, 255, 0.88);
    overflow: hidden;
}

.public-course-disclosure summary {
    min-height: 50px;
    padding: 12px 14px;
    cursor: pointer;
    list-style: none;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    color: var(--ink-900);
    font-size: 14px;
    font-weight: 700;
}

.public-course-disclosure summary:hover,
.public-course-disclosure summary:focus-visible {
    background: rgba(37, 99, 235, 0.06);
}

.public-course-disclosure summary:focus-visible {
    outline: 2px solid rgba(37, 99, 235, 0.35);
    outline-offset: -2px;
}

.public-course-disclosure summary::-webkit-details-marker {
    display: none;
}

.public-course-disclosure summary::after {
    content: "v";
    width: 28px;
    height: 28px;
    border-radius: 999px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 28px;
    background: var(--surface-2);
    color: var(--muted-500);
    font-size: 12px;
    transition: transform 180ms ease;
}

.public-course-disclosure[open] summary::after {
    transform: rotate(180deg);
}

.public-course-disclosure__text {
    min-width: 0;
}

.public-course-disclosure__text--open {
    display: none;
}

.public-course-disclosure[open] .public-course-disclosure__text--closed {
    display: none;
}

.public-course-disclosure[open] .public-course-disclosure__text--open {
    display: inline;
}

.public-course-disclosure__body {
    padding: 14px;
    border-top: 1px solid var(--line-200);
}

.public-course-disclosure:not([open]) > .public-course-disclosure__body {
    display: none;
}

.public-course-summary-head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 18px;
    margin-bottom: 16px;
}

.public-course-summary-copy h2 {
    margin: 0;
    font-size: 22px;
    color: var(--ink-900);
}

.public-course-summary-lead {
    margin: 6px 0 0;
    font-size: 13px;
    color: var(--muted-500);
}

.public-course-summary-stats {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
}

.public-course-summary-stat {
    min-width: 120px;
    padding: 12px 14px;
    border-radius: var(--radius-md);
    border: 1px solid var(--line-200);
    background: linear-gradient(135deg, rgba(59, 130, 246, 0.08), rgba(14, 165, 233, 0.03));
    box-shadow: 0 10px 22px rgba(15, 23, 42, 0.05);
}

.public-course-summary-stat__label {
    font-size: 11px;
    color: var(--muted-500);
    letter-spacing: 0.04em;
}

.public-course-summary-stat__value {
    margin-top: 4px;
    font-size: 24px;
    font-weight: 700;
    color: var(--ink-900);
}

.public-course-category-list {
    display: grid;
    gap: 14px;
}

.public-course-category-block {
    border-radius: var(--radius-lg);
    border: 1px solid var(--line-200);
    background: linear-gradient(180deg, rgba(248, 250, 252, 0.96), rgba(255, 255, 255, 0.98));
    box-shadow: 0 12px 28px rgba(15, 23, 42, 0.06);
    padding: 14px;
}

.public-course-category-head {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 10px;
}

.public-course-category-head h3 {
    margin: 0;
    font-size: 17px;
    color: var(--ink-900);
}

.public-course-category-summary {
    font-size: 12px;
    color: var(--muted-500);
    white-space: nowrap;
}

.public-course-card-list {
    display: grid;
    gap: 10px;
}

.public-course-card {
    border-radius: var(--radius-md);
    border: 1px solid var(--line-200);
    background: rgba(255, 255, 255, 0.95);
    padding: 12px 14px;
}

.public-course-card__subject {
    font-size: 15px;
    font-weight: 700;
    color: var(--ink-900);
}

.public-course-card__sub {
    margin-top: 5px;
    font-size: 12px;
    color: var(--muted-500);
}

.public-course-card__meta {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-top: 10px;
}

.public-course-badge {
    display: inline-flex;
    align-items: center;
    min-height: 28px;
    padding: 0 10px;
    border-radius: 999px;
    background: rgba(37, 99, 235, 0.1);
    color: var(--primary-700);
    font-size: 12px;
    font-weight: 700;
}

.public-course-badge--muted {
    background: var(--surface-2);
    color: var(--ink-700);
    font-weight: 600;
}

.public-course-summary-empty {
    margin-top: 4px;
}

@media (max-width: 768px) {
    .public-profile-reference-line {
        justify-content: flex-start;
        margin-left: 0;
        margin-right: 0;
    }

    .public-profile-overview-card .student-profile-head--compact {
        flex-direction: column;
        align-items: flex-start;
    }

    .public-profile-overview-card .student-profile-head--compact .student-profile-meta {
        display: block;
        width: 100%;
        flex-basis: auto;
    }

    .public-profile-overview-card .student-profile-title {
        margin-bottom: 8px;
    }

    .public-course-summary-head,
    .public-course-category-head {
        flex-direction: column;
        align-items: flex-start;
    }

    .public-course-summary-stats {
        width: 100%;
    }

    .public-course-summary-stat {
        flex: 1 1 120px;
        min-width: 0;
    }

    .public-contact-kv-grid {
        grid-template-columns: minmax(0, 1fr);
    }

    .public-course-summary-card--priority .public-course-category-list,
    .public-course-summary-card--priority .public-course-card-list {
        grid-template-columns: minmax(0, 1fr);
    }

    .public-course-category-summary {
        white-space: normal;
    }
}

@media (max-width: 1180px) {
    .public-profile-overview-card .student-profile-head--compact .student-profile-meta {
        grid-template-columns: minmax(0, 1fr);
    }

    .public-profile-overview-card .student-profile-title {
        margin-bottom: 4px;
    }

    .public-profile-overview-card .student-summary-kv-grid {
        grid-template-columns: repeat(auto-fit, minmax(132px, 1fr));
    }
}

.detail-accordion {
    border-radius: var(--radius-md);
    border: 1px solid var(--line-200);
    background: rgba(255, 255, 255, 0.85);
    overflow: hidden;
}

.detail-accordion summary {
    cursor: pointer;
    padding: 10px 12px;
    font-size: 13px;
    font-weight: 700;
    color: var(--ink-800);
    background: var(--surface-2);
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
}

.detail-accordion summary::-webkit-details-marker {
    display: none;
}

.detail-accordion summary::after {
    content: "v";
    color: var(--muted-500);
    transition: transform 180ms ease;
}

.detail-accordion[open] summary::after {
    transform: rotate(180deg);
}

.detail-accordion > :not(summary) {
    padding: 12px;
}

.text-muted {
    color: var(--muted-500);
    font-size: 13px;
}

.text-success {
    color: #0f766e;
}

.student-name-kana {
    font-size: 11px;
    color: var(--muted-500);
    line-height: 1.2;
    letter-spacing: 0.06em;
    white-space: nowrap;
}

.student-name-main {
    font-size: 14px;
    font-weight: 600;
    color: var(--ink-900);
    line-height: 1.3;
    white-space: nowrap;
}

.student-list-desktop {
    display: block;
}

.student-search-actions {
    justify-content: space-between;
}

.student-search-actions-group {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
}

.student-search-actions-group--secondary {
    margin-left: auto;
    justify-content: flex-end;
}

.student-view-switch {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    margin: 0 0 14px;
    padding: 4px;
    border: 1px solid var(--line-200);
    border-radius: 999px;
    background: var(--surface-1);
}

.student-view-switch__item {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 34px;
    padding: 0 14px;
    border-radius: 999px;
    color: var(--ink-600);
    font-size: 13px;
    font-weight: 700;
    text-decoration: none;
    white-space: nowrap;
}

.student-view-switch__item:hover,
.student-view-switch__item:focus {
    color: var(--brand-600);
    text-decoration: none;
}

.student-view-switch__item.is-active {
    color: #ffffff;
    background: var(--brand-600);
    box-shadow: 0 6px 14px rgba(42, 91, 215, 0.16);
}

.teacher-search-actions {
    justify-content: flex-start;
}

.student-list-mobile {
    display: none;
}

.teacher-list-desktop {
    display: block;
}

.teacher-list-mobile {
    display: none;
}

.student-list-card {
    border-radius: var(--radius-md);
    border: 1px solid var(--line-200);
    background: rgba(255, 255, 255, 0.92);
    padding: 12px;
    box-shadow: 0 10px 18px rgba(15, 23, 42, 0.06);
}

.student-list-card + .student-list-card {
    margin-top: 12px;
}

.student-list-card-head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 10px;
}

.student-list-card-status {
    display: inline-flex;
    align-items: center;
    border-radius: 999px;
    border: 1px solid rgba(42, 91, 215, 0.22);
    background: rgba(42, 91, 215, 0.08);
    color: var(--brand-600);
    padding: 3px 8px;
    font-size: 11px;
    font-weight: 700;
    white-space: nowrap;
}

.student-list-card-kv {
    margin: 10px 0 0;
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 8px 12px;
}

.student-list-card-kv dt {
    font-size: 11px;
    color: var(--muted-500);
    letter-spacing: 0.04em;
}

.student-list-card-kv dd {
    margin: 2px 0 0;
    font-size: 13px;
    font-weight: 700;
    color: var(--ink-800);
    word-break: break-word;
}

.student-list-card-kv__wide {
    grid-column: 1 / -1;
}

.student-list-card-actions {
    margin-top: 12px;
    display: flex;
    gap: 8px;
}

.student-list-card-actions .btn {
    flex: 1 1 0;
}

.course-category {
    margin-bottom: 12px;
}

.course-order-card .card-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px 16px;
    flex-wrap: wrap;
    margin-bottom: 10px;
}

.course-order-toolbar {
    display: flex;
    align-items: stretch;
    justify-content: flex-end;
    gap: 8px;
    flex-wrap: wrap;
}

.course-order-toolbar > .btn,
.course-order-toolbar > a.btn,
.course-order-toolbar > button,
.course-order-toolbar > .course-quick-filters {
    flex: 0 0 auto;
}

.course-order-toolbar > .btn,
.course-order-toolbar > a.btn,
.course-order-toolbar > button,
.course-order-toolbar > .course-quick-filters .btn,
.course-order-toolbar > .course-quick-filters a.btn {
    min-height: 42px;
    padding: 10px 16px;
    white-space: nowrap;
}

.course-page-actions {
    width: auto;
}

.course-order-save,
.course-order-cancel {
    display: none;
}

.course-quick-filters {
    display: flex;
    align-items: stretch;
    gap: 8px;
    margin: 0;
    min-width: 0;
}

.course-quick-filter {
    min-width: 0;
}

.course-quick-filter.is-active {
    color: #ffffff;
    border-color: rgba(42, 91, 215, 0.0);
    background: linear-gradient(135deg, rgba(42, 91, 215, 0.95), rgba(59, 114, 240, 0.88));
}

.course-quick-filter.is-active:hover,
.course-quick-filter.is-active:focus {
    color: #ffffff;
    border-color: rgba(42, 91, 215, 0.0);
    background: linear-gradient(135deg, rgba(38, 81, 191, 0.96), rgba(56, 106, 224, 0.9));
}

.course-filter-accordion {
    margin: 8px 0 10px;
    border-color: rgba(153, 173, 201, 0.32);
    background: rgba(255, 255, 255, 0.86);
    box-shadow: none;
}

.course-filter-accordion summary {
    padding: 10px 12px;
    background: rgba(247, 250, 255, 0.9);
}

.course-filter-accordion[open] summary {
    border-bottom: 1px solid rgba(153, 173, 201, 0.22);
}

.course-filter-accordion > :not(summary) {
    padding: 10px 12px 8px;
}

.course-filter-strip {
    flex: 1 1 auto;
    min-width: 0;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
}

.course-filter-strip-main {
    min-width: 0;
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
}

.course-filter-strip-summary-group {
    min-width: 0;
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}

.course-filter-strip-label {
    font-size: 12px;
    font-weight: 800;
    color: var(--ink-900);
    letter-spacing: 0.02em;
}

.course-filter-summary-text {
    font-size: 13px;
    font-weight: 700;
    color: var(--ink-800);
}

.course-filter-strip-badges {
    display: inline-flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 6px;
}

.course-filter-strip-badges:empty {
    display: none;
}

.course-filter-badge {
    display: inline-flex;
    align-items: center;
    min-height: 24px;
    padding: 2px 8px;
    border-radius: 999px;
    border: 1px solid rgba(70, 115, 230, 0.14);
    background: rgba(70, 115, 230, 0.06);
    color: var(--brand-700);
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.01em;
}

.course-filter-toggle-text {
    flex: 0 0 auto;
    font-size: 12px;
    font-weight: 700;
    color: var(--brand-700);
    white-space: nowrap;
}

.course-filter-body {
    display: grid;
    gap: 10px;
}

.course-filter-options {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
}

.course-filter-check {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    min-width: 0;
    color: var(--ink-800);
    font-size: 13px;
    font-weight: 700;
}

.course-filter-check input {
    margin: 0;
    accent-color: var(--brand-600);
}

.course-filter-check label {
    margin: 0;
    cursor: pointer;
}

.course-filter-grid {
    margin-bottom: 0;
    gap: 10px 12px;
}

.course-filter-actions {
    justify-content: flex-start;
    gap: 8px;
}

.course-category-list {
    display: block;
}

.course-order-controls {
    display: none;
    align-items: center;
    gap: 4px;
}

.course-order-control {
    min-width: 28px;
    height: 28px;
    padding: 0 8px;
    border: 1px solid var(--line-300);
    border-radius: var(--radius-sm);
    background: #fff;
    color: var(--ink-700);
    font-size: 12px;
    font-weight: 700;
    line-height: 1;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.course-order-control:hover,
.course-order-control:focus {
    border-color: var(--brand-300);
    color: var(--brand-700);
    outline: none;
}

.course-order-handle {
    cursor: grab;
}

.course-order-editing .course-category[data-category-editable='1'] > summary .course-category-order-controls {
    display: inline-flex;
}

.course-order-editing .course-item[data-course-editable='1'] .course-item-order-controls {
    display: inline-flex;
}

.course-order-editing .course-item-attendance {
    pointer-events: none;
    opacity: 0.45;
}

.course-category.is-dragging,
.course-item.is-dragging {
    opacity: 0.55;
}

.course-category > summary {
    display: flex;
    align-items: center;
    gap: 10px;
}

.course-category-title {
    font-weight: 800;
    flex: 1 1 auto;
}

.course-category-meta {
    display: inline-flex;
    align-items: center;
    gap: 10px;
}

.course-items {
    display: grid;
    gap: 10px;
}

.course-item {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr) minmax(0, auto);
    gap: 8px 12px;
    padding: 10px 12px;
    border-radius: var(--radius-md);
    border: 1px solid var(--line-200);
    background: rgba(255, 255, 255, 0.92);
    box-shadow: 0 10px 18px rgba(15, 23, 42, 0.05);
    align-items: start;
}

.course-item-main {
    grid-column: 2 / 3;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.course-item-name {
    font-size: 14px;
    font-weight: 800;
    color: var(--ink-900);
    line-height: 1.35;
    margin: 0;
}

.course-item-actions {
    grid-column: 3 / 4;
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    justify-content: flex-end;
    align-items: center;
    align-content: flex-start;
    align-self: start;
}

.course-item-actions br {
    display: none;
}

.course-item-order-controls {
    grid-column: 1 / 2;
    grid-row: 1 / 2;
    align-self: start;
    margin-top: 2px;
}

.course-item-actions .btn {
    padding: 6px 10px;
    font-size: 12px;
    letter-spacing: 0.02em;
    min-width: 74px;
    justify-content: center;
}

.course-item-target,
.course-item-meta,
.course-item-instructors {
    font-size: 12px;
    color: var(--muted-500);
    line-height: 1.35;
    word-break: break-word;
}

.course-item-attendance-summary {
    margin-top: 2px;
    font-size: 12px;
    font-weight: 600;
    color: var(--ink-700);
    line-height: 1.35;
    word-break: break-word;
}

.course-item-instructors {
    margin-top: 2px;
}

.course-item-instructors a.course-instructor-link {
    color: var(--brand-600);
    font-weight: 700;
    text-decoration: none;
}

.course-item-instructors a.course-instructor-link:hover,
.course-item-instructors a.course-instructor-link:focus {
    text-decoration: underline;
}

.course-item-attendance.is-disabled {
    pointer-events: none;
    opacity: 0.45;
}

.course-order-editor {
    position: relative;
}

.course-order-editor .course-order-editor-dirty {
    display: none;
    align-items: center;
    padding: 4px 10px;
    border-radius: 999px;
    border: 1px solid #f3c4a8;
    background: #fff5ef;
    color: #9f3f1d;
    font-size: 12px;
    font-weight: 700;
}

.course-order-editor.has-dirty .course-order-editor-dirty {
    display: inline-flex;
}

.course-order-editor-workspace {
    display: grid;
    grid-template-columns: minmax(260px, 300px) minmax(0, 1fr);
    gap: 14px;
}

.course-order-editor-side {
    border: 1px solid var(--line-200);
    border-radius: var(--radius-md);
    background: rgba(255, 255, 255, 0.92);
    padding: 10px;
    position: sticky;
    top: 108px;
    align-self: start;
}

.course-order-editor-side-title {
    margin: 0 0 8px;
    font-size: 13px;
    color: var(--ink-800);
}

.course-order-editor-category-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.course-order-editor-category {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 8px;
    align-items: center;
    padding: 8px;
    border-radius: 12px;
    border: 1px solid var(--line-200);
    background: #fff;
}

.course-order-editor-category.is-active {
    border-color: rgba(42, 91, 215, 0.35);
    box-shadow: 0 6px 14px rgba(42, 91, 215, 0.12);
}

.course-order-editor-category-label {
    border: 0;
    background: transparent;
    text-align: left;
    display: inline-flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    width: 100%;
    color: var(--ink-900);
    font-weight: 700;
    cursor: pointer;
    min-height: 40px;
}

.course-order-editor-category-label .badge {
    white-space: nowrap;
}

.course-order-editor-category-text {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.course-order-editor-inline-controls {
    display: inline-flex;
    align-items: center;
    gap: 4px;
}

.course-order-editor-control {
    min-width: 32px;
    min-height: 32px;
    border: 1px solid var(--line-300);
    border-radius: var(--radius-sm);
    background: #fff;
    color: var(--ink-700);
    font-size: 13px;
    line-height: 1;
    font-weight: 700;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
}

.course-order-editor-control:hover,
.course-order-editor-control:focus {
    border-color: var(--brand-300);
    color: var(--brand-700);
    outline: none;
}

.course-order-editor-category[data-category-editable='0'] .course-order-editor-inline-controls,
.course-order-editor-course[data-course-editable='0'] .course-order-editor-inline-controls {
    opacity: 0.45;
    pointer-events: none;
}

.course-order-editor[data-can-edit='0'] .course-order-editor-inline-controls {
    display: none;
}

.course-order-editor[data-can-edit='0'] .course-order-editor-savebar {
    display: none;
}

.course-order-editor-course[data-course-editable='0'] .course-order-editor-inline-controls {
    display: none;
}

.course-order-editor-handle {
    cursor: grab;
    user-select: none;
}

.course-order-editor-main {
    min-width: 0;
}

.course-order-editor-panels {
    display: block;
}

.course-order-editor-panel {
    display: none;
    border: 1px solid var(--line-200);
    border-radius: var(--radius-md);
    background: rgba(255, 255, 255, 0.92);
    padding: 12px;
}

.course-order-editor-panel.is-active {
    display: block;
}

.course-order-editor-panel-head {
    margin-bottom: 10px;
}

.course-order-editor-panel-head h3 {
    margin: 0 0 4px;
    font-size: 18px;
}

.course-order-editor-panel-head p {
    margin: 0;
    font-size: 13px;
    color: var(--muted-500);
}

.course-order-editor-course-list {
    display: grid;
    gap: 8px;
}

.course-order-editor-course {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    gap: 8px;
    align-items: center;
    padding: 10px;
    border-radius: 12px;
    border: 1px solid var(--line-200);
    background: #fff;
}

.course-order-editor-course-main {
    min-width: 0;
}

.course-order-editor-course-name {
    font-size: 14px;
    font-weight: 700;
    color: var(--ink-900);
    line-height: 1.4;
}

.course-order-editor-category.is-dragging,
.course-order-editor-course.is-dragging {
    opacity: 0.58;
}

.course-order-editor-savebar {
    margin-top: 14px;
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    align-items: center;
    justify-content: flex-end;
    padding: 10px 0 0;
    border-top: 1px solid var(--line-200);
}

.selector-grid {
    width: 100%;
    border-collapse: separate;
    border-spacing: 0;
}

.selector-grid td {
    padding: 6px 10px;
    vertical-align: top;
}

.selector-grid input[type="checkbox"] {
    margin-right: 8px;
}

.course-student-selector {
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.course-enrollment-settings {
    display: flex;
    flex-wrap: wrap;
    gap: 12px 18px;
    align-items: end;
    margin-bottom: 14px;
    padding: 12px;
    border: 1px solid var(--line-200);
    border-radius: 8px;
    background: var(--surface-1);
}

.course-enrollment-settings .form-field {
    width: min(100%, 520px);
}

.course-enrollment-settings .form-control {
    min-width: 0;
    width: 100%;
}

.field-hint {
    margin: 0;
    color: var(--muted-500);
    font-size: 12px;
    font-weight: 600;
    line-height: 1.45;
    white-space: nowrap;
}

@media (max-width: 720px) {
    .course-enrollment-settings .field-hint {
        white-space: normal;
    }
}

@media (max-width: 720px) {
    .public-emergency-contact-table td:nth-child(1)::before,
    .public-guardian-contact-table td:nth-child(2)::before {
        content: "続柄";
    }

    .public-emergency-contact-table td:nth-child(2)::before,
    .public-guardian-contact-table td:nth-child(5)::before {
        content: "電話";
    }

    .public-guardian-contact-table td:nth-child(1)::before {
        content: "氏名";
    }

    .public-guardian-contact-table td:nth-child(3)::before {
        content: "主";
    }

    .public-guardian-contact-table td:nth-child(4)::before {
        content: "メール";
    }

    .public-guardian-contact-table td:nth-child(6)::before {
        content: "住所";
    }
}

.course-student-selector-tools {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    align-items: flex-end;
    justify-content: space-between;
    padding: 12px;
    border: 1px solid var(--line-200);
    border-radius: 8px;
    background: var(--surface-1);
}

.course-student-selector-search {
    display: flex;
    flex: 1 1 260px;
    flex-direction: column;
    gap: 4px;
}

.course-student-selector-count {
    flex: 0 0 auto;
    min-width: 110px;
    color: var(--text-muted);
    font-weight: 700;
    text-align: right;
}

.course-student-selector-actions {
    display: flex;
    flex: 0 1 auto;
    flex-wrap: wrap;
    gap: 8px;
    justify-content: flex-end;
}

.selector-grid-students td.is-filtered-out {
    display: none;
}

.lesson-session-teacher-source {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.lesson-session-teacher-source .teacher-selector {
    min-height: 180px;
}

.lesson-session-teacher-source.is-enhanced .teacher-selector,
.lesson-session-teacher-source.is-enhanced .lesson-session-teacher-fallback-help {
    display: none;
}

.lesson-session-teacher-fallback-help {
    margin: 0;
    font-size: 12px;
    color: var(--muted-500);
}

.lesson-teacher-picker {
    display: grid;
    gap: 12px;
}

.lesson-teacher-picker-head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 12px;
    flex-wrap: wrap;
}

.lesson-teacher-picker-summary {
    display: flex;
    flex-direction: column;
    gap: 4px;
    min-width: 0;
}

.lesson-teacher-picker-summary strong {
    font-size: 15px;
    color: var(--ink-900);
}

.lesson-teacher-picker-help {
    font-size: 12px;
    line-height: 1.5;
    color: var(--muted-500);
}

.lesson-teacher-picker-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

.lesson-teacher-picker-actions .btn {
    min-height: 40px;
}

.lesson-teacher-picker-chips {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    min-height: 32px;
}

.lesson-teacher-picker-chip {
    display: inline-flex;
    align-items: center;
    min-height: 32px;
    padding: 4px 12px;
    border-radius: 999px;
    border: 1px solid rgba(59, 114, 240, 0.16);
    background: rgba(59, 114, 240, 0.08);
    color: var(--brand-700);
    font-size: 12px;
    font-weight: 700;
}

.lesson-teacher-picker-chip--empty {
    border-color: rgba(148, 163, 184, 0.28);
    background: rgba(148, 163, 184, 0.08);
    color: var(--muted-500);
}

.lesson-teacher-picker-toolbar {
    display: flex;
    align-items: center;
    gap: 12px;
    flex-wrap: wrap;
}

.lesson-teacher-picker-toolbar .form-control {
    flex: 1 1 280px;
    min-width: 220px;
}

.lesson-teacher-picker-meta {
    display: flex;
    align-items: center;
    gap: 10px 14px;
    flex-wrap: wrap;
    font-size: 12px;
    font-weight: 700;
    color: var(--muted-500);
}

.lesson-teacher-picker-empty {
    padding: 14px 16px;
    border: 1px dashed rgba(148, 163, 184, 0.36);
    border-radius: 12px;
    background: rgba(248, 251, 255, 0.86);
    color: var(--muted-500);
    font-size: 13px;
}

.lesson-teacher-picker-list {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
}

.lesson-teacher-picker-card {
    width: 100%;
    min-height: 76px;
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 12px;
    padding: 12px 14px;
    border: 1px solid var(--line-300);
    border-radius: 12px;
    background: var(--surface-0);
    color: inherit;
    text-align: left;
    box-shadow: inset 0 1px 2px rgba(15, 23, 42, 0.05);
    transition: transform 180ms ease, border-color 180ms ease, box-shadow 180ms ease, background 180ms ease;
}

.lesson-teacher-picker-card:hover,
.lesson-teacher-picker-card:focus {
    border-color: rgba(59, 114, 240, 0.34);
    background: rgba(59, 114, 240, 0.05);
    transform: translateY(-1px);
}

.lesson-teacher-picker-card:focus {
    outline: none;
}

.lesson-teacher-picker-card:focus-visible {
    box-shadow: 0 0 0 3px rgba(59, 114, 240, 0.18);
}

.lesson-teacher-picker-card.is-selected {
    border-color: rgba(59, 114, 240, 0.45);
    background: linear-gradient(145deg, rgba(59, 114, 240, 0.12), rgba(255, 255, 255, 0.98));
    box-shadow: 0 8px 18px rgba(59, 114, 240, 0.12);
}

.lesson-teacher-picker-card-main {
    display: flex;
    flex-direction: column;
    gap: 4px;
    min-width: 0;
}

.lesson-teacher-picker-card-name {
    font-size: 14px;
    font-weight: 700;
    color: var(--ink-900);
    line-height: 1.4;
}

.lesson-teacher-picker-card-kana {
    font-size: 12px;
    line-height: 1.4;
    color: var(--muted-500);
}

.lesson-teacher-picker-card-badge {
    flex: 0 0 auto;
    align-self: flex-start;
    display: inline-flex;
    align-items: center;
    min-height: 24px;
    padding: 2px 8px;
    border-radius: 999px;
    background: rgba(42, 91, 215, 0.12);
    color: var(--brand-700);
    font-size: 11px;
    font-weight: 800;
}

@media (max-width: 960px) {
    .lesson-teacher-picker-list {
        grid-template-columns: minmax(0, 1fr);
    }
}

@media (max-width: 640px) {
    .lesson-teacher-picker-toolbar {
        align-items: stretch;
    }

    .lesson-teacher-picker-toolbar .form-control {
        min-width: 0;
        width: 100%;
    }

    .lesson-teacher-picker-actions {
        width: 100%;
    }

    .lesson-teacher-picker-actions .btn {
        flex: 1 1 160px;
    }
}

.timetable-editor-grid {
    overflow-x: auto;
}

.timetable-editor-table {
    width: 100%;
    min-width: 920px;
    table-layout: fixed;
}

.timetable-target-card {
    padding-top: 16px;
    padding-bottom: 16px;
}

.timetable-target-card .card-head {
    margin-bottom: 10px;
}

.timetable-target-row {
    display: grid;
    grid-template-columns: minmax(180px, 220px) minmax(260px, 1fr) minmax(104px, 112px);
    align-items: end;
    gap: 12px 16px;
    max-width: 860px;
}

.timetable-target-field {
    min-width: 0;
}

.timetable-target-field .form-control,
.timetable-target-field select {
    width: 100%;
    min-width: 0;
}

.timetable-target-action {
    display: flex;
    align-self: end;
}

.timetable-target-load-btn {
    min-width: 104px;
    min-height: 44px;
    padding-inline: 22px;
}

@media (max-width: 900px) {
    .timetable-target-row {
        grid-template-columns: minmax(160px, 220px) minmax(0, 1fr);
        max-width: none;
    }

    .timetable-target-action {
        grid-column: 2;
        justify-content: flex-end;
    }
}

.timetable-reference-note {
    margin-bottom: 12px;
    color: var(--muted-700);
    font-size: 14px;
    font-weight: 600;
}

.timetable-period-head {
    width: 108px;
    min-width: 108px;
}

.timetable-period-sub {
    display: block;
    margin-top: 4px;
    font-size: 11px;
    color: var(--muted-500);
    font-weight: 500;
}

.timetable-slot-cell {
    min-width: 0;
    vertical-align: top;
}

.timetable-slot-tags {
    display: grid;
    gap: 6px;
    min-height: 40px;
    margin-bottom: 8px;
}

.timetable-slot-empty {
    color: var(--muted-500);
    font-size: 13px;
}

.timetable-slot-tag {
    display: block;
    max-width: 100%;
    padding: 5px 8px;
    border-radius: 10px;
    background: #eef4ff;
    color: #1f3d71;
    font-size: 12px;
    line-height: 1.4;
    border: 1px solid #d7e3ff;
    overflow: hidden;
    overflow-wrap: anywhere;
}

.timetable-slot-edit-btn {
    width: 100%;
}

.timetable-reference-list {
    display: grid;
    gap: 6px;
    margin-top: 10px;
    padding-top: 8px;
    border-top: 1px dashed #d7e3ff;
}

.timetable-reference-title {
    font-size: 11px;
    font-weight: 800;
    color: var(--muted-500);
}

.timetable-reference-row {
    display: grid;
    grid-template-columns: minmax(56px, max-content) minmax(0, 1fr);
    gap: 6px;
    align-items: start;
    font-size: 12px;
    line-height: 1.45;
}

.timetable-reference-hr {
    color: var(--muted-700);
    font-weight: 700;
}

.timetable-reference-courses {
    color: var(--muted-600);
    overflow-wrap: anywhere;
}

.timetable-editor-status {
    margin: 6px 0 18px;
}

.timetable-save-feedback {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    padding: 12px 14px;
    border-radius: 10px;
    border: 1px solid transparent;
}

.timetable-save-feedback--success {
    border-color: #b9e7d7;
    background: #edf9f4;
    color: #0f6a56;
}

.timetable-save-feedback--warning {
    border-color: #f2ddb0;
    background: #fff7e8;
    color: #8a5c00;
    margin-top: 10px;
}

.timetable-save-feedback--danger {
    border-color: #efc1c7;
    background: #fff1f3;
    color: #9b2940;
}

.timetable-save-feedback-body {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.timetable-save-feedback-body strong {
    font-size: 14px;
    line-height: 1.4;
}

.timetable-save-feedback-body span,
.timetable-save-feedback-body li {
    font-size: 13px;
    line-height: 1.5;
}

.timetable-save-feedback-body ul {
    margin: 0;
    padding-left: 18px;
}

.timetable-slot-modal-open {
    overflow: hidden;
}

.timetable-slot-modal[hidden] {
    display: none;
}

.timetable-slot-modal {
    position: fixed;
    inset: 0;
    z-index: 1100;
    display: grid;
    justify-items: center;
    align-items: start;
    overflow: auto;
    padding: 14px 12px;
}

.timetable-slot-modal-backdrop {
    position: absolute;
    inset: 0;
    background: rgba(21, 31, 43, 0.42);
}

.timetable-slot-modal-panel {
    position: relative;
    width: min(700px, calc(100vw - 24px));
    max-height: calc(100vh - 28px);
    margin: 0 auto;
    background: #fff;
    border-radius: 14px;
    box-shadow: 0 24px 60px rgba(12, 24, 38, 0.22);
    display: flex;
    flex-direction: column;
    z-index: 1;
}

.timetable-slot-modal-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    padding: 14px 18px;
    border-bottom: 1px solid #e5ebf2;
}

.timetable-slot-modal-head h3 {
    margin: 0;
    font-size: 18px;
}

.timetable-slot-modal-body {
    padding: 14px 18px 10px;
    overflow: auto;
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.timetable-slot-search-label {
    font-size: 13px;
    color: var(--muted-600);
    font-weight: 600;
}

.timetable-slot-course-list {
    border: 1px solid #e3e9f2;
    border-radius: 10px;
    padding: 10px;
    max-height: 48vh;
    overflow: auto;
}

.timetable-slot-course-item {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    padding: 8px 6px;
    border-bottom: 1px solid #edf1f6;
    cursor: pointer;
}

.timetable-slot-course-item:last-child {
    border-bottom: 0;
}

.timetable-slot-course-item input[type="checkbox"] {
    margin-top: 3px;
}

.timetable-slot-course-item > span {
    display: grid;
    gap: 3px;
    min-width: 0;
}

.timetable-slot-course-label {
    color: var(--ink-900);
    font-weight: 600;
    line-height: 1.4;
}

.timetable-slot-course-note {
    color: var(--muted-500);
    font-size: 12px;
    font-weight: 600;
    line-height: 1.4;
}

.timetable-slot-course-item--readonly {
    cursor: default;
    background: #f8fafc;
}

.timetable-slot-course-item--readonly input[type="checkbox"] {
    opacity: 0.5;
}

.timetable-slot-course-item--readonly .timetable-slot-course-label {
    color: var(--muted-700);
}

.timetable-slot-modal-actions {
    border-top: 1px solid #e5ebf2;
    padding: 12px 18px;
    display: flex;
    justify-content: flex-end;
    gap: 8px;
}

.table-compact th,
.table-compact td {
    padding: 9px 12px;
}

.table-report-field-value {
    white-space: normal;
    word-break: break-word;
    line-height: 1.8;
    text-indent: 0;
    padding-left: 8px !important;
}

.table-report-item-name {
    width: 160px;
    min-width: 160px;
    max-width: 200px;
    color: var(--ink-800);
    font-weight: 600;
}

.table-report-field-detail {
    width: 100%;
    border-collapse: collapse;
    table-layout: fixed;
    margin: 0;
}

.table-report-field-detail th,
.table-report-field-detail td {
    border: 0;
    padding: 4px 6px;
    text-align: left;
    vertical-align: top;
}

.table-report-field-detail th {
    width: 120px;
    color: #4b5f70;
    font-weight: 600;
    white-space: nowrap;
    text-transform: none;
    font-size: 13px;
    letter-spacing: 0;
    background: #f4f7fb;
}

.table-report-field-detail td {
    white-space: pre-wrap;
    word-break: break-word;
    line-height: 1.8;
}

.student-detail-layout .student-detail-actions,
.student-activity-layout .student-detail-actions {
    margin-bottom: 14px;
}

.student-page-intro-card {
    padding-top: 16px;
}

.student-page-intro-card .student-detail-actions {
    margin-bottom: 10px;
}

.student-page-intro-card .student-local-nav {
    margin: 10px 0 14px;
}

.student-page-intro-card .student-profile-head {
    margin-top: 0;
}

.student-page-intro-card--public .form-row {
    margin-bottom: 8px;
}

.public-filter-bar {
    display: grid;
    grid-template-columns: minmax(220px, 1.2fr) minmax(280px, 1fr) auto;
    gap: 12px 16px;
    align-items: end;
}

.public-filter-bar__student,
.public-filter-bar__actions {
    min-width: 0;
}

.public-filter-bar__student .form-control,
.public-filter-bar__student select,
.public-date-range__field .form-control,
.public-date-range__field input[type="date"],
.public-request-form-grid .form-control,
.public-request-form-grid select,
.public-request-form-grid textarea {
    width: 100%;
    min-width: 0;
}

.public-filter-bar__actions {
    justify-content: flex-end;
}

.public-filter-bar__actions .btn {
    min-width: 120px;
}

.public-date-range {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
    min-width: 0;
}

.public-request-helper {
    margin-bottom: 14px;
}

.public-request-single-day-toggle {
    display: inline-flex;
    align-items: center;
    gap: 12px;
    width: 100%;
    padding: 12px 14px;
    border: 1px solid rgba(59, 114, 240, 0.18);
    border-radius: 18px;
    background: linear-gradient(145deg, rgba(239, 246, 255, 0.96), rgba(255, 255, 255, 0.94));
    box-shadow: 0 12px 24px rgba(148, 163, 184, 0.12);
    cursor: pointer;
}

.public-request-single-day-toggle__checkbox {
    width: 18px;
    height: 18px;
    margin: 0;
    flex: 0 0 auto;
}

.public-request-single-day-toggle__copy {
    display: flex;
    flex-direction: column;
    gap: 2px;
    color: var(--ink-800);
}

.public-request-single-day-toggle__copy strong {
    font-size: 15px;
    line-height: 1.3;
}

.public-request-single-day-toggle__copy span {
    font-size: 12px;
    color: var(--muted-500);
}

.public-request-form-grid {
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    align-items: start;
}

.public-request-date-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
    min-width: 0;
}

.public-request-date-grid__field {
    min-width: 0;
}

.public-request-date-grid__field--end label::after {
    content: "";
}

.public-request-date-grid.is-single-day .public-request-date-grid__field--end label::after {
    content: "同日";
    display: inline-block;
    margin-left: 8px;
    padding: 2px 8px;
    border-radius: 999px;
    background: rgba(18, 163, 166, 0.12);
    color: #0f766e;
    font-size: 11px;
    font-weight: 700;
    vertical-align: middle;
}

.public-request-date-grid.is-single-day .public-request-date-grid__field--end .form-control,
.public-request-date-grid.is-single-day .public-request-date-grid__field--end input[type="date"] {
    background: rgba(248, 250, 252, 0.96);
    color: var(--muted-600);
}

.public-request-form-actions {
    justify-content: flex-end;
}

.dashboard-schedule-scroll-hint {
    display: none;
    margin: 4px 0 12px;
    color: var(--muted-500);
    font-size: 12px;
}

.student-local-nav {
    margin: 12px 0 16px;
}

.student-local-nav .talk-tab,
.student-report-tabs .talk-tab {
    min-height: 40px;
    text-decoration: none;
}

.student-section-head {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 12px;
    flex-wrap: wrap;
    margin-bottom: 10px;
}

.student-section-meta {
    font-size: 13px;
    color: var(--muted-500);
}

.student-detail-sections {
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.student-detail-readonly-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
    gap: 12px 16px;
}

.student-detail-readonly-grid .kv {
    margin: 0;
    box-shadow: none;
    background: rgba(255, 255, 255, 0.96);
}

.student-detail-subsection-title {
    margin: 16px 0 8px;
    font-size: 13px;
    font-weight: 700;
    color: var(--ink-800);
}

.student-report-tabs {
    margin-bottom: 14px;
}

.student-report-workspace {
    display: grid;
    grid-template-columns: 240px minmax(0, 1fr);
    gap: 14px;
    align-items: start;
}

.student-report-side {
    position: sticky;
    top: 106px;
    align-self: start;
    border-radius: var(--radius-md);
    border: 1px solid var(--line-200);
    background: rgba(255, 255, 255, 0.9);
    padding: 10px;
}

.student-report-side-title {
    margin: 0 0 8px;
    font-size: 13px;
    color: var(--ink-800);
}

.student-report-side-list {
    display: flex;
    flex-direction: column;
    gap: 4px;
    max-height: 68vh;
    overflow: auto;
}

.student-report-side-list a {
    display: block;
    padding: 7px 8px;
    border-radius: 10px;
    font-size: 13px;
    color: var(--ink-700);
    text-decoration: none;
    line-height: 1.35;
}

.student-report-side-list a:hover,
.student-report-side-list a:focus {
    background: rgba(42, 91, 215, 0.1);
    color: var(--brand-700);
}

.student-report-main {
    min-width: 0;
}

.student-report-grid tbody tr[id] {
    scroll-margin-top: 112px;
}

.student-detail-layout .table-report-item-name {
    width: 220px;
    min-width: 220px;
    max-width: 260px;
}

.student-detail-layout .table-report-field-value {
    padding-left: 0 !important;
    line-height: 1.75;
    vertical-align: top;
}

.student-activity-summary {
    margin: 2px 0 2px;
    color: var(--muted-500);
    font-size: 13px;
}

.student-activity-panel {
    margin-top: 4px;
}

.student-memo-help {
    margin: 2px 0 10px;
}

.student-memo-link {
    display: block;
    padding: 6px 8px;
    margin: -6px -8px;
    border-radius: 10px;
    color: var(--brand-700);
    font-weight: 700;
    line-height: 1.5;
    text-decoration: none;
    transition: background-color 180ms ease, color 180ms ease;
}

.student-memo-link:hover,
.student-memo-link:focus {
    background: rgba(42, 91, 215, 0.08);
    color: var(--brand-800);
    text-decoration: underline;
}

.student-memo-link.is-selected {
    background: rgba(42, 91, 215, 0.12);
    color: var(--ink-900);
}

.student-memo-row,
.student-achievement-row,
.student-criterion-row {
    cursor: pointer;
}

.student-memo-row td,
.student-achievement-row td,
.student-criterion-row td {
    transition: background-color 180ms ease;
}

.student-memo-row:hover td,
.student-memo-row:focus-visible td,
.student-achievement-row:hover td,
.student-achievement-row:focus-visible td,
.student-criterion-row:hover td,
.student-criterion-row:focus-visible td {
    background: rgba(42, 91, 215, 0.08);
}

.student-memo-row.is-selected td,
.student-achievement-row.is-selected td,
.student-criterion-row.is-selected td {
    background: rgba(42, 91, 215, 0.12);
}

.student-memo-row:focus-visible,
.student-achievement-row:focus-visible,
.student-criterion-row:focus-visible {
    outline: 2px solid rgba(42, 91, 215, 0.34);
    outline-offset: 2px;
}

.student-memo-row.is-selected .student-memo-link {
    color: var(--ink-900);
}

.student-memo-detail,
.student-achievement-detail,
.student-criterion-detail {
    margin-top: 14px;
}

.student-memo-detail-card,
.student-achievement-detail-card,
.student-criterion-detail-card {
    border: 1px solid var(--line-200);
    border-radius: var(--radius-md);
    background: linear-gradient(180deg, rgba(248, 251, 255, 0.98) 0%, rgba(255, 255, 255, 1) 100%);
    padding: 18px 20px;
}

.student-memo-detail-label,
.student-achievement-detail-label,
.student-criterion-detail-label {
    margin-bottom: 6px;
    color: var(--muted-500);
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 0.05em;
    text-transform: uppercase;
}

.student-memo-detail-card h3,
.student-achievement-detail-card h3,
.student-criterion-detail-card h3 {
    margin: 0 0 8px;
    color: var(--ink-900);
    font-size: 24px;
}

.student-memo-detail-meta,
.student-achievement-detail-meta,
.student-criterion-detail-meta {
    margin-bottom: 14px;
    color: var(--muted-500);
    font-size: 13px;
}

.student-memo-detail-body,
.student-achievement-detail-body,
.student-criterion-detail-body {
    color: var(--ink-900);
    line-height: 1.9;
    white-space: normal;
    word-break: break-word;
}

.student-activity-detail-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
}

.student-activity-detail-item {
    border: 1px solid var(--line-200);
    border-radius: 12px;
    background: rgba(255, 255, 255, 0.9);
    padding: 12px 14px;
}

.student-activity-detail-item-label {
    margin-bottom: 4px;
    color: var(--muted-500);
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 0.04em;
}

.student-activity-detail-item-value {
    color: var(--ink-900);
    font-size: 15px;
    font-weight: 700;
    line-height: 1.6;
}

.student-score-summary {
    margin: 2px 0 10px;
    color: var(--ink-800);
    font-size: 14px;
    font-weight: 600;
}

.student-attendance-period {
    margin-bottom: 6px;
}

.student-attendance-note {
    margin: 0 0 16px;
    padding: 10px 14px;
    border: 1px solid rgba(18, 163, 166, 0.18);
    border-radius: 12px;
    background:
        linear-gradient(180deg, rgba(18, 163, 166, 0.08), rgba(42, 91, 215, 0.04));
    color: var(--ink-700);
    font-size: 13px;
    line-height: 1.7;
}

.student-attendance-kpi-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(138px, 1fr));
    gap: 12px;
    margin: 0 0 18px;
}

.student-attendance-kpi-card {
    padding: 14px 16px;
    border: 1px solid rgba(42, 91, 215, 0.12);
    border-radius: 14px;
    background:
        linear-gradient(180deg, rgba(255, 255, 255, 0.98), rgba(244, 248, 255, 0.94));
    box-shadow: 0 10px 24px rgba(15, 23, 42, 0.06);
}

.student-attendance-kpi-card.is-alert {
    border-color: rgba(209, 73, 73, 0.18);
    background:
        linear-gradient(180deg, rgba(255, 248, 248, 0.98), rgba(255, 239, 239, 0.94));
}

.student-attendance-kpi-label {
    color: var(--muted-500);
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 0.04em;
}

.student-attendance-kpi-value {
    margin-top: 6px;
    color: var(--ink-900);
    font-size: 28px;
    font-weight: 700;
    line-height: 1.1;
}

.student-attendance-kpi-card.is-alert .student-attendance-kpi-value {
    color: var(--danger-500);
}

.student-attendance-overview-grid td {
    vertical-align: middle;
}

.student-attendance-overview-grid td.student-attendance-cell--course {
    font-weight: 700;
    color: var(--ink-800);
}

.student-attendance-overview-grid td.student-attendance-cell--teacher {
    color: var(--muted-500);
}

.student-attendance-overview-grid td.student-attendance-cell--metric {
    text-align: center;
    font-variant-numeric: tabular-nums;
}

.student-attendance-overview-grid td.student-attendance-cell--rate {
    white-space: nowrap;
    font-weight: 700;
}

.student-attendance-overview-grid td.student-attendance-cell--zero {
    color: var(--muted-500);
}

.student-attendance-overview-grid td.student-attendance-cell--alert {
    color: var(--danger-500);
    font-weight: 700;
    background: rgba(209, 73, 73, 0.08);
}

.student-attendance-overview-grid tr.student-attendance-overview-row--attention td {
    background: rgba(18, 163, 166, 0.04);
}

.student-attendance-overview-grid tr.student-attendance-overview-row--attention td.student-attendance-cell--alert {
    background: rgba(209, 73, 73, 0.1);
}

.student-attendance-empty {
    padding: 16px 18px;
    border: 1px dashed var(--line-300);
    border-radius: var(--radius-md);
    background: rgba(255, 255, 255, 0.84);
    color: var(--muted-500);
    font-size: 14px;
}

.student-attendance-date-group {
    margin-top: 14px;
    border: 1px solid rgba(42, 91, 215, 0.1);
    border-radius: 18px;
    background:
        radial-gradient(circle at top right, rgba(42, 91, 215, 0.08), transparent 32%),
        linear-gradient(180deg, rgba(255, 255, 255, 0.98), rgba(246, 249, 253, 0.96));
    box-shadow: 0 14px 28px rgba(15, 23, 42, 0.06);
    overflow: hidden;
}

.student-attendance-date-group:first-of-type {
    margin-top: 0;
}

.student-attendance-date-group-head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 12px;
    padding: 16px 18px 14px;
    border-bottom: 1px solid rgba(226, 232, 240, 0.9);
}

.student-attendance-date-group-copy {
    min-width: 0;
}

.student-attendance-date-group-title {
    margin: 0;
    color: var(--ink-800);
    font-size: 18px;
    font-weight: 700;
}

.student-attendance-date-group-meta {
    margin-top: 6px;
    color: var(--muted-500);
    font-size: 13px;
    line-height: 1.7;
}

.student-attendance-date-group-count {
    flex-shrink: 0;
    padding: 6px 12px;
    border-radius: 999px;
    background: rgba(42, 91, 215, 0.12);
    color: var(--brand-600);
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 0.03em;
}

.student-attendance-detail-list {
    width: 100%;
}

.student-attendance-detail-list-head,
.student-attendance-detail-list-row {
    display: grid;
    grid-template-columns: 92px minmax(260px, 2.2fr) 120px 120px minmax(160px, 1.5fr);
    gap: 14px;
    align-items: start;
    padding: 12px 18px;
}

.student-attendance-detail-list-head {
    background: rgba(238, 242, 247, 0.78);
    color: var(--muted-500);
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 0.04em;
}

.student-attendance-detail-list-row + .student-attendance-detail-list-row {
    border-top: 1px solid rgba(226, 232, 240, 0.8);
}

.student-attendance-detail-cell {
    min-width: 0;
    color: var(--ink-700);
    font-size: 14px;
    line-height: 1.6;
    word-break: break-word;
}

.student-attendance-detail-cell--period,
.student-attendance-detail-cell--status {
    font-weight: 700;
    color: var(--ink-800);
}

.student-attendance-detail-cell--course {
    font-weight: 700;
    color: var(--ink-900);
}

@media (max-width: 900px) {
    .student-attendance-kpi-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .student-attendance-date-group-head {
        flex-direction: column;
        align-items: stretch;
    }

    .student-attendance-date-group-count {
        align-self: flex-start;
    }

    .student-attendance-detail-list-head {
        display: none;
    }

    .student-attendance-detail-list {
        padding: 12px;
    }

    .student-attendance-detail-list-row {
        grid-template-columns: 1fr;
        gap: 10px;
        padding: 14px;
        border: 1px solid var(--line-200);
        border-radius: 14px;
        background: var(--surface-0);
    }

    .student-attendance-detail-list-row + .student-attendance-detail-list-row {
        margin-top: 10px;
        border-top: 1px solid var(--line-200);
    }

    .student-attendance-detail-cell::before {
        content: attr(data-label);
        display: block;
        margin-bottom: 4px;
        color: var(--muted-500);
        font-size: 11px;
        font-weight: 700;
        letter-spacing: 0.05em;
        text-transform: uppercase;
    }
}

.student-score-matrix {
    min-width: 1420px;
}

.student-score-matrix th,
.student-score-matrix td {
    white-space: nowrap;
}

.student-score-matrix th:first-child,
.student-score-matrix td:first-child {
    min-width: 140px;
}

.student-score-matrix th:nth-child(2),
.student-score-matrix td:nth-child(2) {
    min-width: 280px;
    white-space: normal;
}

.student-score-matrix th:nth-child(3),
.student-score-matrix td:nth-child(3) {
    min-width: 96px;
    text-align: center;
}

.student-score-matrix th:last-child,
.student-score-matrix td:last-child {
    min-width: 80px;
    text-align: center;
}

.student-data-mode-bar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 18px;
    margin: 0 0 18px;
    padding: 14px 16px;
    border: 1px solid var(--line-200);
    border-radius: 14px;
    background: var(--surface-50);
}

.ledger-data-mode-bar {
    flex: 1 1 100%;
    margin: 2px 0 4px;
}

.student-data-mode-label {
    color: var(--ink-900);
    font-weight: 800;
}

.student-data-mode-help {
    margin-top: 4px;
    color: var(--muted-600);
    font-size: 13px;
}

.student-data-mode-options {
    display: flex;
    align-items: center;
    gap: 8px;
}

.student-data-mode-options td {
    padding: 0 0 0 10px;
    white-space: nowrap;
}

.student-data-mode-options label {
    margin-left: 4px;
    color: var(--ink-700);
    font-weight: 700;
}

.student-score-status-badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 72px;
    padding: 4px 9px;
    border-radius: 999px;
    border: 1px solid var(--line-200);
    background: #fff;
    color: var(--muted-600);
    font-size: 12px;
    font-weight: 800;
    line-height: 1.2;
}

.student-score-status-badge.is-draft {
    border-color: #f0c66f;
    background: #fff8e6;
    color: #946200;
}

.student-score-status-badge.is-final {
    border-color: #9edfd5;
    background: #e9fbf8;
    color: #0b756a;
}

.grade-year-result-grid {
    min-width: 1180px;
}

.grade-settings-overview-card {
    display: grid;
    gap: 18px;
}

.grade-settings-overview-head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 18px;
}

.grade-settings-overview-actions {
    display: flex;
    flex: 0 0 auto;
    align-items: center;
    gap: 8px;
}

.grade-settings-setup-status {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 10px;
}

.grade-settings-setup-metric {
    display: grid;
    align-content: center;
    min-width: 0;
    min-height: 86px;
    padding: 12px 14px;
    border: 1px solid rgba(148, 163, 184, 0.28);
    border-left: 4px solid #cbd5e1;
    border-radius: 6px;
    background: #ffffff;
    color: inherit;
    text-decoration: none;
}

a.grade-settings-setup-metric {
    cursor: pointer;
}

a.grade-settings-setup-metric:hover {
    border-color: rgba(37, 99, 235, 0.34);
    box-shadow: 0 6px 16px rgba(15, 23, 42, 0.06);
}

.grade-settings-setup-metric.is-complete {
    border-left-color: #0f8f83;
}

.grade-settings-setup-metric.is-pending {
    border-left-color: #d97706;
    background: #fffdf7;
}

.grade-settings-setup-metric span,
.grade-settings-setup-metric small {
    color: var(--muted-500);
    line-height: 1.4;
}

.grade-settings-setup-metric span {
    font-size: 12px;
    font-weight: 800;
}

.grade-settings-setup-metric strong {
    margin-top: 2px;
    color: var(--ink-900);
    font-size: 19px;
    line-height: 1.3;
}

.grade-settings-setup-metric small {
    margin-top: 2px;
    font-size: 11px;
}

.grade-settings-setup-empty {
    padding: 12px 14px;
    border: 1px dashed rgba(148, 163, 184, 0.42);
    border-radius: 6px;
    background: #f8fafc;
    color: var(--muted-500);
    font-size: 13px;
}

.grade-settings-overview-head h2 {
    margin: 0;
    color: var(--ink-900);
    font-size: 24px;
    line-height: 1.35;
}

.grade-settings-eyebrow {
    margin: 0 0 6px;
    color: #0f766e;
    font-size: 12px;
    font-weight: 900;
    letter-spacing: 0;
}

.grade-settings-lead,
.grade-settings-section-note {
    margin: 6px 0 0;
    color: var(--muted-500);
    font-size: 14px;
    line-height: 1.7;
}

.grade-input-method-card {
    display: grid;
    gap: 16px;
}

.grade-input-method-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
}

.grade-input-method-option {
    position: relative;
    display: grid;
    align-content: start;
    gap: 7px;
    min-height: 150px;
    padding: 18px;
    border: 1px solid rgba(148, 163, 184, 0.32);
    border-radius: 8px;
    background: #fff;
    color: inherit;
    text-decoration: none;
}

a.grade-input-method-option:hover,
a.grade-input-method-option:focus-visible {
    border-color: rgba(37, 99, 235, 0.5);
    box-shadow: 0 8px 20px rgba(15, 23, 42, 0.07);
    outline: none;
}

.grade-input-method-option.is-recommended {
    border-top: 4px solid #0f8f83;
    background: #f7fcfb;
}

.grade-input-method-option strong {
    color: var(--ink-900);
    font-size: 18px;
    line-height: 1.4;
}

.grade-input-method-option > span:not(.grade-input-method-badge) {
    color: var(--muted-500);
    font-size: 13px;
    line-height: 1.65;
}

.grade-input-method-option small {
    margin-top: auto;
    color: var(--brand-600);
    font-size: 12px;
    font-weight: 800;
}

.grade-input-method-badge {
    justify-self: start;
    padding: 4px 8px;
    border-radius: 4px;
    background: #dff7f2;
    color: #08766c;
    font-size: 11px;
    font-weight: 900;
}

.grade-input-method-badge.is-alternative {
    background: #eef2f7;
    color: #475569;
}

.manual-criteria-settings {
    display: grid;
    gap: 12px;
}

.manual-criteria-settings-head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
}

.manual-criteria-settings-head h3,
.manual-criteria-settings-head p {
    margin: 0;
}

.manual-criteria-settings-head p {
    margin-top: 5px;
    color: var(--muted-500);
    font-size: 13px;
    line-height: 1.6;
}

.manual-criteria-course-group {
    margin-top: 10px;
    border: 1px solid rgba(148, 163, 184, 0.25);
    border-radius: 8px;
    overflow: hidden;
    background: #fff;
}

.manual-criteria-course-group > summary {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 13px 15px;
    list-style: none;
    cursor: pointer;
    background: #f6f8fb;
    color: var(--ink-800);
    font-weight: 900;
}

.manual-criteria-course-group > summary::-webkit-details-marker {
    display: none;
}

.manual-criteria-course-group > summary small {
    color: var(--muted-500);
    font-size: 12px;
}

.manual-criteria-course-group .criterion-course-grid {
    margin: 0;
    border: 0;
    border-top: 1px solid rgba(148, 163, 184, 0.2);
    border-radius: 0;
}

.assessment-settings-step-note {
    display: flex;
    align-items: center;
    gap: 10px 14px;
    flex-wrap: wrap;
    margin-top: 14px;
    padding: 12px 14px;
    border: 1px solid rgba(245, 158, 11, 0.28);
    border-radius: var(--radius-sm);
    background: #fffbeb;
    color: #92400e;
    font-size: 13px;
    line-height: 1.6;
}

.assessment-settings-step-note strong {
    color: #78350f;
    font-weight: 900;
}

.assessment-settings-preset-toolbar {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
    margin-top: 12px;
}

.btn.btn-sm {
    min-height: 36px;
    padding: 8px 14px;
    font-size: 13px;
}

.assessment-settings-details {
    margin-top: 12px;
    border: 1px solid rgba(148, 163, 184, 0.22);
    border-radius: var(--radius-sm);
    background: #f8fafc;
}

.assessment-settings-details > summary {
    list-style: none;
    cursor: pointer;
    padding: 12px 14px;
    color: var(--ink-800);
    font-size: 14px;
    font-weight: 900;
}

.assessment-settings-details > summary::-webkit-details-marker {
    display: none;
}

.assessment-settings-details > summary::after {
    content: "+";
    float: right;
    color: var(--muted-500);
    font-weight: 900;
}

.assessment-settings-details[open] > summary::after {
    content: "-";
}

.assessment-settings-details .form-grid {
    padding: 0 14px 14px;
}

.assessment-settings-actions {
    margin-top: 14px;
    padding-bottom: 16px;
    border-bottom: 1px solid rgba(148, 163, 184, 0.18);
}

.assessment-settings-table-shell {
    margin-top: 18px;
}

.assessment-settings-status-badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 52px;
    min-height: 28px;
    padding: 4px 10px;
    border-radius: 999px;
    font-size: 13px;
    font-weight: 800;
    line-height: 1;
}

.assessment-settings-status-badge--active {
    border: 1px solid rgba(15, 118, 110, 0.22);
    background: rgba(20, 184, 166, 0.12);
    color: #0f766e;
}

.assessment-settings-status-badge--inactive {
    border: 1px solid rgba(100, 116, 139, 0.2);
    background: rgba(148, 163, 184, 0.12);
    color: #475569;
}

.assessment-apply-toolbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px 18px;
    flex-wrap: wrap;
    margin-top: 14px;
    padding: 12px 14px;
    border: 1px solid rgba(148, 163, 184, 0.22);
    border-radius: var(--radius-sm);
    background: #f8fafc;
    color: var(--muted-500);
    font-size: 13px;
    line-height: 1.5;
}

.assessment-apply-select-all,
.assessment-apply-category-head label,
.assessment-apply-course {
    display: inline-flex;
    align-items: center;
    gap: 9px;
    min-width: 0;
    cursor: pointer;
}

.assessment-apply-select-all {
    color: var(--ink-800);
    font-weight: 900;
}

.assessment-apply-list {
    display: grid;
    gap: 12px;
    margin-top: 12px;
}

.assessment-apply-category {
    overflow: hidden;
    border: 1px solid rgba(148, 163, 184, 0.22);
    border-radius: var(--radius-sm);
    background: #ffffff;
}

.assessment-apply-category > summary {
    list-style: none;
}

.assessment-apply-category > summary::-webkit-details-marker {
    display: none;
}

.assessment-apply-category-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 12px 14px;
    border-bottom: 1px solid rgba(148, 163, 184, 0.18);
    background: #eef4fb;
    color: var(--ink-800);
    font-weight: 900;
    cursor: pointer;
    user-select: none;
}

.assessment-apply-category-title {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    min-width: 0;
}

.assessment-apply-chevron {
    width: 9px;
    height: 9px;
    border-right: 2px solid #64748b;
    border-bottom: 2px solid #64748b;
    transform: rotate(-45deg);
    transition: transform 160ms ease;
}

.assessment-apply-category[open] .assessment-apply-chevron {
    transform: rotate(45deg);
}

.assessment-apply-category-selector {
    min-width: 0;
}

.assessment-apply-count {
    flex: 0 0 auto;
    color: var(--muted-500);
    font-size: 12px;
    font-weight: 800;
}

.assessment-apply-field-picker {
    margin: 12px 0 18px;
}

.grade-criterion-policy-card {
    border-top: 3px solid #0f8f83;
}

.criterion-primary-guidance {
    display: flex;
    align-items: center;
    gap: 10px 14px;
    flex-wrap: wrap;
    padding: 11px 14px;
    border-left: 4px solid #0f8f83;
    background: #f2fbf9;
    color: var(--ink-700);
    font-size: 13px;
    line-height: 1.6;
}

.criterion-primary-guidance strong {
    color: #0f766e;
}

.criterion-advanced-scope {
    margin-top: 10px;
    border: 1px solid rgba(148, 163, 184, 0.26);
    border-radius: 8px;
    background: #fff;
}

.criterion-advanced-scope > summary {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    min-height: 48px;
    padding: 0 14px;
    cursor: pointer;
    list-style: none;
    color: var(--ink-700);
    font-weight: 850;
}

.criterion-advanced-scope > summary::-webkit-details-marker {
    display: none;
}

.criterion-advanced-scope > summary::after {
    content: "+";
    margin-left: auto;
    color: #2563eb;
    font-size: 18px;
    line-height: 1;
}

.criterion-advanced-scope[open] > summary::after {
    content: "−";
}

.criterion-advanced-scope > summary small {
    color: var(--muted-500);
    font-size: 12px;
    font-weight: 700;
}

.criterion-advanced-scope-body {
    display: grid;
    grid-template-columns: minmax(0, 1.4fr) minmax(260px, 0.6fr);
    align-items: end;
    gap: 16px;
    padding: 14px;
    border-top: 1px solid rgba(148, 163, 184, 0.2);
    background: #f8fafc;
}

.criterion-advanced-scope-body p {
    margin: 0;
    color: var(--muted-500);
    font-size: 13px;
    line-height: 1.65;
}

.form-hint {
    display: block;
    margin-top: 6px;
    color: var(--muted-500);
    font-size: 12px;
    line-height: 1.55;
}

.grade-export-controls {
    display: grid;
    grid-template-columns: minmax(280px, 1fr) auto;
    align-items: end;
    gap: 14px;
    margin-top: 16px;
}

.grade-export-controls .btn {
    min-width: 150px;
    min-height: 48px;
}

.grade-export-sheet-list {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    margin-top: 18px;
    border-top: 1px solid rgba(148, 163, 184, 0.24);
    border-bottom: 1px solid rgba(148, 163, 184, 0.24);
}

.grade-export-sheet-list > div {
    display: grid;
    gap: 4px;
    min-width: 0;
    padding: 13px 16px;
    border-right: 1px solid rgba(148, 163, 184, 0.2);
}

.grade-export-sheet-list > div:last-child {
    border-right: 0;
}

.grade-export-sheet-list strong {
    color: var(--ink-800);
    font-size: 14px;
}

.grade-export-sheet-list span {
    color: var(--muted-500);
    font-size: 12px;
    line-height: 1.55;
}

.criterion-threshold-summary {
    display: flex;
    align-items: center;
    min-height: 48px;
    padding: 0 14px;
    border: 1px solid rgba(15, 143, 131, 0.22);
    border-radius: 8px;
    background: #f2fbf9;
    color: #0f766e;
    font-weight: 800;
}

.criterion-threshold-field {
    grid-column: 1 / -1;
}

.criterion-threshold-details > summary {
    display: flex;
    align-items: center;
    gap: 10px;
    cursor: pointer;
    list-style: none;
}

.criterion-threshold-details > summary::-webkit-details-marker {
    display: none;
}

.criterion-threshold-details > summary .criterion-threshold-summary {
    flex: 1 1 auto;
}

.criterion-threshold-details > summary small {
    flex: 0 0 auto;
    color: #2563eb;
    font-size: 12px;
    font-weight: 900;
}

.criterion-threshold-editor {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
    margin-top: 10px;
    padding: 14px;
    border: 1px solid rgba(148, 163, 184, 0.24);
    border-radius: 8px;
    background: #f8fafc;
}

.criterion-threshold-editor > label {
    display: grid;
    gap: 6px;
    color: var(--ink-800);
    font-weight: 800;
}

.criterion-threshold-editor > label > span {
    display: grid;
    grid-template-columns: minmax(100px, 180px) auto;
    align-items: center;
    gap: 8px;
    font-weight: 600;
}

.criterion-threshold-editor > p {
    grid-column: 1 / -1;
    margin: 0;
    color: var(--muted-500);
    font-size: 12px;
    line-height: 1.6;
}

.criterion-proactive-mode {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px 14px;
    margin-top: 16px;
    padding: 12px 14px;
    border: 1px solid rgba(15, 143, 131, 0.22);
    border-left: 4px solid #0f8f83;
    border-radius: 8px;
    background: #f7fbfb;
}

.criterion-proactive-mode-check {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    color: var(--ink-800);
    font-weight: 900;
}

.criterion-proactive-mode-check input {
    width: 18px;
    height: 18px;
    margin: 0;
}

.criterion-proactive-mode > span:last-child {
    color: var(--muted-500);
    font-size: 13px;
    line-height: 1.5;
}

.criterion-policy-feedback:empty {
    display: none;
}

.criterion-policy-feedback > .text-danger,
.criterion-policy-feedback > .text-success {
    display: block;
    padding: 12px 14px;
    border: 1px solid transparent;
    border-left-width: 4px;
    border-radius: 8px;
    font-size: 15px;
    font-weight: 800;
    line-height: 1.55;
}

.criterion-policy-feedback > .text-danger {
    border-color: rgba(220, 38, 38, 0.3);
    border-left-color: #dc2626;
    background: #fff7f7;
    color: #b91c1c;
}

.criterion-policy-feedback > .text-success {
    border-color: rgba(5, 150, 105, 0.26);
    border-left-color: #059669;
    background: #f0fdf7;
    color: #047857;
}

.criterion-change-confirmation {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: center;
    gap: 18px;
    margin: 0 0 16px;
    padding: 16px 18px;
    border: 1px solid rgba(217, 119, 6, 0.32);
    border-left: 5px solid #d97706;
    border-radius: 8px;
    background: #fffbeb;
    color: #78350f;
}

.criterion-change-confirmation.is-destructive {
    border-color: rgba(220, 38, 38, 0.32);
    border-left-color: #dc2626;
    background: #fff7f7;
    color: #7f1d1d;
}

.criterion-change-confirmation.is-recalculate {
    border-color: rgba(13, 148, 136, 0.3);
    border-left-color: #0d9488;
    background: #f0fdfa;
    color: #134e4a;
}

.criterion-change-confirmation-copy {
    display: grid;
    gap: 4px;
    min-width: 0;
}

.criterion-change-confirmation-label {
    color: inherit;
    font-size: 12px;
    font-weight: 900;
}

.criterion-change-confirmation-copy > strong {
    font-size: 18px;
    line-height: 1.4;
}

.criterion-change-confirmation-copy > p {
    margin: 0;
    font-size: 15px;
    font-weight: 700;
    line-height: 1.65;
}

.criterion-change-confirmation-actions {
    display: flex;
    flex-wrap: wrap;
    justify-content: flex-end;
    gap: 8px;
}

.criterion-change-confirmation .btn-danger {
    border-color: #dc2626;
    background: #dc2626;
    color: #fff;
    box-shadow: 0 8px 18px rgba(220, 38, 38, 0.18);
}

.criterion-change-confirmation .btn-danger:hover,
.criterion-change-confirmation .btn-danger:focus-visible {
    border-color: #b91c1c;
    background: #b91c1c;
}

.criterion-target-control {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: stretch;
    gap: 10px;
}

.criterion-target-control .btn {
    min-height: 44px;
    white-space: nowrap;
}

.criterion-target-message:empty {
    display: none;
}

.criterion-target-message > span {
    display: block;
    margin-top: 8px;
    padding: 9px 11px;
    border: 1px solid rgba(59, 130, 246, 0.2);
    border-radius: 6px;
    background: #f5f9ff;
    color: #1d4f91;
    font-size: 13px;
    font-weight: 700;
    line-height: 1.55;
}

.criterion-target-message > .is-success {
    border-color: rgba(5, 150, 105, 0.24);
    background: #f0fdf7;
    color: #047857;
}

.criterion-target-message > .is-error {
    border-color: rgba(220, 38, 38, 0.28);
    background: #fff7f7;
    color: #b91c1c;
}

.criterion-period-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 14px;
    margin-top: 16px;
}

.criterion-period-panel {
    min-width: 0;
    margin: 0;
    padding: 14px;
    border: 1px solid rgba(148, 163, 184, 0.28);
    border-radius: 8px;
    transition: border-color 160ms ease, box-shadow 160ms ease, background-color 160ms ease;
}

.criterion-period-panel.is-invalid {
    border-color: #dc2626;
    background: #fffafa;
    box-shadow: 0 0 0 2px rgba(220, 38, 38, 0.1);
}

.criterion-period-panel legend {
    padding: 0 6px;
    color: var(--ink-800);
    font-weight: 900;
}

.criterion-period-panel.is-invalid legend {
    color: #b91c1c;
}

.criterion-period-panel label {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(88px, 110px) 24px;
    align-items: center;
    gap: 8px;
    margin-bottom: 8px;
    min-width: 0;
    font-weight: 700;
}

.criterion-period-panel .criterion-allocation-input {
    width: 100%;
    min-width: 0;
    max-width: 100%;
}

.criterion-period-panel .criterion-allocation-input.is-invalid {
    border-color: #dc2626;
    background: #fff7f7;
    box-shadow: 0 0 0 3px rgba(220, 38, 38, 0.1);
}

.criterion-period-summary {
    padding-top: 8px;
    border-top: 1px solid rgba(148, 163, 184, 0.2);
}

.criterion-period-panel output {
    display: flex;
    justify-content: flex-end;
    align-items: baseline;
    gap: 6px;
    min-height: 34px;
}

.criterion-period-panel output strong {
    min-width: 42px;
    text-align: right;
    color: #0f766e;
    font-size: 24px;
    line-height: 1.15;
}

.criterion-period-panel output strong.is-invalid {
    color: #dc2626;
    font-size: 28px;
}

.criterion-period-error {
    margin: 8px 0 0;
    padding: 10px 12px;
    border: 1px solid rgba(220, 38, 38, 0.28);
    border-radius: 6px;
    background: #fff1f2;
    color: #b91c1c;
    font-size: 15px;
    font-weight: 900;
    line-height: 1.5;
}

.criterion-period-error:empty {
    display: none;
}

.criterion-generated-fields {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 8px;
    margin-top: 12px;
    color: var(--muted-500);
    font-size: 12px;
}

.criterion-generated-fields span {
    padding: 5px 8px;
    border: 1px solid rgba(148, 163, 184, 0.24);
    border-radius: 999px;
    background: #f8fafc;
}

.criterion-generated-fields small {
    flex-basis: 100%;
    color: #64748b;
    line-height: 1.5;
}

.criterion-course-apply {
    margin-top: 20px;
    padding-top: 18px;
    border-top: 1px solid rgba(148, 163, 184, 0.22);
}

.criterion-course-apply h3,
.criterion-course-apply p {
    margin: 0 0 5px;
}

.criterion-policy-actions,
.criterion-course-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 10px;
}

.criterion-category-bulk-action {
    display: inline-flex;
}

.criterion-course-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(290px, 1fr));
    margin: 12px 0;
    border: 1px solid rgba(148, 163, 184, 0.24);
    border-radius: 8px;
    overflow: hidden;
}

.criterion-course-option {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    min-height: 136px;
    padding: 14px;
    border-right: 1px solid rgba(148, 163, 184, 0.16);
    border-bottom: 1px solid rgba(148, 163, 184, 0.16);
    cursor: pointer;
}

.criterion-course-option > input {
    flex: 0 0 auto;
    margin-top: 4px;
}

.criterion-course-content {
    display: grid;
    align-content: start;
    gap: 9px;
    width: 100%;
    min-width: 0;
}

.criterion-course-heading {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 6px 10px;
}

.criterion-course-name {
    color: var(--ink-900);
    font-size: 17px;
    line-height: 1.35;
    overflow-wrap: anywhere;
}

.criterion-course-class {
    padding: 2px 7px;
    border: 1px solid #cbdcf8;
    border-radius: 4px;
    background: #f5f8ff;
    color: #2452a6;
    font-size: 13px;
    font-weight: 700;
    line-height: 1.5;
}

.criterion-course-facts {
    display: flex;
    flex-wrap: wrap;
    gap: 4px 14px;
    color: var(--muted-500);
    font-size: 13px;
    line-height: 1.5;
}

.criterion-course-facts > span {
    min-width: 0;
    overflow-wrap: anywhere;
}

.criterion-course-facts b {
    margin-right: 5px;
    color: var(--ink-700);
    font-weight: 700;
}

.criterion-course-footer {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 5px 8px;
}

.criterion-course-status {
    display: inline-flex;
    align-items: center;
    min-height: 24px;
    padding: 2px 8px;
    border: 1px solid #cbd5e1;
    border-radius: 4px;
    background: #f8fafc;
    color: #475569;
    font-size: 12px;
    font-weight: 700;
}

.criterion-course-status.is-applied {
    border-color: #9bded3;
    background: #e8f8f5;
    color: #08766c;
}

.criterion-course-status.is-protected {
    border-color: #f2cc8f;
    background: #fff7e8;
    color: #9a5600;
}

.criterion-course-status-detail,
.criterion-course-code {
    color: var(--muted-500);
    font-size: 12px;
    line-height: 1.45;
}

.criterion-course-code {
    overflow-wrap: anywhere;
}

.criterion-course-option:hover:not(.is-applied):not(.is-protected) {
    background: #f8fbff;
}

.criterion-course-option.is-applied {
    background: #f2fbf9;
}

.criterion-course-option.is-protected {
    background: #fffaf0;
    cursor: default;
}

.criterion-rating-map-panel {
    margin-top: 20px;
    padding-top: 16px;
    border-top: 1px solid rgba(148, 163, 184, 0.22);
}

.criterion-rating-map-panel summary {
    font-weight: 900;
    cursor: pointer;
}

.criterion-rating-toolbar {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    justify-content: space-between;
    gap: 12px 20px;
    margin-bottom: 8px;
}

.criterion-rating-toolbar label {
    display: grid;
    grid-template-columns: auto 150px;
    align-items: center;
    gap: 8px;
}

.criterion-basic-rating-rule {
    display: flex;
    min-width: min(100%, 520px);
    flex: 1 1 520px;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px 12px;
    padding: 10px 12px;
    border: 1px solid rgba(148, 163, 184, 0.24);
    border-radius: 8px;
    background: #f8fafc;
}

.criterion-basic-rating-rule > strong {
    flex: 0 0 auto;
}

.criterion-basic-rating-rule > span:not(.assessment-settings-status-badge) {
    min-width: 260px;
    flex: 1 1 320px;
    color: var(--ink-700);
    font-size: 13px;
    line-height: 1.5;
}

.criterion-rating-table select {
    min-width: 84px;
}

.criterion-category-status-panel {
    margin-top: 18px;
    border-top: 1px solid rgba(148, 163, 184, 0.22);
}

.criterion-category-status-panel > summary {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 15px 2px 10px;
    color: var(--ink-800);
    cursor: pointer;
    font-weight: 900;
    list-style: none;
}

.criterion-category-status-panel > summary::-webkit-details-marker {
    display: none;
}

.criterion-category-status-panel > summary::after {
    content: "+";
    color: #64748b;
    font-size: 18px;
}

.criterion-category-status-panel[open] > summary::after {
    content: "-";
}

.criterion-category-status-panel > summary small {
    margin-left: auto;
    color: var(--muted-500);
    font-size: 12px;
    font-weight: 700;
}

.criterion-category-status-table {
    min-width: 1040px;
}

.criterion-category-status-table td small {
    display: block;
    margin-top: 3px;
    color: var(--muted-500);
    font-size: 11px;
}

.criterion-category-status-badge {
    display: inline-flex;
    align-items: center;
    min-height: 28px;
    padding: 4px 9px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 800;
    white-space: nowrap;
}

.criterion-category-status-badge.is-complete {
    border: 1px solid rgba(15, 143, 131, 0.22);
    background: #e9fbf8;
    color: #0f766e;
}

.criterion-category-status-badge.is-pending {
    border: 1px solid rgba(217, 119, 6, 0.22);
    background: #fff7e6;
    color: #92400e;
}

.grade-settings-advanced-shell {
    margin: 24px 0 0;
}

.grade-settings-advanced-summary {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 18px;
    padding: 18px 20px;
    border-top: 1px solid rgba(148, 163, 184, 0.34);
    border-bottom: 1px solid rgba(148, 163, 184, 0.34);
    background: rgba(255, 255, 255, 0.72);
    color: var(--ink-900);
    cursor: pointer;
    list-style: none;
}

.grade-settings-advanced-summary::-webkit-details-marker {
    display: none;
}

.grade-settings-advanced-summary > span:first-child {
    display: grid;
    gap: 3px;
}

.grade-settings-advanced-summary strong {
    font-size: 18px;
}

.grade-settings-advanced-summary small {
    color: var(--muted-500);
    font-size: 13px;
    line-height: 1.5;
}

.grade-settings-advanced-toggle {
    flex: 0 0 auto;
    color: #2563eb;
    font-size: 13px;
    font-weight: 900;
}

.grade-settings-advanced-intro {
    display: grid;
    gap: 3px;
    padding: 15px 20px;
    border-bottom: 1px solid rgba(148, 163, 184, 0.22);
    background: #f8fafc;
    color: var(--muted-500);
    font-size: 13px;
    line-height: 1.6;
}

.grade-settings-advanced-intro strong {
    color: var(--ink-800);
}

.grade-settings-advanced-content {
    display: grid;
    gap: 22px;
    padding-top: 22px;
}

.grade-settings-system-fields-note {
    display: grid;
    gap: 3px;
    margin-top: 12px;
    padding: 12px 14px;
    border-left: 4px solid #2563eb;
    background: #f4f7ff;
    color: var(--muted-500);
    font-size: 13px;
    line-height: 1.6;
}

.grade-settings-system-fields-note strong {
    color: #1e40af;
}

@media (max-width: 760px) {
    .criterion-change-confirmation {
        grid-template-columns: 1fr;
        align-items: stretch;
        padding: 14px;
    }

    .criterion-change-confirmation-actions,
    .criterion-change-confirmation-actions .btn {
        width: 100%;
    }

    .criterion-advanced-scope-body,
    .grade-export-controls,
    .grade-export-sheet-list {
        grid-template-columns: 1fr;
    }

    .grade-export-controls .btn {
        width: 100%;
    }

    .grade-export-sheet-list > div {
        border-right: 0;
        border-bottom: 1px solid rgba(148, 163, 184, 0.2);
    }

    .grade-export-sheet-list > div:last-child {
        border-bottom: 0;
    }

    .criterion-period-grid {
        grid-template-columns: 1fr;
    }

    .criterion-target-control {
        grid-template-columns: 1fr;
    }

    .criterion-target-control .btn {
        width: 100%;
    }

    .criterion-period-panel label {
        grid-template-columns: minmax(0, 1fr) 88px 20px;
    }

    .criterion-policy-actions,
    .criterion-course-actions,
    .criterion-category-bulk-action {
        width: 100%;
    }

    .school-settings-actions.criterion-policy-actions {
        position: static;
        bottom: auto;
        z-index: auto;
        padding: 0;
        border: 0;
        background: transparent;
    }

    .criterion-policy-actions .btn,
    .criterion-course-actions .btn,
    .criterion-category-bulk-action .btn {
        width: 100%;
    }

    .criterion-rating-toolbar,
    .criterion-rating-toolbar label,
    .criterion-basic-rating-rule,
    .criterion-basic-rating-rule .btn {
        width: 100%;
    }

    .criterion-rating-toolbar label {
        grid-template-columns: minmax(0, 1fr);
    }

    .criterion-basic-rating-rule {
        min-width: 0;
    }

    .criterion-basic-rating-rule > span:not(.assessment-settings-status-badge) {
        min-width: 0;
        flex-basis: 100%;
    }

    .criterion-category-status-panel > summary,
    .grade-settings-advanced-summary {
        align-items: flex-start;
    }

    .criterion-category-status-panel > summary small {
        display: none;
    }
}

.assessment-apply-field-picker-head {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 8px;
}

.assessment-apply-field-picker-head h3 {
    margin: 0;
    font-size: 16px;
}

.assessment-apply-field-picker-head span {
    color: var(--muted-500);
    font-size: 12px;
}

.assessment-apply-field-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(230px, 1fr));
    border: 1px solid rgba(148, 163, 184, 0.24);
    border-radius: 8px;
    overflow: hidden;
}

.assessment-apply-field-option {
    display: flex;
    align-items: flex-start;
    gap: 9px;
    min-height: 78px;
    padding: 12px;
    border-right: 1px solid rgba(148, 163, 184, 0.18);
    border-bottom: 1px solid rgba(148, 163, 184, 0.18);
    cursor: pointer;
}

.assessment-apply-field-option:hover {
    background: rgba(59, 114, 240, 0.05);
}

.assessment-apply-field-body {
    display: grid;
    gap: 3px;
    min-width: 0;
    color: var(--muted-500);
    font-size: 12px;
}

.assessment-apply-field-body strong {
    color: var(--ink-800);
    font-size: 14px;
    overflow-wrap: anywhere;
}

.assessment-apply-field-status {
    color: #0f766e;
    font-weight: 800;
}

.assessment-apply-course-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
    gap: 0;
}

.assessment-apply-course {
    min-height: 48px;
    padding: 11px 14px;
    border-bottom: 1px solid rgba(148, 163, 184, 0.14);
    color: var(--ink-800);
    font-size: 14px;
    font-weight: 700;
    line-height: 1.45;
}

.assessment-apply-course.is-applied {
    background: rgba(20, 184, 166, 0.045);
}

.assessment-apply-course:hover {
    background: rgba(59, 114, 240, 0.06);
}

.assessment-apply-course-body {
    display: grid;
    gap: 5px;
    min-width: 0;
}

.assessment-apply-course-name {
    min-width: 0;
    overflow-wrap: anywhere;
}

.assessment-apply-course-status {
    display: flex;
    align-items: center;
    gap: 6px;
    min-width: 0;
    flex-wrap: wrap;
}

.assessment-apply-status-badge {
    display: inline-flex;
    align-items: center;
    min-height: 22px;
    padding: 2px 8px;
    border-radius: 999px;
    font-size: 11px;
    font-weight: 900;
    line-height: 1;
}

.assessment-apply-status-badge--applied {
    border: 1px solid rgba(15, 118, 110, 0.2);
    background: rgba(20, 184, 166, 0.12);
    color: #0f766e;
}

.assessment-apply-status-badge--empty {
    border: 1px solid rgba(100, 116, 139, 0.18);
    background: rgba(148, 163, 184, 0.1);
    color: #64748b;
}

.assessment-apply-items {
    min-width: 0;
    color: var(--muted-500);
    font-size: 12px;
    font-weight: 700;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.assessment-apply-result {
    margin-top: 10px;
    padding: 12px 14px;
    border-radius: var(--radius-sm);
    font-size: 14px;
    font-weight: 800;
    line-height: 1.5;
}

.assessment-apply-result--success {
    border: 1px solid rgba(15, 118, 110, 0.22);
    background: rgba(20, 184, 166, 0.1);
}

.assessment-apply-result--notice {
    border: 1px solid rgba(245, 158, 11, 0.26);
    background: rgba(245, 158, 11, 0.1);
}

.assessment-apply-result--error {
    border: 1px solid rgba(220, 38, 38, 0.22);
    background: rgba(254, 226, 226, 0.62);
}

.assessment-apply-empty {
    margin-top: 12px;
    padding: 14px;
    border: 1px dashed rgba(148, 163, 184, 0.42);
    border-radius: var(--radius-sm);
    color: var(--muted-500);
    background: #f8fafc;
    font-size: 14px;
}

.grade-settings-flow {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 10px;
}

.grade-settings-flow-item {
    display: grid;
    grid-template-columns: 38px minmax(0, 1fr);
    align-items: start;
    gap: 12px;
    min-width: 0;
    padding: 16px;
    border: 1px solid rgba(148, 163, 184, 0.24);
    border-radius: var(--radius-sm);
    background: #f8fafc;
    overflow: visible;
}

.grade-settings-flow-number {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 34px;
    height: 34px;
    box-sizing: border-box;
    border-radius: 50%;
    background: #0f766e;
    border: 2px solid rgba(255, 255, 255, 0.96);
    box-shadow: 0 8px 18px rgba(15, 118, 110, 0.22);
    color: #fff;
    font-size: 14px;
    font-weight: 900;
    line-height: 1;
    text-align: center;
    flex: 0 0 34px;
}

.grade-settings-flow-item strong,
.grade-settings-flow-item span:not(.grade-settings-flow-number) {
    display: block;
}

.grade-settings-flow-item strong {
    color: var(--ink-800);
    font-size: 14px;
    line-height: 1.45;
}

.grade-settings-flow-item span:not(.grade-settings-flow-number) {
    margin-top: 4px;
    color: var(--muted-500);
    font-size: 12px;
    line-height: 1.6;
}

.grade-settings-mini-sheet {
    display: grid;
    gap: 10px;
    padding: 14px;
    border: 1px solid rgba(37, 99, 235, 0.16);
    border-radius: var(--radius-sm);
    background: #ffffff;
}

.grade-settings-mini-sheet-head {
    display: flex;
    align-items: baseline;
    gap: 10px;
    flex-wrap: wrap;
}

.grade-settings-mini-sheet-head strong {
    color: var(--ink-800);
    font-size: 15px;
}

.grade-settings-mini-sheet-head span {
    color: var(--muted-500);
    font-size: 13px;
}

.grade-settings-mini-table-wrap {
    overflow-x: auto;
}

.grade-settings-mini-table {
    width: 100%;
    min-width: 920px;
    border-collapse: separate;
    border-spacing: 0;
    font-size: 13px;
}

.grade-settings-mini-table th,
.grade-settings-mini-table td {
    padding: 10px 12px;
    border-bottom: 1px solid rgba(148, 163, 184, 0.22);
    text-align: center;
    white-space: nowrap;
}

.grade-settings-mini-table th {
    background: #eef4fb;
    color: var(--ink-700);
    font-weight: 900;
}

.grade-settings-mini-table th:first-child,
.grade-settings-mini-table td:first-child {
    text-align: left;
}

.grade-settings-rating-chip {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 32px;
    height: 28px;
    padding: 0 10px;
    border-radius: 999px;
    background: #eef2ff;
    color: #3730a3;
    font-weight: 900;
}

.grade-rule-source-strip {
    grid-column: 1 / -1;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 12px 14px;
    border: 1px solid rgba(15, 118, 110, 0.18);
    border-left: 4px solid #0f766e;
    border-radius: var(--radius-sm);
    background: #f8fbfa;
}

.grade-rule-source-strip span {
    display: block;
    margin-bottom: 2px;
    color: #0f766e;
    font-size: 12px;
    font-weight: 900;
}

.grade-rule-source-strip strong {
    color: var(--ink-800);
    font-size: 14px;
}

.grade-rule-source-strip p {
    margin: 0;
    color: var(--muted-500);
    font-size: 13px;
    line-height: 1.6;
}

.grade-label-preset-field {
    grid-column: 1 / -1;
}

.grade-label-preset-toolbar {
    display: inline-flex;
    width: fit-content;
    gap: 4px;
    padding: 4px;
    border: 1px solid rgba(148, 163, 184, 0.28);
    border-radius: 999px;
    background: #f4f7fb;
}

.grade-label-preset-button {
    min-height: 34px;
    padding: 7px 14px;
    border: 0;
    border-radius: 999px;
    background: transparent;
    color: var(--muted-500);
    cursor: pointer;
    font-size: 13px;
    font-weight: 900;
    letter-spacing: 0;
}

.grade-label-preset-button:hover,
.grade-label-preset-button:focus {
    color: var(--brand-600);
}

.grade-label-preset-button.is-active {
    background: var(--surface-0);
    color: var(--brand-600);
    box-shadow: 0 8px 18px rgba(15, 23, 42, 0.1);
}

.grade-rule-calculator {
    display: grid;
    gap: 12px;
    padding: 14px;
    border: 1px solid rgba(245, 158, 11, 0.26);
    border-radius: var(--radius-sm);
    background: #fffdf7;
}

.grade-rule-actions {
    margin-bottom: 18px;
}

.grade-rule-target-table-shell {
    margin-top: 46px;
}

.grade-rule-status-message {
    margin-top: 10px;
}

.grade-rule-status-message:empty {
    display: none;
}

.grade-rule-status-message--top {
    margin-top: 12px;
    margin-bottom: 18px;
}

.grade-rule-status-message--inline {
    margin-top: 0;
    margin-bottom: 28px;
}

.grade-rule-status-message--inline:not(:empty) + .grade-rule-target-table-shell {
    margin-top: 18px;
}

.grade-rule-result-message {
    display: grid;
    gap: 5px;
    margin-top: 0;
    border-left-width: 4px;
    box-shadow: 0 18px 34px rgba(15, 23, 42, 0.1);
    animation: gradeRuleFeedbackPulse 520ms ease-out;
}

.grade-rule-result-message--success {
    border-left-color: #0f766e;
    background: #ecfdf5;
}

.grade-rule-result-message--error {
    border-left-color: #dc2626;
}

#grade-evaluation-rule,
#gradeRuleFeedback,
#gradeRuleActionFeedback {
    scroll-margin-top: 96px;
    outline: none;
}

.grade-rule-result-message strong,
.grade-rule-result-message span {
    display: block;
}

.grade-rule-result-message strong {
    color: var(--ink-800);
    font-size: 15px;
    line-height: 1.45;
}

.grade-rule-result-message span {
    color: var(--muted-500);
    font-size: 13px;
    line-height: 1.6;
}

@keyframes gradeRuleFeedbackPulse {
    from {
        transform: translateY(-4px);
        box-shadow: 0 22px 40px rgba(15, 118, 110, 0.16);
    }

    to {
        transform: translateY(0);
        box-shadow: 0 18px 34px rgba(15, 23, 42, 0.1);
    }
}

.grade-rule-pill,
.grade-rule-save-badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 28px;
    padding: 5px 10px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 900;
    line-height: 1.1;
    white-space: nowrap;
}

.grade-rule-save-badge:empty {
    display: none;
}

.grade-rule-pill--subject {
    border: 1px solid rgba(37, 99, 235, 0.18);
    background: rgba(37, 99, 235, 0.1);
    color: #1d4ed8;
}

.grade-rule-pill--course {
    border: 1px solid rgba(15, 118, 110, 0.2);
    background: rgba(20, 184, 166, 0.12);
    color: #0f766e;
}

.grade-rule-pill--empty {
    border: 1px solid rgba(100, 116, 139, 0.18);
    background: rgba(148, 163, 184, 0.12);
    color: #64748b;
}

.grade-rule-pill--draft {
    border: 1px solid rgba(100, 116, 139, 0.18);
    background: rgba(148, 163, 184, 0.12);
    color: #475569;
}

.grade-rule-pill--submitted {
    border: 1px solid rgba(37, 99, 235, 0.18);
    background: rgba(37, 99, 235, 0.1);
    color: #1d4ed8;
}

.grade-rule-pill--approved {
    border: 1px solid rgba(15, 118, 110, 0.2);
    background: rgba(20, 184, 166, 0.12);
    color: #0f766e;
}

.grade-rule-pill--locked {
    border: 1px solid rgba(245, 158, 11, 0.28);
    background: rgba(245, 158, 11, 0.12);
    color: #92400e;
}

.grade-rule-pill--published {
    border: 1px solid rgba(124, 58, 237, 0.18);
    background: rgba(124, 58, 237, 0.1);
    color: #6d28d9;
}

.grade-rule-save-badge--saved {
    border: 1px solid rgba(15, 118, 110, 0.24);
    background: #ccfbf1;
    color: #0f766e;
    box-shadow: 0 8px 18px rgba(15, 118, 110, 0.12);
}

.grade-rule-save-badge--override {
    border: 1px solid rgba(245, 158, 11, 0.3);
    background: #fef3c7;
    color: #92400e;
}

.grade-rule-calculator-head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 12px;
}

.grade-rule-calculator-head strong,
.grade-rule-calculator-head span {
    display: block;
}

.grade-rule-calculator-head strong {
    color: var(--ink-800);
    font-size: 15px;
}

.grade-rule-calculator-head span {
    margin-top: 4px;
    color: var(--muted-500);
    font-size: 13px;
}

.grade-rule-calculator-badge {
    flex: 0 0 auto;
    padding: 5px 9px;
    border-radius: 999px;
    background: #fef3c7;
    color: #92400e;
    font-size: 12px;
    font-weight: 900;
}

.grade-rule-calculator-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 10px;
    align-items: stretch;
}

.grade-rule-calculator-grid label {
    display: grid;
    gap: 6px;
    color: var(--ink-700);
    font-size: 13px;
    font-weight: 800;
}

.grade-rule-preview-result {
    display: grid;
    align-content: center;
    gap: 4px;
    min-height: 64px;
    padding: 10px 12px;
    border: 1px solid rgba(148, 163, 184, 0.22);
    border-radius: var(--radius-sm);
    background: #fff;
}

.grade-rule-preview-result span {
    color: var(--muted-500);
    font-size: 12px;
    font-weight: 800;
}

.grade-rule-preview-result strong {
    color: var(--ink-900);
    font-size: 24px;
    line-height: 1;
}

.assessment-label-rule-field {
    display: grid;
    gap: 10px;
}

.assessment-label-rule-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    flex-wrap: wrap;
}

.assessment-label-mode-toolbar {
    display: inline-flex;
    gap: 4px;
    padding: 4px;
    border: 1px solid rgba(148, 163, 184, 0.28);
    border-radius: 999px;
    background: #f4f7fb;
}

.assessment-label-mode-button {
    min-height: 34px;
    padding: 7px 14px;
    border: 0;
    border-radius: 999px;
    background: transparent;
    color: var(--muted-500);
    cursor: pointer;
    font-size: 13px;
    font-weight: 800;
    letter-spacing: 0;
    transition: background-color 160ms ease, color 160ms ease, box-shadow 160ms ease;
}

.assessment-label-mode-button:hover,
.assessment-label-mode-button:focus {
    color: var(--brand-600);
}

.assessment-label-mode-button.is-active {
    background: var(--surface-0);
    color: var(--brand-600);
    box-shadow: 0 8px 18px rgba(15, 23, 42, 0.1);
}

.assessment-label-rule-root {
    display: grid;
    gap: 12px;
    padding: 14px;
    border: 1px solid rgba(148, 163, 184, 0.24);
    border-radius: var(--radius-sm);
    background: #f8fbff;
}

.assessment-label-rule-root.assessment-label-rule-easy .assessment-label-advanced-panel,
.assessment-label-rule-root.assessment-label-rule-advanced .assessment-label-easy-panel {
    display: none;
}

.assessment-label-easy-panel {
    display: grid;
    gap: 12px;
}

.assessment-label-easy-grid {
    display: grid;
    gap: 8px;
    max-width: 720px;
}

.assessment-label-easy-row {
    display: grid;
    grid-template-columns: minmax(96px, 160px) auto minmax(120px, 180px) auto;
    align-items: center;
    gap: 8px;
}

.assessment-label-easy-row--fallback {
    grid-template-columns: minmax(96px, 160px) minmax(0, 1fr);
}

.assessment-label-name-input,
.assessment-label-min-input {
    min-width: 0;
}

.assessment-label-condition {
    color: var(--ink-600);
    font-size: 13px;
    font-weight: 800;
    white-space: nowrap;
}

.assessment-label-condition--fallback {
    min-height: 38px;
    display: inline-flex;
    align-items: center;
    color: var(--ink-700);
}

.assessment-label-preview {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    max-width: 900px;
    padding: 10px 12px;
    border: 1px solid rgba(37, 99, 235, 0.14);
    border-radius: var(--radius-sm);
    background: rgba(255, 255, 255, 0.78);
}

.assessment-label-preview-label {
    flex: 0 0 auto;
    color: var(--brand-600);
    font-size: 12px;
    font-weight: 800;
}

.assessment-label-preview-text {
    color: var(--ink-700);
    font-size: 13px;
    line-height: 1.55;
    overflow-wrap: anywhere;
}

.grade-entry-search-card {
    display: flex;
    flex-direction: column;
    gap: 14px;
}

.grade-entry-search-workspace {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: end;
    gap: 12px 16px;
    min-width: 0;
}

.grade-entry-search-workspace .grade-entry-filter-grid {
    margin-bottom: 0;
    min-width: 0;
}

.grade-entry-filter-grid {
    grid-template-columns: minmax(150px, 0.75fr) minmax(300px, 2fr) minmax(180px, 1.1fr) minmax(220px, 1.25fr);
    align-items: end;
}

.grade-entry-filter-grid--criterion {
    grid-template-columns: minmax(150px, 0.75fr) minmax(340px, 2.2fr) minmax(190px, 1.1fr);
}

.grade-entry-class-field,
.grade-entry-course-field,
.grade-entry-course-search-field,
.grade-entry-assessment-field {
    min-width: 0;
}

.grade-entry-assessment-field--hidden {
    display: none;
}

.grade-entry-primary-actions {
    align-self: end;
    flex-wrap: nowrap;
    margin-bottom: 0;
}

.grade-entry-primary-actions .btn {
    min-width: 84px;
}

.grade-entry-back-button {
    min-width: 156px;
    white-space: nowrap;
}

.grade-approval-panel {
    margin-top: 2px;
    padding: 12px 14px;
    border: 1px solid rgba(148, 163, 184, 0.24);
    border-radius: var(--radius-sm);
    background: #f8fbff;
}

.grade-entry-status-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px 14px;
    flex-wrap: wrap;
}

.grade-entry-approval-summary {
    display: flex;
    align-items: center;
    gap: 8px;
    min-width: 0;
    flex-wrap: wrap;
    color: var(--ink-700);
    font-size: 14px;
}

.grade-entry-approval-target {
    font-weight: 800;
    color: var(--ink-800);
}

.grade-entry-status-label {
    color: var(--muted-500);
    font-size: 13px;
}

.grade-entry-status-badge {
    display: inline-flex;
    align-items: center;
    min-height: 28px;
    padding: 4px 10px;
    border-radius: 999px;
    background: rgba(42, 91, 215, 0.1);
    color: var(--brand-600);
    font-size: 13px;
    font-weight: 800;
}

.grade-entry-approval-actions {
    justify-content: flex-end;
    gap: 8px;
    margin-left: auto;
}

.grade-entry-approval-actions .btn {
    min-height: 36px;
    padding: 7px 14px;
}

.grade-entry-inline-feedback {
    display: grid;
    gap: 10px;
}

.grade-entry-rule-callout {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 14px;
    margin-top: 4px;
    padding: 14px 16px;
    border: 1px solid rgba(245, 158, 11, 0.28);
    border-radius: var(--radius-sm);
    background: #fffdf6;
}

.grade-entry-rule-callout-copy {
    display: grid;
    gap: 4px;
    min-width: 0;
}

.grade-entry-rule-callout-copy strong {
    color: #92400e;
    font-size: 14px;
    line-height: 1.35;
}

.grade-entry-rule-callout-copy span {
    color: #6b7280;
    font-size: 13px;
    line-height: 1.55;
}

.grade-entry-rule-actions {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 8px;
    flex-wrap: wrap;
    flex: 0 0 auto;
}

.grade-entry-rule-actions .btn {
    min-height: 36px;
    padding: 7px 12px;
    white-space: nowrap;
}

.grade-entry-year-rule-notice {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 12px;
    margin: 0 0 14px;
    padding: 12px 14px;
    border: 1px solid rgba(245, 158, 11, 0.24);
    border-radius: var(--radius-sm);
    background: #fffaf0;
}

.grade-entry-year-rule-notice strong,
.grade-entry-year-rule-notice span {
    display: block;
}

.grade-entry-year-rule-notice strong {
    color: #92400e;
    font-size: 13px;
    line-height: 1.35;
}

.grade-entry-year-rule-notice span {
    color: #6b7280;
    font-size: 13px;
    line-height: 1.55;
}

@media (max-width: 768px) {
    .grade-entry-rule-callout,
    .grade-entry-year-rule-notice {
        flex-direction: column;
        align-items: stretch;
    }

    .grade-entry-rule-actions {
        justify-content: flex-start;
    }

    .grade-entry-rule-actions .btn {
        width: 100%;
    }
}

.grade-entry-live-message {
    color: #166534;
    font-size: 0.9rem;
}

.grade-entry-presence-summary {
    display: flex;
    align-items: center;
    gap: 8px;
    width: fit-content;
    max-width: 100%;
    padding: 7px 10px;
    border: 1px solid #99d5ce;
    border-radius: 6px;
    background: #effaf8;
    color: #0f766e;
    font-size: 13px;
    font-weight: 800;
    line-height: 1.45;
}

.grade-entry-presence-summary::before {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: #0f9488;
    content: "";
    flex: 0 0 auto;
}

.grade-entry-presence-badge {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    max-width: 100%;
    margin-top: 7px;
    padding: 5px 8px;
    border: 1px solid #99d5ce;
    border-radius: 5px;
    background: #effaf8;
    color: #0f766e;
    font-size: 12px;
    font-weight: 800;
    line-height: 1.4;
    white-space: normal;
}

.grade-entry-presence-dot {
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: #0f9488;
    flex: 0 0 auto;
}

.grade-entry-grid tr.is-being-edited > td:first-child {
    box-shadow: inset 4px 0 0 #0f9488;
}

.grade-entry-conflict-review {
    margin-top: 10px;
    padding: 10px;
    border: 1px solid #f4c36a;
    border-radius: 6px;
    background: #fffaf0;
    color: #7c2d12;
    font-size: 13px;
    line-height: 1.5;
}

.grade-entry-conflict-review p {
    margin: 4px 0 9px;
    overflow-wrap: anywhere;
}

.grade-entry-conflict-review-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 7px;
}

.grade-entry-conflict-review-actions .btn {
    min-height: 36px;
    padding: 7px 11px;
    font-size: 12px;
}

.grade-entry-live-message.is-conflict {
    color: #b45309;
}

.grade-entry-live-message.is-validation-error {
    color: #b91c1c;
    font-weight: 800;
}

.grade-entry-grid tr.has-remote-conflict td {
    background: #fffbeb;
}

.grade-entry-grid tr.has-remote-conflict .form-control {
    border-color: #d97706;
    box-shadow: 0 0 0 1px rgba(217, 119, 6, 0.16);
}

.grade-entry-presence-summary[hidden],
.grade-entry-presence-badge[hidden],
.grade-entry-conflict-review[hidden] {
    display: none !important;
}

.grade-entry-grid tr.grade-entry-deep-link-target {
    scroll-margin-top: 140px;
}

.grade-entry-grid tr.grade-entry-deep-link-target > td {
    background: #eff6ff !important;
}

.grade-entry-grid tr.grade-entry-deep-link-target > td:first-child {
    box-shadow: inset 4px 0 0 #2563eb;
}

.grade-entry-grid {
    min-width: 1560px;
}

.grade-entry-grid th,
.grade-entry-grid td {
    white-space: nowrap;
}

.grade-entry-grid th:nth-child(2),
.grade-entry-grid td:nth-child(2) {
    min-width: 250px;
    white-space: normal;
    vertical-align: middle;
}

.grade-entry-student-cell {
    align-items: center;
    min-width: 0;
}

.grade-entry-mobile td:nth-child(2) .student-name-main {
    font-weight: 800;
}

.grade-entry-mode-toolbar {
    display: inline-flex;
    flex-wrap: wrap;
    gap: 6px;
    max-width: 100%;
    margin: 4px 0 16px;
    padding: 4px;
    border: 1px solid rgba(148, 163, 184, 0.28);
    border-radius: 999px;
    background: #f4f7fb;
}

.grade-entry-mode-button {
    min-height: 38px;
    padding: 8px 16px;
    border: 0;
    border-radius: 999px;
    background: transparent;
    color: var(--muted-500);
    cursor: pointer;
    font-size: 14px;
    font-weight: 800;
    letter-spacing: 0;
    transition: background-color 160ms ease, color 160ms ease, box-shadow 160ms ease;
}

.grade-entry-mode-button:hover,
.grade-entry-mode-button:focus {
    color: var(--brand-600);
}

.grade-entry-mode-button.is-active {
    background: var(--surface-0);
    color: var(--brand-600);
    box-shadow: 0 8px 18px rgba(15, 23, 42, 0.1);
}

.grade-entry-criterion-view-toolbar {
    display: flex;
    width: min(100%, 620px);
}

.grade-entry-criterion-view-toolbar .grade-entry-mode-button {
    flex: 1 1 0;
    white-space: nowrap;
}

.grade-entry-mode-guide {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin: -6px 0 16px;
}

.grade-entry-mode-guide span {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    min-height: 32px;
    padding: 6px 10px;
    border: 1px solid rgba(148, 163, 184, 0.22);
    border-radius: 999px;
    background: #f8fafc;
    color: var(--muted-500);
    font-size: 12px;
    line-height: 1.45;
}

.grade-entry-mode-guide strong {
    color: var(--ink-700);
    font-weight: 900;
}

.grade-entry-table-shell {
    overflow-x: auto;
}

.grade-entry-savebar {
    position: sticky;
    bottom: 12px;
    z-index: 20;
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 12px;
    margin-top: 14px;
    padding: 12px 14px;
    border: 1px solid rgba(148, 163, 184, 0.28);
    border-radius: var(--radius-sm);
    background: rgba(255, 255, 255, 0.96);
    box-shadow: 0 14px 34px rgba(15, 23, 42, 0.12);
}

.grade-entry-savebar-label {
    margin-right: auto;
    color: var(--ink-700);
    font-size: 14px;
    font-weight: 800;
}

.grade-entry-savebar .btn {
    min-width: 112px;
}

.grade-entry-mode-root .grade-entry-grid {
    width: 100%;
    min-width: 0;
    table-layout: fixed;
}

.grade-entry-mode-root .grade-entry-grid th,
.grade-entry-mode-root .grade-entry-grid td {
    white-space: normal;
    vertical-align: middle;
}

.grade-entry-mode-root .grade-entry-grid th {
    line-height: 1.45;
    overflow-wrap: anywhere;
    word-break: normal;
}

.grade-entry-mode-root .grade-entry-grid .form-control {
    width: 100%;
    min-width: 0;
    min-height: 48px;
    box-sizing: border-box;
    line-height: 1.25;
}

.grade-entry-col-student-no {
    width: 112px;
}

.grade-entry-grid td.grade-entry-col-student-no,
.grade-entry-grid td.grade-entry-col-evaluation-label {
    color: var(--ink-700);
    font-size: 16px;
    font-weight: 700;
    line-height: 1.4;
}

.grade-entry-grid td.grade-entry-col-student-no {
    font-variant-numeric: tabular-nums;
}

.grade-entry-grid tr.is-score-status-auto .grade-entry-score-status {
    border-color: rgba(16, 185, 129, 0.45);
    background: #f0fdfa;
}

.grade-entry-col-student {
    width: 240px;
}

.grade-entry-col-toggle {
    width: 120px;
}

.grade-entry-col-score-list {
    width: 34%;
}

.grade-entry-col-year-point,
.grade-entry-col-year-rating {
    width: 14%;
}

.grade-entry-col-evaluation-label {
    width: 120px;
}

.grade-entry-col-criterion {
    width: 28%;
}

.grade-entry-mode-score .grade-entry-col-criteria-mode,
.grade-entry-mode-year .grade-entry-col-score-mode,
.grade-entry-mode-year .grade-entry-col-criteria-mode,
.grade-entry-mode-criteria .grade-entry-col-score-mode,
.grade-entry-mode-criteria .grade-entry-col-year-mode {
    display: none !important;
}

.grade-calculation-mode-criterion .grade-entry-col-evaluation-label {
    display: none !important;
}

.grade-calculation-mode-manual-criteria .grade-entry-col-evaluation-label {
    display: none !important;
}

.grade-calculation-mode-criterion .grade-entry-col-student-no {
    width: 6%;
}

.grade-calculation-mode-criterion .grade-entry-col-student {
    width: 15%;
}

.grade-calculation-mode-criterion .grade-entry-col-score-list {
    width: 33%;
}

.grade-calculation-mode-criterion .grade-entry-col-year-point {
    width: 8%;
}

.grade-calculation-mode-criterion .grade-entry-col-year-rating {
    width: 10%;
}

.grade-calculation-mode-criterion .grade-entry-col-criterion {
    width: 9.33%;
}

.grade-calculation-mode-manual-criteria .grade-entry-col-student-no {
    width: 8%;
}

.grade-calculation-mode-manual-criteria .grade-entry-col-student {
    width: 22%;
}

.grade-calculation-mode-manual-criteria .grade-entry-col-score-list {
    width: 42%;
}

.grade-calculation-mode-manual-criteria .grade-entry-col-year-point,
.grade-calculation-mode-manual-criteria .grade-entry-col-year-rating {
    width: 14%;
}

.grade-calculation-mode-manual-criteria .grade-entry-col-criterion {
    width: 18%;
}

.grade-entry-score-list-inner {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(170px, 1fr));
    gap: 8px;
}

.grade-calculation-mode-criterion .grade-entry-score-list-inner {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px 12px;
}

.grade-calculation-mode-manual-criteria .grade-entry-score-list-inner {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
}

.grade-entry-score-item {
    min-width: 0;
    padding: 0;
    border: 0;
    background: transparent;
}

.grade-entry-score-item[hidden],
.grade-entry-period-summary[hidden] {
    display: none !important;
}

.grade-entry-score-name {
    display: block;
    margin-bottom: 6px;
    color: var(--ink-700);
    font-size: 12px;
    font-weight: 900;
    line-height: 1.35;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.grade-entry-score-name.is-hidden {
    display: none;
}

.grade-entry-criterion-name,
.grade-entry-excused-control {
    display: none;
}

.grade-calculation-mode-criterion .grade-entry-score-name,
.grade-calculation-mode-criterion .grade-entry-score-status {
    display: none;
}

.grade-calculation-mode-criterion .grade-entry-criterion-name {
    display: flex;
    align-items: flex-start;
    align-content: flex-start;
    flex-wrap: wrap;
    min-height: 36px;
    margin-bottom: 6px;
    color: var(--ink-700);
    font-size: 12px;
    font-weight: 900;
    line-height: 1.35;
}

.grade-calculation-mode-criterion .grade-entry-excused-control {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    min-height: 48px;
    color: var(--ink-700);
    font-size: 12px;
    font-weight: 800;
    white-space: nowrap;
}

.grade-entry-excused-input {
    width: 20px;
    height: 20px;
    margin: 0;
}

.grade-entry-excused-control:has(.grade-entry-excused-input:disabled) {
    opacity: 0.55;
}

.grade-entry-score-max {
    margin-left: 4px;
    color: var(--ink-500);
    font-size: 12px;
    font-weight: 700;
}

.grade-entry-score-max-inline {
    display: none;
    margin-left: 0;
    white-space: nowrap;
}

.grade-entry-score-control-row {
    display: grid;
    grid-template-columns: minmax(96px, 1fr) minmax(104px, 0.58fr);
    gap: 8px;
    align-items: center;
}

.grade-calculation-mode-criterion .grade-entry-score-control-row {
    grid-template-columns: 96px auto 48px auto;
    justify-content: start;
    gap: 8px;
}

.grade-calculation-mode-criterion .grade-entry-score-max-inline {
    display: inline-flex;
    align-items: center;
    min-height: 48px;
}

.grade-entry-score-number-control {
    position: relative;
    width: 100%;
    min-width: 0;
    height: 48px;
}

.grade-entry-mode-root .grade-entry-grid .grade-entry-score-number-control .grade-entry-score-input {
    height: 48px;
    padding-right: 28px;
    appearance: textfield;
}

.grade-entry-mode-root .grade-entry-grid .grade-entry-score-input.is-score-invalid {
    border-color: #dc2626;
    background: #fff7f7;
    box-shadow: 0 0 0 2px rgba(220, 38, 38, 0.12);
}

.grade-entry-mode-root .grade-entry-grid .grade-entry-score-input.is-score-invalid:focus {
    border-color: #b91c1c;
    box-shadow: 0 0 0 3px rgba(220, 38, 38, 0.18);
}

.grade-entry-score-input::-webkit-inner-spin-button,
.grade-entry-score-input::-webkit-outer-spin-button {
    margin: 0;
    appearance: none;
}

.grade-entry-score-stepper {
    position: absolute;
    top: 1px;
    right: 1px;
    bottom: 1px;
    display: grid;
    width: 24px;
    grid-template-rows: 1fr 1fr;
    overflow: hidden;
    border-left: 1px solid var(--line-200);
    border-radius: 0 7px 7px 0;
}

.grade-entry-score-step {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 0;
    padding: 0;
    border: 0;
    background: #f8fafc;
    color: var(--ink-700);
    cursor: pointer;
    font-size: 13px;
    font-weight: 900;
    line-height: 1;
}

.grade-entry-score-step + .grade-entry-score-step {
    border-top: 1px solid var(--line-200);
}

.grade-entry-score-step:hover,
.grade-entry-score-step:focus-visible {
    background: #eaf0ff;
    color: var(--brand-600);
    outline: none;
}

.grade-entry-score-step:disabled {
    cursor: not-allowed;
    opacity: 0.45;
}

.grade-entry-criterion-auto-value {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 48px;
    height: 48px;
    border-radius: 50%;
    background: #e8eefc;
    color: #244fc7;
    font-weight: 900;
}

.grade-calculation-mode-legacy .grade-entry-criterion-auto-value,
.grade-calculation-mode-legacy .grade-entry-period-summary {
    display: none;
}

.grade-calculation-mode-manual-criteria .grade-entry-criterion-name,
.grade-calculation-mode-manual-criteria .grade-entry-criterion-auto-value,
.grade-calculation-mode-manual-criteria .grade-entry-period-summary {
    display: none;
}

.grade-entry-period-summary {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 18px;
    margin-top: 10px;
    padding-top: 8px;
    border-top: 1px solid var(--line);
    color: var(--ink-700);
    font-size: 13px;
}

.grade-entry-period-summary strong {
    color: var(--ink-900);
    font-variant-numeric: tabular-nums;
}

.grade-calculation-mode-criterion .grade-entry-criterion-select:disabled,
.grade-calculation-mode-criterion .grade-entry-col-year-point .form-control[readonly],
.grade-calculation-mode-criterion .grade-entry-col-year-rating .form-control[readonly] {
    opacity: 1;
    background: #f4f7fb;
    color: var(--ink-900);
    font-weight: 800;
}

.grade-calculation-mode-manual-criteria .grade-entry-col-year-point .form-control[readonly],
.grade-calculation-mode-manual-criteria .grade-entry-col-year-rating .form-control:disabled {
    opacity: 1;
    background: #f4f7fb;
    color: var(--ink-900);
    font-weight: 800;
}

.grade-entry-criterion-guide {
    margin-top: 2px;
}

.grade-entry-criterion-decision {
    display: block;
}

.grade-entry-field-label {
    display: none;
    min-height: 38px;
    color: var(--ink-700);
    font-size: 12px;
    font-weight: 900;
    line-height: 1.4;
    overflow-wrap: anywhere;
}

.grade-entry-proactive-input-label {
    display: none;
}

.grade-proactive-mode-manual .grade-entry-proactive-scored-only,
.grade-proactive-mode-term-score .grade-entry-proactive-manual-only {
    display: none !important;
}

.grade-proactive-mode-term-score .grade-entry-proactive-scored-only {
    display: block;
}

.grade-proactive-mode-term-score .grade-entry-auto-reset.grade-entry-proactive-scored-only {
    display: inline-block;
}

.grade-entry-final-rating-decision {
    display: none;
}

.grade-calculation-mode-criterion .grade-entry-criterion-decision,
.grade-calculation-mode-criterion .grade-entry-final-rating-decision {
    display: grid;
    gap: 5px;
    min-width: 0;
    grid-template-rows: 42px 48px minmax(22px, auto);
    align-content: start;
}

.grade-calculation-mode-manual-criteria .grade-entry-criterion-decision,
.grade-calculation-mode-manual-criteria .grade-entry-final-rating-decision {
    display: grid;
    gap: 5px;
    min-width: 0;
    align-content: start;
}

.grade-calculation-mode-manual-criteria .grade-entry-criterion-decision {
    grid-template-rows: 48px minmax(22px, auto);
}

.grade-calculation-mode-manual-criteria .grade-entry-final-rating-decision {
    grid-template-rows: 42px 48px minmax(22px, auto);
}

.grade-calculation-mode-manual-criteria .grade-entry-col-criterion .grade-entry-decision-meta,
.grade-calculation-mode-manual-criteria .grade-entry-col-criterion .grade-entry-auto-reset,
.grade-calculation-mode-manual-criteria .grade-entry-col-criterion .grade-entry-annual-rate,
.grade-calculation-mode-manual-criteria .grade-entry-col-criterion .grade-entry-decision-auto {
    display: none !important;
}

.grade-calculation-mode-manual-criteria .grade-entry-col-criterion .grade-entry-decision-source {
    color: #0f766e;
}

.grade-calculation-mode-legacy .grade-entry-criterion-decision .grade-entry-annual-rate,
.grade-calculation-mode-legacy .grade-entry-criterion-decision .grade-entry-decision-auto,
.grade-calculation-mode-legacy .grade-entry-criterion-decision .grade-entry-decision-source,
.grade-calculation-mode-legacy .grade-entry-criterion-decision .grade-entry-auto-reset {
    display: none;
}

.grade-calculation-mode-legacy .grade-entry-year-point-decision .grade-entry-decision-meta {
    display: none;
}

.grade-calculation-mode-criterion .grade-entry-legacy-rating-input {
    display: none;
}

.grade-calculation-mode-manual-criteria .grade-entry-legacy-rating-input {
    display: none;
}

.grade-calculation-mode-manual-criteria.grade-entry-mode-criteria .grade-entry-col-year-rating {
    display: table-cell !important;
}

.grade-entry-annual-rate,
.grade-entry-decision-auto {
    display: block;
    color: var(--muted-500);
    font-size: 11px;
    font-weight: 700;
    line-height: 1.35;
}

.grade-entry-decision-meta {
    display: grid;
    min-height: 42px;
    align-content: start;
    gap: 2px;
}

.grade-entry-decision-feedback {
    display: flex;
    min-height: 22px;
    align-items: flex-start;
    align-content: flex-start;
    flex-wrap: wrap;
    gap: 4px 8px;
}

.grade-entry-annual-rate strong,
.grade-entry-decision-auto strong {
    color: var(--ink-900);
    font-size: 13px;
    font-variant-numeric: tabular-nums;
}

.grade-entry-decision-source {
    color: #0f766e;
    font-size: 11px;
    font-weight: 900;
}

.grade-entry-criterion-decision.is-manual .grade-entry-decision-source,
.grade-entry-final-rating-decision.is-manual .grade-entry-decision-source {
    color: #a16207;
}

.grade-entry-auto-reset {
    justify-self: start;
    padding: 0;
    border: 0;
    background: transparent;
    color: var(--brand-600);
    cursor: pointer;
    font-size: 11px;
    font-weight: 800;
    text-decoration: underline;
    text-underline-offset: 2px;
}

.grade-entry-auto-reset[hidden] {
    display: none;
}

.grade-entry-override-reason {
    margin-top: 10px;
    padding-top: 10px;
    border-top: 1px solid rgba(161, 98, 7, 0.22);
}

.grade-entry-override-reason[hidden] {
    display: none;
}

.grade-entry-override-reason label,
.grade-entry-override-reason small {
    display: block;
    color: #854d0e;
    font-size: 11px;
    font-weight: 800;
    line-height: 1.4;
}

.grade-entry-mode-root .grade-entry-grid .grade-entry-override-reason-input {
    min-height: 64px;
    height: auto;
    margin: 5px 0;
    resize: vertical;
    white-space: normal;
}

.grade-entry-grid tr.has-manual-override td {
    background: #fffdf5;
}

.grade-calculation-mode-criterion.grade-entry-criterion-view-term1 .grade-entry-score-item[data-target-term-no="2"],
.grade-calculation-mode-criterion.grade-entry-criterion-view-term2 .grade-entry-score-item[data-target-term-no="1"] {
    display: none !important;
}

.grade-calculation-mode-criterion.grade-entry-criterion-view-term1 .grade-entry-col-year-point,
.grade-calculation-mode-criterion.grade-entry-criterion-view-term1 .grade-entry-col-year-rating,
.grade-calculation-mode-criterion.grade-entry-criterion-view-term1 .grade-entry-col-criterion,
.grade-calculation-mode-criterion.grade-entry-criterion-view-term2 .grade-entry-col-year-point,
.grade-calculation-mode-criterion.grade-entry-criterion-view-term2 .grade-entry-col-year-rating,
.grade-calculation-mode-criterion.grade-entry-criterion-view-term2 .grade-entry-col-criterion,
.grade-calculation-mode-criterion.grade-entry-criterion-view-annual .grade-entry-col-score-list {
    display: none !important;
}

@media (min-width: 721px) and (max-width: 1320px) {
    .grade-calculation-mode-criterion .grade-entry-table-shell {
        overflow: visible;
    }

    .grade-calculation-mode-criterion .grade-entry-grid,
    .grade-calculation-mode-criterion .grade-entry-grid > tbody {
        display: block;
        width: 100%;
    }

    .grade-calculation-mode-criterion .grade-entry-grid {
        border: 0;
        background: transparent;
        overflow: visible;
    }

    .grade-calculation-mode-criterion .grade-entry-grid > tbody > tr:first-child {
        display: none;
    }

    .grade-calculation-mode-criterion .grade-entry-grid > tbody > tr:not(:first-child) {
        display: grid;
        grid-template-columns: 84px minmax(170px, 1.2fr) repeat(5, minmax(0, 1fr));
        margin-bottom: 12px;
        border: 1px solid var(--line-200);
        border-radius: var(--radius-sm);
        background: var(--surface-0);
        overflow: hidden;
    }

    .grade-calculation-mode-criterion .grade-entry-grid > tbody > tr:not(:first-child) > td {
        width: auto;
        min-width: 0;
        padding: 12px;
        border-right: 1px solid var(--line-200);
        border-bottom: 1px solid var(--line-200);
        vertical-align: top;
    }

    .grade-calculation-mode-criterion .grade-entry-grid > tbody > tr:not(:first-child) > td::before {
        display: block;
        min-height: 18px;
        margin-bottom: 8px;
        color: var(--muted-500);
        font-size: 11px;
        font-weight: 800;
        line-height: 1.45;
        overflow-wrap: anywhere;
    }

    .grade-calculation-mode-criterion .grade-entry-grid > tbody > tr:not(:first-child) > td:nth-child(1) {
        grid-column: 1;
        grid-row: 1 / 3;
    }

    .grade-calculation-mode-criterion .grade-entry-grid > tbody > tr:not(:first-child) > td:nth-child(1)::before {
        content: "出席番号";
    }

    .grade-calculation-mode-criterion .grade-entry-grid > tbody > tr:not(:first-child) > td:nth-child(2) {
        grid-column: 2;
        grid-row: 1 / 3;
    }

    .grade-calculation-mode-criterion .grade-entry-grid > tbody > tr:not(:first-child) > td:nth-child(2)::before {
        content: "氏名";
    }

    .grade-calculation-mode-criterion .grade-entry-grid > tbody > tr:not(:first-child) > td:nth-child(3),
    .grade-calculation-mode-criterion .grade-entry-grid > tbody > tr:not(:first-child) > td:nth-child(7) {
        display: none;
    }

    .grade-calculation-mode-criterion .grade-entry-grid > tbody > tr:not(:first-child) > td:nth-child(4) {
        grid-column: 3 / 8;
        grid-row: 1;
        border-right: 0;
    }

    .grade-calculation-mode-criterion .grade-entry-grid > tbody > tr:not(:first-child) > td:nth-child(4)::before {
        content: "前期・後期試験";
    }

    .grade-calculation-mode-criterion .grade-entry-grid > tbody > tr:not(:first-child) > td:nth-child(5) {
        grid-column: 3;
        grid-row: 2;
    }

    .grade-calculation-mode-criterion .grade-entry-grid > tbody > tr:not(:first-child) > td:nth-child(5)::before {
        content: "年間総合点";
    }

    .grade-calculation-mode-criterion .grade-entry-grid > tbody > tr:not(:first-child) > td:nth-child(6) {
        grid-column: 4;
        grid-row: 2;
    }

    .grade-calculation-mode-criterion .grade-entry-grid > tbody > tr:not(:first-child) > td:nth-child(6)::before {
        content: "5段階評定";
    }

    .grade-calculation-mode-criterion .grade-entry-grid > tbody > tr:not(:first-child) > td:nth-child(8) {
        grid-column: 5;
        grid-row: 2;
    }

    .grade-calculation-mode-criterion .grade-entry-grid > tbody > tr:not(:first-child) > td:nth-child(8)::before {
        content: "知識・技能";
    }

    .grade-calculation-mode-criterion .grade-entry-grid > tbody > tr:not(:first-child) > td:nth-child(9) {
        grid-column: 6;
        grid-row: 2;
    }

    .grade-calculation-mode-criterion .grade-entry-grid > tbody > tr:not(:first-child) > td:nth-child(9)::before {
        content: "思考・判断・表現";
    }

    .grade-calculation-mode-criterion .grade-entry-grid > tbody > tr:not(:first-child) > td:nth-child(10) {
        grid-column: 7;
        grid-row: 2;
        border-right: 0;
    }

    .grade-calculation-mode-criterion .grade-entry-grid > tbody > tr:not(:first-child) > td:nth-child(10)::before {
        content: "主体的態度";
    }

    .grade-calculation-mode-criterion .grade-entry-grid > tbody > tr:not(:first-child) > td:nth-child(n+5) {
        border-bottom: 0;
    }

    .grade-calculation-mode-criterion .grade-entry-score-list-inner {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (min-width: 1120px) and (max-width: 1320px) {
    .grade-calculation-mode-criterion .grade-entry-score-list-inner {
        grid-template-columns: repeat(4, minmax(0, 1fr));
    }
}

@media (min-width: 721px) {
    .grade-calculation-mode-criterion .grade-entry-table-shell {
        overflow: visible;
    }

    .grade-calculation-mode-criterion .grade-entry-grid,
    .grade-calculation-mode-criterion .grade-entry-grid > tbody {
        display: block;
        width: 100%;
    }

    .grade-calculation-mode-criterion .grade-entry-grid {
        min-width: 0;
        border: 0;
        background: transparent;
        overflow: visible;
    }

    .grade-calculation-mode-criterion .grade-entry-grid > tbody > tr:first-child {
        display: none;
    }

    .grade-calculation-mode-criterion .grade-entry-grid > tbody > tr:not(:first-child) {
        display: grid;
        margin-bottom: 12px;
        border: 1px solid var(--line-200);
        border-radius: var(--radius-sm);
        background: var(--surface-0);
        overflow: hidden;
    }

    .grade-calculation-mode-criterion .grade-entry-grid > tbody > tr:not(:first-child) > td {
        width: auto;
        min-width: 0;
        padding: 12px 14px;
        border-right: 1px solid var(--line-200);
        border-bottom: 1px solid var(--line-200);
        vertical-align: top;
    }

    .grade-calculation-mode-criterion .grade-entry-grid > tbody > tr:not(:first-child) > td::before {
        display: none !important;
        content: none !important;
    }

    .grade-calculation-mode-criterion .grade-entry-grid > tbody > tr:not(:first-child) > td[colspan] {
        grid-column: 1 / -1;
        border: 0;
    }

    .grade-calculation-mode-criterion .grade-entry-grid > tbody > tr:not(:first-child) > td:nth-child(1) {
        grid-column: 1;
        grid-row: 1;
        display: flex;
        align-items: center;
        justify-content: center;
        border-bottom: 1px solid var(--line-200);
    }

    .grade-calculation-mode-criterion .grade-entry-grid > tbody > tr:not(:first-child) > td:nth-child(2) {
        grid-row: 1;
        display: flex;
        min-height: 76px;
        align-items: center;
        gap: 16px;
        border-right: 0;
        border-bottom: 1px solid var(--line-200);
    }

    .grade-calculation-mode-criterion .grade-entry-grid > tbody > tr:not(:first-child) > td:nth-child(3),
    .grade-calculation-mode-criterion .grade-entry-grid > tbody > tr:not(:first-child) > td:nth-child(7) {
        display: none !important;
    }

    .grade-calculation-mode-criterion.grade-entry-criterion-view-term1 .grade-entry-grid > tbody > tr:not(:first-child),
    .grade-calculation-mode-criterion.grade-entry-criterion-view-term2 .grade-entry-grid > tbody > tr:not(:first-child) {
        grid-template-columns: 84px minmax(0, 1fr);
    }

    .grade-calculation-mode-criterion.grade-entry-criterion-view-term1 .grade-entry-grid > tbody > tr:not(:first-child) > td:nth-child(2),
    .grade-calculation-mode-criterion.grade-entry-criterion-view-term2 .grade-entry-grid > tbody > tr:not(:first-child) > td:nth-child(2) {
        grid-column: 2;
    }

    .grade-calculation-mode-criterion.grade-entry-criterion-view-term1 .grade-entry-grid > tbody > tr:not(:first-child) > td:nth-child(4),
    .grade-calculation-mode-criterion.grade-entry-criterion-view-term2 .grade-entry-grid > tbody > tr:not(:first-child) > td:nth-child(4) {
        grid-column: 1 / -1;
        grid-row: 2;
        border-right: 0;
        border-bottom: 0;
    }

    .grade-calculation-mode-criterion.grade-entry-criterion-view-term1 .grade-entry-score-list-inner,
    .grade-calculation-mode-criterion.grade-entry-criterion-view-term2 .grade-entry-score-list-inner {
        grid-template-columns: repeat(2, minmax(260px, 1fr));
        gap: 18px 28px;
    }

    .grade-calculation-mode-criterion.grade-entry-criterion-view-term1 .grade-entry-criterion-name,
    .grade-calculation-mode-criterion.grade-entry-criterion-view-term2 .grade-entry-criterion-name {
        min-height: 22px;
        margin-bottom: 8px;
        font-size: 13px;
    }

    .grade-calculation-mode-criterion.grade-entry-criterion-view-annual .grade-entry-grid > tbody > tr:not(:first-child) {
        grid-template-columns: 84px repeat(5, minmax(0, 1fr));
    }

    .grade-calculation-mode-criterion.grade-entry-criterion-view-annual .grade-entry-grid > tbody > tr:not(:first-child) > td:nth-child(2) {
        grid-column: 2 / 7;
        display: grid;
        grid-template-columns: minmax(220px, 1fr) minmax(320px, 520px);
    }

    .grade-calculation-mode-criterion.grade-entry-criterion-view-annual .grade-entry-grid > tbody > tr:not(:first-child) > td:nth-child(5),
    .grade-calculation-mode-criterion.grade-entry-criterion-view-annual .grade-entry-grid > tbody > tr:not(:first-child) > td:nth-child(6),
    .grade-calculation-mode-criterion.grade-entry-criterion-view-annual .grade-entry-grid > tbody > tr:not(:first-child) > td:nth-child(8),
    .grade-calculation-mode-criterion.grade-entry-criterion-view-annual .grade-entry-grid > tbody > tr:not(:first-child) > td:nth-child(9),
    .grade-calculation-mode-criterion.grade-entry-criterion-view-annual .grade-entry-grid > tbody > tr:not(:first-child) > td:nth-child(10) {
        grid-row: 2;
        display: grid;
        min-height: 172px;
        grid-template-rows: 38px 1fr;
        align-content: start;
        border-bottom: 0;
    }

    .grade-calculation-mode-criterion.grade-entry-criterion-view-annual .grade-entry-grid > tbody > tr:not(:first-child) > td:nth-child(5) {
        grid-column: 2;
    }

    .grade-calculation-mode-criterion.grade-entry-criterion-view-annual .grade-entry-grid > tbody > tr:not(:first-child) > td:nth-child(8) {
        grid-column: 3;
    }

    .grade-calculation-mode-criterion.grade-entry-criterion-view-annual .grade-entry-grid > tbody > tr:not(:first-child) > td:nth-child(9) {
        grid-column: 4;
    }

    .grade-calculation-mode-criterion.grade-entry-criterion-view-annual .grade-entry-grid > tbody > tr:not(:first-child) > td:nth-child(10) {
        grid-column: 5;
    }

    .grade-calculation-mode-criterion.grade-entry-criterion-view-annual .grade-entry-grid > tbody > tr:not(:first-child) > td:nth-child(6) {
        grid-column: 6;
        border-right: 0;
    }

    .grade-calculation-mode-criterion.grade-entry-criterion-view-annual .grade-entry-field-label {
        display: block;
    }

    .grade-calculation-mode-criterion.grade-entry-criterion-view-annual .grade-entry-override-reason {
        width: 100%;
        margin: 0;
        padding: 0 0 0 16px;
        border-top: 0;
        border-left: 2px solid rgba(161, 98, 7, 0.28);
    }

    .grade-calculation-mode-criterion.grade-entry-criterion-view-annual .grade-entry-override-reason-input {
        min-height: 52px;
        margin: 4px 0;
    }
}

@media (min-width: 721px) and (max-width: 1100px) {
    .grade-calculation-mode-criterion.grade-entry-criterion-view-annual .grade-entry-grid > tbody > tr:not(:first-child) {
        grid-template-columns: 84px repeat(2, minmax(0, 1fr));
    }

    .grade-calculation-mode-criterion.grade-entry-criterion-view-annual .grade-entry-grid > tbody > tr:not(:first-child) > td:nth-child(2) {
        grid-column: 2 / 4;
        grid-template-columns: 1fr;
    }

    .grade-calculation-mode-criterion.grade-entry-criterion-view-annual .grade-entry-grid > tbody > tr:not(:first-child) > td:nth-child(5) {
        grid-column: 2;
        grid-row: 2;
    }

    .grade-calculation-mode-criterion.grade-entry-criterion-view-annual .grade-entry-grid > tbody > tr:not(:first-child) > td:nth-child(8) {
        grid-column: 3;
        grid-row: 2;
        border-right: 0;
    }

    .grade-calculation-mode-criterion.grade-entry-criterion-view-annual .grade-entry-grid > tbody > tr:not(:first-child) > td:nth-child(9) {
        grid-column: 2;
        grid-row: 3;
    }

    .grade-calculation-mode-criterion.grade-entry-criterion-view-annual .grade-entry-grid > tbody > tr:not(:first-child) > td:nth-child(10) {
        grid-column: 3;
        grid-row: 3;
        border-right: 0;
    }

    .grade-calculation-mode-criterion.grade-entry-criterion-view-annual .grade-entry-grid > tbody > tr:not(:first-child) > td:nth-child(6) {
        grid-column: 2 / 4;
        grid-row: 4;
        border-right: 0;
    }

    .grade-calculation-mode-criterion.grade-entry-criterion-view-annual .grade-entry-final-rating-decision {
        width: min(100%, 320px);
    }
}

@media (min-width: 721px) and (max-width: 860px) {
    .grade-calculation-mode-criterion.grade-entry-criterion-view-term1 .grade-entry-score-list-inner,
    .grade-calculation-mode-criterion.grade-entry-criterion-view-term2 .grade-entry-score-list-inner {
        grid-template-columns: minmax(0, 1fr);
    }
}

@media (max-width: 720px) {
    .grade-entry-criterion-view-toolbar {
        display: grid;
        width: 100%;
        grid-template-columns: repeat(3, minmax(0, 1fr));
        border-radius: var(--radius-sm);
    }

    .grade-entry-criterion-view-toolbar .grade-entry-mode-button {
        min-width: 0;
        min-height: 50px;
        padding: 7px 6px;
        white-space: normal;
        line-height: 1.35;
    }

    .grade-calculation-mode-criterion .grade-entry-score-list-inner {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .grade-calculation-mode-criterion .grade-entry-col-student-no,
    .grade-calculation-mode-criterion .grade-entry-col-student,
    .grade-calculation-mode-criterion .grade-entry-col-score-list,
    .grade-calculation-mode-criterion .grade-entry-col-year-point,
    .grade-calculation-mode-criterion .grade-entry-col-year-rating,
    .grade-calculation-mode-criterion .grade-entry-col-criterion {
        width: auto;
    }

    .grade-entry-override-reason {
        width: 100%;
    }

    .grade-entry-conflict-review-actions .btn {
        width: 100%;
    }

    .grade-entry-presence-summary {
        width: 100%;
    }
}

.grade-entry-mode-root .grade-entry-grid .grade-entry-score-input,
.grade-entry-mode-root .grade-entry-grid .grade-entry-score-status,
.grade-entry-mode-root .grade-entry-grid .grade-entry-criterion-select,
.grade-entry-mode-root .grade-entry-grid .grade-entry-col-year-point .form-control,
.grade-entry-mode-root .grade-entry-grid .grade-entry-col-year-rating .form-control {
    min-height: 48px;
    height: 48px;
    padding-top: 10px;
    padding-bottom: 10px;
}

.grade-calculation-mode-criterion .grade-entry-col-year-point input[type="number"] {
    appearance: textfield;
    padding-right: 10px;
    text-align: center;
}

.grade-calculation-mode-criterion .grade-entry-col-year-point input[type="number"]::-webkit-inner-spin-button,
.grade-calculation-mode-criterion .grade-entry-col-year-point input[type="number"]::-webkit-outer-spin-button {
    margin: 0;
    appearance: none;
}

.grade-entry-year-preview {
    display: block;
    min-height: 16px;
    margin-top: 6px;
    color: #0f766e;
    font-size: 12px;
    font-weight: 800;
    line-height: 1.35;
}

.grade-entry-year-preview:empty {
    display: none;
}

.grade-entry-mode-root .grade-entry-grid .grade-entry-score-status,
.grade-entry-mode-root .grade-entry-grid .grade-entry-criterion-select {
    padding-right: 24px;
    font-size: 14px;
    font-weight: 800;
}

.grade-entry-mode-criteria .grade-entry-year-rule-notice {
    display: none;
}

.grade-year-result-grid th,
.grade-year-result-grid td {
    white-space: nowrap;
}

.grade-year-result-grid th:nth-child(2),
.grade-year-result-grid td:nth-child(2) {
    min-width: 180px;
    white-space: normal;
}

@media (max-width: 1024px) {
    .course-order-editor-workspace {
        grid-template-columns: 1fr;
    }

    .course-order-editor-side {
        position: static;
    }

    .student-report-workspace {
        grid-template-columns: 1fr;
    }

    .student-report-side {
        position: static;
    }
}

.table-chat td {
    font-size: 13px;
}

.table-schedule th,
.table-schedule td {
    white-space: nowrap;
}

.table-schedule td {
    font-variant-numeric: tabular-nums;
}

.table-schedule th:nth-child(1),
.table-schedule td:nth-child(1) {
    min-width: 180px;
}

.table-schedule th:nth-child(2),
.table-schedule td:nth-child(2),
.table-schedule th:nth-child(3),
.table-schedule td:nth-child(3) {
    min-width: 150px;
}

.table-schedule th:nth-child(4),
.table-schedule td:nth-child(4) {
    min-width: 140px;
}

.table-schedule-actions th:nth-child(5),
.table-schedule-actions td:nth-child(5) {
    min-width: 60px;
    text-align: center;
}

.table-period-settings th,
.table-period-settings td {
    white-space: nowrap;
}

.table-period-settings td {
    font-variant-numeric: tabular-nums;
}

.table-period-settings th:nth-child(1),
.table-period-settings td:nth-child(1) {
    min-width: 80px;
    text-align: center;
}

.table-period-settings th:nth-child(2),
.table-period-settings td:nth-child(2) {
    min-width: 200px;
}

.table-period-settings th:nth-child(3),
.table-period-settings td:nth-child(3),
.table-period-settings th:nth-child(4),
.table-period-settings td:nth-child(4) {
    min-width: 120px;
    text-align: center;
}

.table-period-settings th:nth-child(5),
.table-period-settings td:nth-child(5) {
    min-width: 120px;
    text-align: center;
}

.table-period-settings .form-control {
    min-width: 0;
    width: 120px;
    padding: 6px 10px;
    font-size: 13px;
}

.table-period-settings .period-name-input {
    width: 200px;
}

.hr-credit-settings-table th,
.hr-credit-settings-table td {
    white-space: nowrap;
}

.hr-credit-settings-table th:nth-child(1),
.hr-credit-settings-table td:nth-child(1) {
    min-width: 160px;
}

.hr-credit-settings-table th:nth-child(2),
.hr-credit-settings-table td:nth-child(2) {
    min-width: 220px;
}

.hr-credit-settings-table th:nth-child(3),
.hr-credit-settings-table td:nth-child(3) {
    min-width: 180px;
}

.hr-credit-settings-table th:nth-child(4),
.hr-credit-settings-table td:nth-child(4) {
    min-width: 110px;
    text-align: center;
}

.hr-credit-settings-table th:nth-child(5),
.hr-credit-settings-table td:nth-child(5) {
    min-width: 120px;
}

.hr-credit-settings-table th:nth-child(6),
.hr-credit-settings-table td:nth-child(6) {
    min-width: 110px;
    text-align: center;
}

.hr-credit-settings-input {
    min-width: 0;
    width: 96px;
}

.table-actions {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    flex-wrap: wrap;
}

.icon-action {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 34px;
    height: 34px;
    border-radius: 12px;
    border: 1px solid rgba(148, 163, 184, 0.55);
    background: rgba(255, 255, 255, 0.9);
    color: #334155;
    box-shadow: 0 8px 14px rgba(15, 23, 42, 0.08);
    text-decoration: none;
    transition: transform 160ms ease, box-shadow 160ms ease, background 160ms ease, border-color 160ms ease, color 160ms ease;
}

.icon-action:hover,
.icon-action:focus {
    transform: translateY(-1px);
    background: rgba(42, 91, 215, 0.08);
    border-color: rgba(42, 91, 215, 0.35);
    color: #1d4ed8;
    box-shadow: 0 10px 18px rgba(15, 23, 42, 0.12);
}

.icon-action svg {
    width: 18px;
    height: 18px;
}

.icon-action--danger {
    color: #b91c1c;
    border-color: rgba(239, 68, 68, 0.35);
}

.icon-action--danger:hover,
.icon-action--danger:focus {
    background: rgba(239, 68, 68, 0.1);
    border-color: rgba(239, 68, 68, 0.55);
    color: #991b1b;
}

.icon-action--ok {
    color: #0f766e;
    border-color: rgba(20, 184, 166, 0.35);
}

.icon-action--ok:hover,
.icon-action--ok:focus {
    background: rgba(20, 184, 166, 0.12);
    border-color: rgba(20, 184, 166, 0.55);
    color: #0f766e;
}

.period-add-actions {
    align-self: end;
}

.btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    padding: 8px 16px;
    border-radius: 999px;
    border: none;
    background: linear-gradient(135deg, var(--brand-500), var(--brand-600));
    color: #ffffff;
    cursor: pointer;
    text-decoration: none;
    font-size: 14px;
    font-weight: 600;
    letter-spacing: 0.03em;
    box-shadow: 0 10px 18px rgba(42, 91, 215, 0.22);
    transition: transform 180ms ease, box-shadow 180ms ease;
}

.btn:hover,
.btn:focus {
    transform: translateY(-1px);
    box-shadow: 0 12px 22px rgba(42, 91, 215, 0.28);
}

.btn[disabled],
.btn.disabled {
    opacity: 0.48;
    cursor: not-allowed;
    transform: none;
    box-shadow: none;
    pointer-events: none;
}

.btn-secondary {
    background: linear-gradient(135deg, #14b8a6, #0f766e);
    box-shadow: 0 10px 18px rgba(18, 163, 166, 0.22);
}

.btn-secondary:hover,
.btn-secondary:focus {
    box-shadow: 0 12px 22px rgba(18, 163, 166, 0.28);
}

.btn-outline {
    background: var(--surface-0);
    border: 1px solid rgba(42, 91, 215, 0.5);
    color: var(--brand-600);
    box-shadow: none;
}

.btn-outline:hover,
.btn-outline:focus {
    background: rgba(42, 91, 215, 0.08);
    box-shadow: none;
}

.btn-reception-open {
    background: linear-gradient(135deg, #10b981, #0f766e);
    box-shadow: 0 10px 18px rgba(16, 185, 129, 0.22);
}

.btn-reception-open:hover,
.btn-reception-open:focus {
    box-shadow: 0 12px 22px rgba(16, 185, 129, 0.28);
}

.btn-reception-close {
    background: linear-gradient(135deg, #f59e0b, #d97706);
    box-shadow: 0 10px 18px rgba(245, 158, 11, 0.24);
}

.btn-reception-close:hover,
.btn-reception-close:focus {
    box-shadow: 0 12px 22px rgba(245, 158, 11, 0.3);
}

@media (max-width: 760px) {
    .attendance-reception-banner-body {
        grid-template-columns: 1fr;
    }

    .attendance-reception-count strong {
        font-size: 20px;
    }

    .attendance-approval-filters {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .attendance-approval-search {
        grid-column: 1 / -1;
    }
}

.btn-xs {
    padding: 5px 12px;
    font-size: 12px;
    letter-spacing: 0.02em;
    margin-right: 6px;
}

.school-settings-layout .school-admin-nav-stack {
    display: grid;
    gap: 8px;
    margin-bottom: 16px;
}

.school-settings-layout .school-admin-tab-groups {
    gap: 10px;
}

.school-settings-layout .school-admin-tab-groups .talk-tab {
    padding: 7px 14px;
    border-color: rgba(42, 91, 215, 0.24);
    background: rgba(42, 91, 215, 0.08);
    color: var(--ink-700);
}

.school-settings-layout .school-admin-tab-groups .talk-tab.is-active {
    color: #ffffff;
    border-color: rgba(42, 91, 215, 0);
    background: linear-gradient(135deg, rgba(42, 91, 215, 0.95), rgba(59, 114, 240, 0.88));
}

.school-settings-layout .school-admin-tabs {
    margin-bottom: 0;
    padding-top: 2px;
}

.school-subtabs {
    margin-bottom: 14px;
}

.school-guide-panel {
    border: 1px solid rgba(42, 91, 215, 0.18);
    border-radius: 14px;
    background: linear-gradient(135deg, rgba(42, 91, 215, 0.08), rgba(18, 163, 166, 0.08));
    padding: 14px 16px;
}

.school-guide-panel h3 {
    margin-bottom: 8px;
    font-size: 15px;
}

.school-guide-list {
    margin: 0;
    padding-left: 18px;
    display: grid;
    gap: 4px;
    color: var(--ink-700);
    font-size: 13px;
}

.academic-structure-guide h3 {
    margin-bottom: 8px;
    font-size: 15px;
}

.academic-structure-guide-list {
    margin: 0;
    padding-left: 18px;
    display: grid;
    gap: 4px;
    color: var(--ink-700);
    font-size: 13px;
}

.school-current-year {
    color: var(--ink-800);
    font-weight: 600;
}

.mt-12 {
    margin-top: 12px;
}

.school-settings-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
}

.school-form-section {
    margin-top: 18px;
    padding-top: 16px;
    border-top: 1px solid var(--line-200);
}

.school-form-section-title {
    margin: 0 0 12px;
    color: var(--ink-800);
    font-size: 15px;
    font-weight: 700;
    letter-spacing: 0;
}

.school-form-section .school-settings-grid {
    margin-top: 0;
}

.subject-settings-section {
    margin-top: 18px;
}

.subject-settings-editor-section {
    padding-top: 2px;
}

.subject-settings-list-section {
    margin-top: 28px;
    padding-top: 22px;
    border-top: 1px solid var(--line-200);
}

.subject-settings-section-head {
    display: flex;
    justify-content: space-between;
    gap: 16px;
    align-items: flex-start;
    margin-bottom: 12px;
}

.subject-settings-section-head .school-form-section-title {
    margin-bottom: 4px;
}

.subject-settings-section-head p {
    margin: 0;
    color: var(--ink-600);
    font-size: 13px;
    font-weight: 600;
}

.subject-settings-filter-panel {
    padding: 14px;
    border: 1px solid rgba(148, 163, 184, 0.24);
    border-radius: 8px;
    background: rgba(248, 251, 255, 0.92);
}

.subject-settings-filter-panel .school-settings-grid {
    margin-top: 0;
}

.subject-settings-filter-panel .school-settings-actions {
    margin-top: 0;
}

.subject-settings-list-meta {
    margin: 10px 0 8px;
    font-size: 13px;
    font-weight: 700;
}

.school-scroll-target {
    scroll-margin-top: 96px;
    outline: none;
}

.school-settings-actions {
    margin-top: 6px;
    justify-content: flex-start;
}

.school-check,
.checkbox-inline,
.provisioning-inline-check {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    min-height: 42px;
    color: var(--ink-700);
    font-size: 13px;
    font-weight: 600;
    line-height: 1.5;
    white-space: normal;
}

.form-field .checkbox-inline,
.filter-field .checkbox-inline {
    color: var(--ink-700);
    font-size: 13px;
    font-weight: 600;
    letter-spacing: 0;
    line-height: 1.5;
    white-space: normal;
}

.school-check input[type="checkbox"],
.checkbox-inline input[type="checkbox"],
.provisioning-inline-check input[type="checkbox"] {
    flex: 0 0 auto;
    width: 18px;
    height: 18px;
    margin: 0;
}

.school-check label,
.provisioning-inline-check label {
    margin: 0;
    color: inherit;
    font-size: inherit;
    font-weight: inherit;
    letter-spacing: 0;
    line-height: inherit;
    white-space: normal;
}

.verification-scan-actions {
    display: flex;
    gap: 10px;
    align-items: center;
    flex-wrap: wrap;
}

.verification-scan-actions .form-control {
    flex: 1 1 260px;
}

.verification-scan-toolbar {
    display: flex;
    gap: 10px;
    flex-wrap: wrap;
    margin-top: 10px;
}

.verification-scan-toolbar .btn {
    min-width: 176px;
}

.verification-panel-note {
    margin: 0;
    max-width: 62ch;
    color: var(--ink-700);
    line-height: 1.75;
}

.verification-scan-status {
    display: block;
    margin-top: 10px;
}

.verification-scan-status.is-error {
    color: #c2410c;
}

.verification-scan-status.is-success {
    color: #15803d;
}

.verification-scanner-panel {
    position: relative;
    display: block;
    width: 100%;
}

.verification-scanner-video {
    width: 100%;
    min-height: 320px;
    max-height: min(72vh, 640px);
    object-fit: cover;
    border-radius: 16px;
    background: #0f172a;
    display: block;
}

.verification-scanner-open {
    overflow: hidden;
}

.verification-scanner-overlay[hidden] {
    display: none;
}

.verification-scanner-overlay {
    position: fixed;
    inset: 0;
    z-index: 160;
    display: grid;
    place-items: center;
    padding: 24px;
}

.verification-scanner-overlay-backdrop {
    position: absolute;
    inset: 0;
    background: rgba(15, 23, 42, 0.78);
    backdrop-filter: blur(6px);
}

.verification-scanner-overlay-panel {
    position: relative;
    z-index: 1;
    width: min(100%, 760px);
    max-height: calc(100vh - 48px);
    display: grid;
    gap: 16px;
    padding: 20px;
    border-radius: 28px;
    border: 1px solid rgba(191, 219, 254, 0.28);
    background: linear-gradient(180deg, rgba(7, 16, 32, 0.98), rgba(15, 23, 42, 0.96));
    box-shadow: 0 28px 80px rgba(2, 6, 23, 0.45);
    color: #fff;
    overflow: hidden;
}

.verification-scanner-overlay-head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
}

.verification-scanner-overlay-copy {
    display: grid;
    gap: 6px;
}

.verification-scanner-overlay-eyebrow {
    font-size: 12px;
    font-weight: 800;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: rgba(191, 219, 254, 0.9);
}

.verification-scanner-overlay-head h3 {
    margin: 0;
    font-size: 30px;
    font-weight: 800;
    letter-spacing: -0.02em;
    color: #fff;
}

.verification-scanner-overlay-head p {
    margin: 0;
    color: rgba(226, 232, 240, 0.92);
    line-height: 1.7;
}

.verification-scanner-close {
    flex: 0 0 auto;
    border-color: rgba(191, 219, 254, 0.35);
    color: #fff;
    background: rgba(15, 23, 42, 0.36);
}

.verification-scanner-close:hover {
    background: rgba(30, 41, 59, 0.72);
    color: #fff;
}

.verification-scanner-overlay-body {
    display: grid;
    gap: 14px;
    min-height: 0;
}

.verification-scanner-stage {
    position: relative;
    overflow: hidden;
    border-radius: 22px;
    background: #020617;
    border: 1px solid rgba(148, 163, 184, 0.18);
}

.verification-scanner-frame {
    position: absolute;
    inset: 0;
    pointer-events: none;
    display: grid;
    place-items: center;
}

.verification-scanner-frame::before {
    content: "";
    width: min(72vw, 340px);
    aspect-ratio: 1 / 1;
    border-radius: 28px;
    border: 3px solid rgba(96, 165, 250, 0.95);
    box-shadow: 0 0 0 999px rgba(2, 6, 23, 0.34);
}

.verification-scanner-frame span {
    position: absolute;
    bottom: 18px;
    left: 50%;
    transform: translateX(-50%);
    padding: 8px 14px;
    border-radius: 999px;
    background: rgba(15, 23, 42, 0.82);
    color: rgba(226, 232, 240, 0.96);
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 0.03em;
}

.verification-scanner-overlay-status {
    padding: 12px 14px;
    border-radius: 18px;
    background: rgba(15, 23, 42, 0.54);
    border: 1px solid rgba(148, 163, 184, 0.18);
    color: rgba(226, 232, 240, 0.96);
    line-height: 1.7;
}

.verification-scanner-overlay-status.is-error {
    color: #fecaca;
    border-color: rgba(248, 113, 113, 0.35);
    background: rgba(127, 29, 29, 0.36);
}

.verification-scanner-overlay-status.is-success {
    color: #dcfce7;
    border-color: rgba(74, 222, 128, 0.35);
    background: rgba(20, 83, 45, 0.38);
}

.verification-scanner-overlay-actions {
    display: flex;
    gap: 10px;
    flex-wrap: wrap;
    justify-content: flex-end;
}

.verification-scanner-overlay-actions .btn {
    min-width: 160px;
}

.verification-search-panel {
    overflow: hidden;
}

.verification-search-panel > summary {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    cursor: pointer;
    list-style: none;
    font-size: 18px;
    font-weight: 700;
    color: var(--ink-900);
}

.verification-search-panel > summary::-webkit-details-marker {
    display: none;
}

.verification-search-panel > summary::after {
    content: "⌄";
    color: var(--muted-500);
    font-size: 18px;
    line-height: 1;
    transition: transform 0.2s ease;
}

.verification-search-panel[open] > summary::after {
    transform: rotate(180deg);
}

.verification-search-panel__body {
    margin-top: 12px;
}

.verification-compact-shortcuts {
    display: flex;
    gap: 10px;
    flex-wrap: wrap;
}

.verification-management-page.is-compact .verification-scan-card,
.verification-management-page.is-compact .verification-list-card {
    scroll-margin-top: 16px;
}

.verification-detail-card {
    scroll-margin-top: 96px;
    outline: none;
}

.verification-detail-head {
    align-items: center;
}

.verification-detail-badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 88px;
}

.verification-detail-badge.is-neutral {
    background: rgba(59, 114, 240, 0.08);
    border-color: rgba(59, 114, 240, 0.16);
    color: var(--ink-700);
}

.verification-detail-badge.is-success {
    background: rgba(22, 163, 74, 0.12);
    border-color: rgba(22, 163, 74, 0.2);
    color: #166534;
}

.verification-detail-badge.is-warning {
    background: rgba(245, 158, 11, 0.12);
    border-color: rgba(245, 158, 11, 0.22);
    color: #b45309;
}

.verification-detail-badge.is-danger {
    background: rgba(239, 68, 68, 0.12);
    border-color: rgba(239, 68, 68, 0.2);
    color: #b91c1c;
}

.verification-detail-person {
    display: grid;
    gap: 4px;
}

.verification-detail-eyebrow {
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 0.05em;
    color: var(--muted-500);
}

.verification-detail-title {
    font-size: 28px;
    font-weight: 800;
    line-height: 1.24;
    letter-spacing: -0.02em;
    color: var(--ink-900);
}

.verification-detail-callout {
    margin-top: 10px;
    padding: 12px 14px;
    border-radius: 16px;
    border: 1px solid rgba(59, 114, 240, 0.16);
    background: rgba(59, 114, 240, 0.08);
    color: var(--ink-800);
    line-height: 1.65;
}

.verification-detail-callout.is-success {
    border-color: rgba(22, 163, 74, 0.18);
    background: rgba(22, 163, 74, 0.08);
    color: #166534;
}

.verification-detail-callout.is-warning {
    border-color: rgba(245, 158, 11, 0.22);
    background: rgba(245, 158, 11, 0.1);
    color: #92400e;
}

.verification-detail-callout.is-danger {
    border-color: rgba(239, 68, 68, 0.2);
    background: rgba(239, 68, 68, 0.08);
    color: #b91c1c;
}

.verification-detail-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
    margin-top: 14px;
}

.verification-detail-item {
    display: grid;
    gap: 6px;
    padding: 12px 14px;
    border-radius: 16px;
    border: 1px solid var(--line-200);
    background: rgba(255, 255, 255, 0.82);
}

.verification-detail-label {
    font-size: 12px;
    font-weight: 700;
    color: var(--muted-500);
    letter-spacing: 0.03em;
}

.verification-detail-value {
    color: var(--ink-900);
    font-weight: 600;
    line-height: 1.55;
}

.verification-decision-actions {
    justify-content: flex-start;
    gap: 10px;
}

.verification-detail-secondary-actions {
    justify-content: flex-start;
    margin-top: 10px;
}

.verification-note-field {
    margin-top: 14px;
}

.verification-note-field .form-control {
    min-height: 132px;
}

@media (max-width: 860px) {
    .dashboard-admin-work-panel {
        padding: 10px;
        border-radius: 16px;
    }

    .dashboard-admin-work-panel--attention {
        padding: 10px 10px 12px;
    }

    .dashboard-admin-work-panel--idle {
        padding: 2px 0 4px;
        margin-bottom: 10px;
    }

    .dashboard-admin-work-panel-head {
        flex-direction: column;
        gap: 8px;
    }

    .dashboard-admin-work-panel-head p {
        display: none;
    }

    .dashboard-admin-work-badge {
        min-height: 28px;
        padding: 0 10px;
        font-size: 11px;
    }

    .dashboard-admin-work-widget {
        grid-template-columns: 1fr;
        gap: 10px 12px;
        margin-top: 10px;
        padding: 14px;
        border-radius: 18px;
    }

    .dashboard-admin-work-widget__main {
        grid-template-columns: auto minmax(0, 1fr);
        gap: 12px;
        align-items: center;
        justify-items: stretch;
    }

    .dashboard-admin-work-widget__icon {
        width: 56px;
        height: 56px;
        border-radius: 18px;
    }

    .dashboard-admin-work-widget__icon svg {
        width: 25px;
        height: 25px;
    }

    .dashboard-admin-work-widget__copy {
        gap: 4px;
    }

    .dashboard-admin-work-widget__copy h3 {
        font-size: 22px;
        line-height: 1.12;
    }

    .dashboard-admin-work-widget__copy p {
        font-size: 13px;
        line-height: 1.45;
        display: -webkit-box;
        -webkit-line-clamp: 2;
        -webkit-box-orient: vertical;
        overflow: hidden;
    }

    .dashboard-admin-work-widget__meta {
        display: flex;
        flex-wrap: wrap;
        align-items: center;
        gap: 6px 10px;
        justify-items: start;
        text-align: left;
    }

    .dashboard-admin-work-widget__count-label {
        display: none;
    }

    .dashboard-admin-work-widget__count {
        font-size: 28px;
    }

    .dashboard-admin-work-widget__state {
        min-height: 26px;
        padding: 0 9px;
        font-size: 11px;
    }

    .dashboard-admin-work-widget__actions {
        justify-content: stretch;
        display: grid;
        grid-template-columns: 1fr;
        gap: 8px;
    }

    .dashboard-admin-work-widget__actions .btn {
        width: 100%;
        min-height: 42px;
        padding: 8px 12px;
        font-size: 14px;
    }

    .dashboard-admin-work-widget--idle {
        padding: 12px 14px;
        gap: 10px 12px;
    }

    .dashboard-admin-work-widget--idle .dashboard-admin-work-widget__main {
        grid-template-columns: auto minmax(0, 1fr);
        gap: 12px;
        justify-items: stretch;
    }

    .dashboard-admin-work-widget--idle .dashboard-admin-work-widget__copy h3 {
        font-size: 20px;
    }

    .dashboard-admin-work-widget--idle .dashboard-admin-work-widget__copy p {
        font-size: 12px;
    }

    .verification-scanner-overlay {
        padding: 0;
    }

    .verification-scanner-overlay-panel {
        width: 100%;
        height: 100%;
        max-height: none;
        border-radius: 0;
        padding: max(16px, env(safe-area-inset-top)) 16px max(16px, env(safe-area-inset-bottom)) 16px;
        grid-template-rows: auto minmax(0, 1fr) auto;
    }

    .verification-scanner-overlay-head {
        align-items: stretch;
        flex-direction: column;
    }

    .verification-scanner-overlay-head h3 {
        font-size: 26px;
    }

    .verification-scanner-stage {
        min-height: 54vh;
    }

    .verification-scanner-video {
        min-height: 54vh;
        max-height: none;
        border-radius: 18px;
    }

    .verification-scanner-frame::before {
        width: min(76vw, 320px);
        border-radius: 24px;
    }

    .verification-scanner-overlay-actions {
        display: grid;
        grid-template-columns: 1fr;
    }

    .verification-scanner-overlay-actions .btn,
    .verification-scan-toolbar .btn {
        width: 100%;
        min-width: 0;
    }

    .verification-management-page.is-compact .page-head {
        margin-bottom: 8px;
    }

    .verification-management-page.is-compact .page-subtitle,
    .verification-management-page.is-compact .page-actions,
    .verification-management-page.is-compact .school-admin-nav-stack,
    .verification-management-page.is-compact .verification-panel-note {
        display: none;
    }

    .verification-management-page.is-compact .page-title {
        font-size: 30px;
    }

    .verification-management-page.is-compact .verification-scan-field {
        margin-top: 10px;
    }

    .verification-management-page.is-compact .verification-scan-actions {
        gap: 8px;
    }

    .verification-management-page.is-compact .verification-scan-actions .form-control {
        flex-basis: 100%;
    }

    .verification-management-page.is-compact .verification-compact-shortcuts {
        display: grid;
        grid-template-columns: 1fr;
    }

    .verification-management-page.is-compact .verification-compact-shortcuts .btn {
        width: 100%;
    }

    .verification-management-page.is-compact .verification-search-panel > summary {
        font-size: 16px;
    }
}

.attendance-reason-toolbar {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 12px;
    flex-wrap: wrap;
    margin-top: 6px;
}

.attendance-reason-toolbar-group {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
    padding: 10px 12px;
    border: 1px solid var(--line-200);
    border-radius: 12px;
    background: rgba(255, 255, 255, 0.78);
}

.attendance-reason-toolbar-group-order {
    background: rgba(59, 114, 240, 0.06);
}

.attendance-reason-toolbar-label {
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 0.02em;
    color: var(--ink-600);
    margin-right: 4px;
}

.attendance-reason-order-root .attendance-reason-order-handle {
    cursor: grab;
    user-select: none;
    min-width: 34px;
    min-height: 32px;
    font-size: 14px;
    padding: 4px 10px;
}

.attendance-reason-order-root .attendance-reason-order-handle:active {
    cursor: grabbing;
}

.attendance-reason-order-root .reason-order-row.is-dragging {
    opacity: 0.56;
    background: rgba(59, 114, 240, 0.08);
}

.attendance-reason-order-root .reason-order-row.drop-before {
    box-shadow: inset 0 2px 0 rgba(59, 114, 240, 0.95);
}

.attendance-reason-order-root .reason-order-row.drop-after {
    box-shadow: inset 0 -2px 0 rgba(59, 114, 240, 0.95);
}

.attendance-reason-order-root .reason-order-row.is-inactive td {
    background: rgba(127, 142, 168, 0.12);
    color: #4f5f78;
}

.attendance-reason-order-root .reason-order-row.is-inactive td:first-child {
    box-shadow: inset 3px 0 0 rgba(93, 108, 136, 0.35);
}

.attendance-reason-order-root .reason-order-row.is-inactive:hover td {
    background: rgba(127, 142, 168, 0.2);
}

.attendance-reason-order-root .reason-order-row.is-inactive .btn-outline {
    border-color: rgba(88, 108, 145, 0.42);
    color: #4f6392;
}

.attendance-reason-order-root .reason-order-row.is-inactive .btn-outline:hover,
.attendance-reason-order-root .reason-order-row.is-inactive .btn-outline:focus {
    background: rgba(79, 99, 146, 0.12);
}

.attendance-reason-row-actions {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
}

.attendance-reason-row-actions-main,
.attendance-reason-row-actions-order {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    flex-wrap: wrap;
}

.attendance-reason-row-actions-order {
    padding-left: 10px;
    border-left: 1px dashed var(--line-300);
}

.attendance-reason-order-root.attendance-reason-no-drag .attendance-reason-order-handle {
    display: none;
}

.attendance-reason-order-root[data-can-reorder='0'] .attendance-reason-order-handle {
    display: none;
}

.school-warning-box {
    border: 1px solid rgba(59, 114, 240, 0.2);
    border-radius: 12px;
    background: rgba(59, 114, 240, 0.08);
    color: var(--ink-700);
    padding: 10px 12px;
    margin-bottom: 14px;
    font-size: 13px;
    line-height: 1.5;
}

.school-emblem-row {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-bottom: 8px;
}

.school-emblem-status {
    color: var(--ink-700);
    font-size: 13px;
}

.school-help-text {
    color: var(--muted-500);
    font-size: 12px;
    margin-top: 6px;
}

.label-with-chip {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
    white-space: normal;
}

.required-chip {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 999px;
    border: 1px solid rgba(209, 73, 73, 0.35);
    background: rgba(209, 73, 73, 0.1);
    color: #b22626;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.03em;
    padding: 2px 8px;
    line-height: 1.2;
}

.optional-chip {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 999px;
    border: 1px solid var(--line-300);
    background: var(--surface-1);
    color: var(--muted-600);
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.03em;
    padding: 2px 8px;
    line-height: 1.2;
}

.field-note {
    color: var(--muted-500);
    font-size: 12px;
    margin-top: 4px;
    line-height: 1.45;
}

.field-validation-error {
    display: block;
    color: var(--danger-500);
    font-size: 12px;
    margin-top: 3px;
    line-height: 1.4;
}

.school-inline-value {
    min-height: 36px;
    display: flex;
    align-items: center;
    color: var(--ink-800);
    font-weight: 600;
}

.year-update-candidates .year-update-reason-input {
    min-width: 200px;
}

.text-danger {
    color: var(--danger-500);
}

.chat-layout,
.schedule-layout {
    display: grid;
    grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr);
    gap: 18px;
}

.chat-composer .form-grid {
    margin-bottom: 10px;
}

.chat-actions {
    justify-content: flex-start;
}

.talk-shell {
    display: grid;
    grid-template-columns: minmax(280px, 340px) minmax(460px, 1fr) minmax(380px, 420px);
    gap: 18px;
    align-items: stretch;
    height: max(560px, calc(100vh - 124px));
    height: max(560px, calc(100dvh - 124px));
}

.talk-pane {
    display: flex;
    flex-direction: column;
    overflow: hidden;
    min-height: 0;
}

.talk-pane--receipt-screen {
    display: none;
}

.talk-pane--thread {
    --talk-message-body-font-size: 13px;
    --talk-message-body-line-height: 1.55;
    --talk-message-meta-font-size: 11px;
    --talk-message-attachment-font-size: 12px;
    --talk-message-attachment-size-font-size: 11px;
}

.talk-pane--thread[data-font-scale="large"] {
    --talk-message-body-font-size: 15px;
    --talk-message-body-line-height: 1.7;
    --talk-message-meta-font-size: 12px;
    --talk-message-attachment-font-size: 13px;
    --talk-message-attachment-size-font-size: 12px;
}

.talk-pane--thread[data-font-scale="xlarge"] {
    --talk-message-body-font-size: 17px;
    --talk-message-body-line-height: 1.78;
    --talk-message-meta-font-size: 13px;
    --talk-message-attachment-font-size: 14px;
    --talk-message-attachment-size-font-size: 12px;
}

.talk-pane-head {
    display: flex;
    flex-direction: column;
    gap: 12px;
    padding-bottom: 12px;
    border-bottom: 1px solid rgba(203, 213, 225, 0.65);
}

.talk-pane-body {
    flex: 1;
    min-height: 0;
    margin-top: 12px;
}

.talk-search {
    display: flex;
    align-items: center;
    gap: 10px;
    margin: 0;
}

.talk-search-input {
    flex: 1;
    min-width: 0;
    border-radius: 999px;
    border: 1px solid rgba(148, 163, 184, 0.7);
    background: rgba(248, 250, 252, 0.95);
    padding: 10px 14px;
    font-size: 13px;
    transition: border-color 180ms ease, box-shadow 180ms ease, background 180ms ease;
}

.talk-search-input:focus {
    outline: none;
    border-color: rgba(42, 91, 215, 0.6);
    background: #ffffff;
    box-shadow: 0 0 0 3px rgba(59, 114, 240, 0.18);
}

.talk-search-btn {
    border-radius: 999px;
    border: 1px solid rgba(42, 91, 215, 0.22);
    padding: 10px 14px;
    background: rgba(42, 91, 215, 0.08);
    color: var(--brand-600);
    font-weight: 700;
    font-size: 12px;
    letter-spacing: 0.06em;
    cursor: pointer;
    transition: background 180ms ease, border-color 180ms ease, transform 180ms ease;
}

.talk-search-btn:hover,
.talk-search-btn:focus {
    background: rgba(42, 91, 215, 0.14);
    border-color: rgba(42, 91, 215, 0.35);
    transform: translateY(-1px);
}

.talk-tabs {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

.talk-tab {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 7px 12px;
    border-radius: 999px;
    border: 1px solid rgba(148, 163, 184, 0.45);
    background: rgba(248, 250, 252, 0.9);
    color: var(--ink-700);
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 0.06em;
    transition: background 180ms ease, border-color 180ms ease, color 180ms ease, transform 180ms ease;
}

.talk-tab:hover,
.talk-tab:focus {
    color: var(--brand-600);
    background: rgba(42, 91, 215, 0.1);
    border-color: rgba(42, 91, 215, 0.25);
    transform: translateY(-1px);
}

.talk-tab.is-active {
    color: #ffffff;
    border-color: rgba(42, 91, 215, 0.0);
    background: linear-gradient(135deg, rgba(42, 91, 215, 0.95), rgba(59, 114, 240, 0.88));
}

.talk-tab.is-disabled {
    opacity: 0.45;
    pointer-events: none;
}

.talk-mobile-actions {
    display: none;
}

.talk-list-scroll {
    display: flex;
    flex-direction: column;
    gap: 10px;
    overflow: auto;
    padding-right: 4px;
}

.talk-thread {
    display: block;
    padding: 12px 12px;
    border-radius: 16px;
    border: 1px solid rgba(203, 213, 225, 0.7);
    background: rgba(248, 250, 252, 0.95);
    color: var(--ink-800);
    transition: transform 180ms ease, border-color 180ms ease, box-shadow 180ms ease, background 180ms ease;
}

.talk-thread:hover,
.talk-thread:focus {
    background: #ffffff;
    border-color: rgba(42, 91, 215, 0.25);
    transform: translateY(-1px);
    box-shadow: 0 12px 22px rgba(15, 23, 42, 0.08);
}

.talk-thread.is-active {
    background: rgba(42, 91, 215, 0.12);
    border-color: rgba(42, 91, 215, 0.35);
    box-shadow: 0 14px 24px rgba(30, 64, 175, 0.12);
}

.talk-thread-main {
    display: grid;
    gap: 8px;
    min-width: 0;
}

.talk-thread-top {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: start;
    gap: 8px 12px;
}

.talk-thread-title {
    min-width: 0;
    font-weight: 800;
    font-size: 14px;
    letter-spacing: 0.03em;
    color: var(--ink-800);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.talk-thread-tags {
    display: flex;
    align-items: center;
    gap: 8px;
    min-width: 0;
}

.talk-thread-recipient-summary {
    min-width: 0;
    flex: 1 1 auto;
    font-size: 12px;
    color: rgba(71, 85, 105, 0.92);
    letter-spacing: 0.02em;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.talk-thread-recipient-summary:empty {
    display: none;
}

.talk-thread-snippet {
    font-size: 12px;
    color: var(--muted-500);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.talk-thread-badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 999px;
    padding: 4px 10px;
    border: 1px solid rgba(42, 91, 215, 0.18);
    background: rgba(42, 91, 215, 0.08);
    color: var(--brand-600);
    font-size: 11px;
    font-weight: 800;
    letter-spacing: 0.06em;
    max-width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.talk-thread-badge--header {
    flex: 0 1 auto;
    max-width: min(100%, 180px);
}

.talk-thread-badge--header:empty {
    display: none;
}

.talk-thread-time {
    font-size: 11px;
    color: rgba(71, 85, 105, 0.9);
    letter-spacing: 0.05em;
    white-space: nowrap;
}

.talk-thread-head {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: start;
    gap: 12px 16px;
}

.talk-thread-titles {
    display: flex;
    flex-direction: column;
    min-width: 0;
    flex: 1;
}

.talk-thread-meta-line {
    display: flex;
    align-items: flex-start;
    flex-wrap: wrap;
    gap: 8px 10px;
    margin-top: 6px;
    min-width: 0;
}

.talk-thread-heading {
    font-size: 18px;
    margin: 0;
    letter-spacing: 0.03em;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.talk-thread-sub {
    min-width: 0;
    font-size: 12px;
    color: var(--muted-500);
    letter-spacing: 0.04em;
    line-height: 1.5;
    word-break: break-word;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.talk-thread-sub:empty {
    display: none;
}

.talk-thread-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: flex-end;
    gap: 8px;
    flex: 0 0 auto;
    min-width: 0;
}

.talk-font-controls {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    margin-left: 4px;
    padding: 3px;
    border-radius: 999px;
    border: 1px solid rgba(148, 163, 184, 0.36);
    background: rgba(248, 250, 252, 0.92);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.76);
}

.talk-font-btn {
    min-width: 34px;
    padding: 6px 10px;
    border: none;
    border-radius: 999px;
    background: transparent;
    color: var(--ink-700);
    font-size: 12px;
    font-weight: 800;
    line-height: 1;
    cursor: pointer;
    transition: background 180ms ease, color 180ms ease, transform 180ms ease;
}

.talk-font-btn:hover,
.talk-font-btn:focus {
    background: rgba(42, 91, 215, 0.1);
    color: var(--brand-600);
}

.talk-font-btn.is-active {
    background: linear-gradient(135deg, rgba(42, 91, 215, 0.95), rgba(59, 114, 240, 0.88));
    color: #ffffff;
    box-shadow: 0 8px 18px rgba(30, 64, 175, 0.16);
}

.talk-mobile-back {
    display: none;
    flex: 0 0 auto;
}

.talk-mobile-create,
.talk-detail-back {
    display: none;
    flex: 0 0 auto;
}

.talk-messages {
    display: flex;
    flex-direction: column;
    gap: 12px;
    overflow: auto;
    padding: 12px;
    border-radius: 16px;
    border: 1px solid rgba(203, 213, 225, 0.7);
    background:
        radial-gradient(circle at 12% 18%, rgba(42, 91, 215, 0.08), transparent 46%),
        radial-gradient(circle at 84% 10%, rgba(18, 163, 166, 0.08), transparent 44%),
        rgba(248, 250, 252, 0.7);
}

.talk-msg {
    display: flex;
}

.talk-msg--mine {
    justify-content: flex-end;
}

.talk-msg-bubble {
    max-width: 78%;
    border-radius: 18px;
    border: 1px solid rgba(203, 213, 225, 0.78);
    background: rgba(255, 255, 255, 0.95);
    padding: 10px 12px;
    box-shadow: 0 10px 18px rgba(15, 23, 42, 0.08);
}

.talk-msg--mine .talk-msg-bubble {
    border-color: rgba(42, 91, 215, 0.0);
    background: linear-gradient(135deg, rgba(42, 91, 215, 0.95), rgba(18, 163, 166, 0.86));
    color: #ffffff;
    box-shadow: 0 12px 22px rgba(30, 64, 175, 0.18);
}

.talk-msg-category {
    display: inline-flex;
    align-items: center;
    max-width: 100%;
    margin-bottom: 6px;
    padding: 3px 8px;
    border-radius: 999px;
    border: 1px solid rgba(203, 213, 225, 0.92);
    background: rgba(248, 250, 252, 0.95);
    color: var(--ink-700);
    font-size: 11px;
    font-weight: 800;
    line-height: 1.2;
    letter-spacing: 0;
}

.talk-msg-category--ack {
    border-color: rgba(245, 158, 11, 0.38);
    background: rgba(255, 251, 235, 0.95);
    color: #92400e;
}

.talk-msg-category--request {
    border-color: rgba(59, 114, 240, 0.32);
    background: rgba(239, 246, 255, 0.96);
    color: #1d4ed8;
}

.talk-msg-category--urgent {
    border-color: rgba(220, 38, 38, 0.34);
    background: rgba(254, 242, 242, 0.96);
    color: #b91c1c;
}

.talk-msg--mine .talk-msg-category {
    border-color: rgba(255, 255, 255, 0.3);
    background: rgba(255, 255, 255, 0.16);
    color: #ffffff;
}

.talk-pane--thread[data-reply-mode="readonly"] .talk-msg--other {
    width: 100%;
}

.talk-pane--thread[data-reply-mode="readonly"] .talk-msg--other .talk-msg-bubble {
    width: 100%;
    max-width: 100%;
}

.talk-msg-body {
    font-size: var(--talk-message-body-font-size);
    line-height: var(--talk-message-body-line-height);
    white-space: normal;
    word-break: break-word;
}

.talk-inline-link {
    display: inline-flex;
    align-items: center;
    min-height: 36px;
    margin: 4px 0;
    padding: 6px 12px;
    border: 1px solid rgba(37, 99, 235, 0.3);
    border-radius: 8px;
    background: rgba(239, 246, 255, 0.95);
    color: #1d4ed8;
    font-weight: 700;
    text-decoration: none;
}

.talk-inline-link:hover,
.talk-inline-link:focus-visible {
    border-color: #2563eb;
    background: #dbeafe;
    text-decoration: underline;
}

.talk-msg--mine .talk-inline-link {
    border-color: rgba(255, 255, 255, 0.45);
    background: rgba(255, 255, 255, 0.14);
    color: #ffffff;
}

.talk-msg-meta {
    margin-top: 6px;
    font-size: var(--talk-message-meta-font-size);
    color: rgba(71, 85, 105, 0.85);
    letter-spacing: 0.06em;
    text-align: right;
}

.talk-msg--mine .talk-msg-meta {
    color: rgba(255, 255, 255, 0.82);
}

.talk-composer {
    display: grid;
    gap: 10px;
    margin-top: 12px;
    min-width: 0;
}

.talk-composer--readonly {
    gap: 8px;
}

.talk-reply-readonly {
    display: flex;
    align-items: center;
    min-height: 52px;
    padding: 12px 14px;
    border-radius: 16px;
    border: 1px solid rgba(203, 213, 225, 0.7);
    background: rgba(248, 250, 252, 0.82);
}

.talk-reply-note {
    margin: 0;
    font-size: 12px;
    color: var(--muted-500);
}

.talk-input {
    min-height: 44px;
    resize: vertical;
}

.talk-composer-row {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    align-items: center;
    justify-content: flex-start;
    min-width: 0;
}

.talk-composer-row .form-control {
    flex: 1 1 180px;
    min-width: 0;
}

.talk-composer-field {
    display: grid;
    flex: 1 1 180px;
    gap: 4px;
    min-width: 0;
    margin: 0;
}

.talk-composer-label {
    color: var(--muted-500);
    font-size: 11px;
    font-weight: 800;
    line-height: 1.2;
    letter-spacing: 0;
}

.talk-composer-field .form-control {
    width: 100%;
}

.talk-file {
    flex: 1 1 180px;
    min-width: 0;
    font-size: 12px;
}

.talk-new-attachment-row {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 10px;
    min-width: 0;
}

.talk-new-attachment-row .talk-file {
    flex: 1 1 220px;
}

.talk-new-create-btn {
    flex: 0 0 auto;
    white-space: nowrap;
}

.talk-multi {
    min-height: 140px;
}

.talk-checklist-shell,
.talk-choice-shell {
    min-height: 188px;
    max-height: 188px;
    overflow-y: auto;
    padding: 4px;
    scrollbar-width: thin;
}

.talk-student-picker {
    display: grid;
    gap: 10px;
}

.talk-picker-note,
.talk-picker-empty {
    margin: 0;
    font-size: 12px;
    line-height: 1.5;
    color: var(--muted-500);
}

.talk-picker-empty[hidden] {
    display: none !important;
}

.talk-picker-search {
    min-width: 0;
}

.talk-checklist {
    width: 100%;
    border-collapse: separate;
    border-spacing: 0 4px;
}

.talk-radio-list {
    width: 100%;
    border-collapse: separate;
    border-spacing: 0 4px;
}

.talk-checklist tbody,
.talk-checklist tr,
.talk-checklist td {
    width: 100%;
}

.talk-radio-list tbody,
.talk-radio-list tr,
.talk-radio-list td {
    width: 100%;
}

.talk-checklist td {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 8px 10px;
    border-radius: 12px;
    cursor: pointer;
    transition: background 160ms ease, box-shadow 160ms ease;
}

.talk-checklist td:hover {
    background: rgba(59, 114, 240, 0.08);
}

.talk-checklist td.is-selected {
    background: rgba(59, 114, 240, 0.14);
    box-shadow: inset 0 0 0 1px rgba(59, 114, 240, 0.14);
}

.talk-radio-list td {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    padding: 8px 10px;
    border-radius: 12px;
    cursor: pointer;
    transition: background 160ms ease, box-shadow 160ms ease;
}

.talk-radio-list td:hover {
    background: rgba(59, 114, 240, 0.08);
}

.talk-radio-list td.is-selected {
    background: rgba(59, 114, 240, 0.14);
    box-shadow: inset 0 0 0 1px rgba(59, 114, 240, 0.14);
}

.talk-checklist input[type="checkbox"] {
    margin: 0;
    flex: 0 0 auto;
}

.talk-radio-list input[type="radio"] {
    margin: 2px 0 0;
    flex: 0 0 auto;
}

.talk-checklist label {
    margin: 0;
    flex: 1 1 auto;
    font-size: 13px;
    font-weight: 600;
    line-height: 1.35;
    color: var(--ink-800);
    cursor: pointer;
}

.talk-radio-list label {
    margin: 0;
    flex: 1 1 auto;
    font-size: 13px;
    font-weight: 600;
    line-height: 1.45;
    color: var(--ink-800);
    cursor: pointer;
    white-space: normal;
}

.talk-check {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    min-height: 40px;
}

.talk-new-grid .talk-check {
    min-height: 30px;
}

.talk-new-grid .talk-check + .talk-detail-note {
    margin-top: 0;
}

.talk-check input[type="checkbox"] {
    margin: 0;
    flex: 0 0 auto;
}

.talk-check label {
    display: block;
    margin: 0;
    line-height: 1.2;
    font-size: 13px;
    font-weight: 700;
    color: var(--ink-800);
}

.help-text {
    margin: 6px 0 0;
    font-size: 12px;
    color: var(--muted-500);
}

.talk-send {
    flex: 0 0 auto;
    margin-left: auto;
    min-width: 88px;
}

.talk-msg-files {
    margin-top: 8px;
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

.talk-file-link {
    display: inline-flex;
    gap: 8px;
    align-items: center;
    padding: 6px 10px;
    border-radius: 999px;
    background: rgba(226, 232, 240, 0.8);
    color: var(--ink-800);
    text-decoration: none;
    font-size: var(--talk-message-attachment-font-size);
    border: 1px solid rgba(203, 213, 225, 0.9);
}

.talk-file-link:hover,
.talk-file-link:focus {
    background: rgba(203, 213, 225, 0.9);
    color: var(--ink-900);
}

.talk-file-size {
    opacity: 0.72;
    font-size: var(--talk-message-attachment-size-font-size);
}

.talk-empty {
    border: 1px dashed rgba(148, 163, 184, 0.8);
    border-radius: 16px;
    padding: 16px 14px;
    background: rgba(248, 250, 252, 0.85);
    color: var(--ink-700);
    text-align: center;
}

.talk-empty-title {
    margin: 0;
    font-weight: 800;
    letter-spacing: 0.06em;
}

.talk-empty-sub {
    margin: 8px 0 0;
    font-size: 12px;
    color: var(--muted-500);
}

.talk-detail-body {
    overflow: auto;
    padding-right: 4px;
}

.talk-detail-head {
    flex-direction: row;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
}

.talk-detail-heading-group {
    display: grid;
    gap: 4px;
    min-width: 0;
}

.talk-detail-tabs {
    display: inline-flex;
    flex-wrap: wrap;
    gap: 8px;
}

.talk-detail-tab {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 8px 12px;
    border-radius: 999px;
    border: 1px solid rgba(148, 163, 184, 0.45);
    background: rgba(248, 250, 252, 0.92);
    color: var(--ink-700);
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 0.06em;
    transition: background 180ms ease, border-color 180ms ease, color 180ms ease, transform 180ms ease;
}

.talk-detail-tab:hover,
.talk-detail-tab:focus {
    color: var(--brand-600);
    border-color: rgba(42, 91, 215, 0.25);
    background: rgba(42, 91, 215, 0.08);
    transform: translateY(-1px);
}

.talk-detail-tab.is-active {
    color: #ffffff;
    border-color: rgba(42, 91, 215, 0);
    background: linear-gradient(135deg, rgba(42, 91, 215, 0.95), rgba(18, 163, 166, 0.9));
}

.talk-detail-section + .talk-detail-section {
    margin-top: 16px;
    padding-top: 16px;
    border-top: 1px solid rgba(203, 213, 225, 0.65);
}

.talk-detail-heading {
    font-size: 18px;
    margin: 0;
}

.talk-detail-title {
    margin: 0 0 10px;
    font-size: 13px;
    letter-spacing: 0.08em;
    color: var(--ink-800);
}

.talk-detail-actions {
    display: flex;
    gap: 10px;
    flex-wrap: wrap;
}

.talk-detail-kv {
    display: grid;
    grid-template-columns: 84px 1fr;
    gap: 8px 12px;
    align-items: baseline;
    margin-top: 10px;
}

.talk-detail-label {
    font-size: 12px;
    color: var(--muted-500);
    letter-spacing: 0.06em;
}

.talk-detail-value {
    font-size: 13px;
    color: var(--ink-800);
    font-weight: 700;
    word-break: break-word;
}

.talk-detail-note {
    margin: 12px 0 0;
    font-size: 12px;
    color: var(--muted-500);
}

.talk-detail-note--compact {
    margin-top: 0;
}

.talk-read-status-link {
    min-width: 88px;
}

.talk-shell[data-view="receipt"] {
    grid-template-columns: minmax(0, 1fr);
}

.talk-shell[data-view="receipt"] .talk-pane--list,
.talk-shell[data-view="receipt"] .talk-pane--thread,
.talk-shell[data-view="receipt"] .talk-pane--detail {
    display: none;
}

.talk-shell[data-view="receipt"] .talk-pane--receipt-screen {
    display: flex;
    grid-column: 1 / -1;
}

.talk-receipt-section {
    display: grid;
    gap: 18px;
}

.talk-receipt-screen-head {
    flex-direction: row;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
}

.talk-receipt-screen-back {
    flex: 0 0 auto;
}

.talk-receipt-print-link {
    flex: 0 0 auto;
}

.talk-receipt-screen-titles {
    display: grid;
    gap: 6px;
    min-width: 0;
    flex: 1;
}

.talk-receipt-screen-kicker {
    font-size: 11px;
    font-weight: 800;
    letter-spacing: 0.12em;
    color: var(--brand-600);
}

.talk-receipt-screen-title {
    margin: 0;
    font-size: 24px;
    letter-spacing: 0.03em;
    word-break: break-word;
}

.talk-receipt-screen-body {
    overflow: auto;
    padding-right: 4px;
}

.talk-receipt-headline {
    display: grid;
    gap: 6px;
}

.talk-receipt-tracked {
    font-size: 12px;
    color: var(--muted-500);
    letter-spacing: 0.04em;
}

.talk-receipt-kpis {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
    gap: 10px;
}

.talk-receipt-kpi {
    display: grid;
    gap: 4px;
    padding: 12px 14px;
    border-radius: 16px;
    border: 1px solid rgba(203, 213, 225, 0.75);
    background:
        radial-gradient(circle at 100% 0%, rgba(42, 91, 215, 0.12), transparent 42%),
        rgba(248, 250, 252, 0.9);
}

.talk-receipt-kpi-label {
    font-size: 11px;
    color: var(--muted-500);
    letter-spacing: 0.08em;
}

.talk-receipt-kpi-value {
    font-size: 22px;
    line-height: 1.1;
    color: var(--ink-900);
    letter-spacing: 0.02em;
}

.talk-receipt-block {
    display: grid;
    gap: 10px;
}

.talk-receipt-block-head {
    font-size: 12px;
    font-weight: 800;
    letter-spacing: 0.08em;
    color: var(--ink-800);
}

.talk-receipt-summary-list,
.talk-receipt-member-list {
    display: grid;
    gap: 10px;
}

.talk-receipt-summary-row {
    position: relative;
    overflow: hidden;
    display: grid;
    gap: 8px;
    padding: 12px 14px;
    border-radius: 16px;
    border: 1px solid rgba(203, 213, 225, 0.75);
    background: rgba(248, 250, 252, 0.92);
}

.talk-receipt-summary-bar {
    position: absolute;
    inset: auto 0 0 0;
    height: 4px;
    background: rgba(226, 232, 240, 0.95);
}

.talk-receipt-summary-bar span {
    display: block;
    height: 100%;
    background: linear-gradient(90deg, rgba(42, 91, 215, 0.95), rgba(18, 163, 166, 0.92));
}

.talk-receipt-summary-main {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 10px;
}

.talk-receipt-summary-name {
    font-size: 13px;
    font-weight: 800;
    color: var(--ink-900);
}

.talk-receipt-summary-rate {
    font-size: 12px;
    font-weight: 800;
    color: var(--brand-600);
}

.talk-receipt-summary-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    font-size: 12px;
    color: var(--muted-500);
}

.talk-receipt-filters {
    display: grid;
    gap: 12px;
}

.talk-receipt-filter-group {
    display: grid;
    gap: 8px;
}

.talk-receipt-filter-label {
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.08em;
    color: var(--muted-500);
}

.talk-receipt-filter-chips {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

.talk-receipt-member {
    display: grid;
    gap: 6px;
    padding: 12px 14px;
    border-radius: 16px;
    border: 1px solid rgba(203, 213, 225, 0.75);
    background: rgba(248, 250, 252, 0.92);
}

.talk-receipt-member.is-unread {
    border-color: rgba(234, 88, 12, 0.22);
    box-shadow: inset 3px 0 0 rgba(234, 88, 12, 0.78);
}

.talk-receipt-member.is-read {
    border-color: rgba(42, 91, 215, 0.18);
    box-shadow: inset 3px 0 0 rgba(42, 91, 215, 0.72);
}

.talk-receipt-member-main {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
}

.talk-receipt-member-name {
    font-size: 13px;
    font-weight: 800;
    color: var(--ink-900);
}

.talk-receipt-member-state {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 52px;
    padding: 4px 10px;
    border-radius: 999px;
    font-size: 11px;
    font-weight: 800;
    letter-spacing: 0.06em;
}

.talk-receipt-member-state.is-read {
    background: rgba(42, 91, 215, 0.1);
    color: var(--brand-600);
}

.talk-receipt-member-state.is-unread {
    background: rgba(249, 115, 22, 0.12);
    color: #c2410c;
}

.talk-receipt-member-sub,
.talk-receipt-member-time {
    font-size: 12px;
    color: var(--muted-500);
}

.talk-receipt-member-extra {
    display: flex;
    flex-wrap: wrap;
    gap: 6px 12px;
    font-size: 11px;
    color: var(--muted-500);
}

.talk-receipt-mini-empty {
    text-align: left;
}

@media (max-width: 1180px) {
    .talk-shell {
        grid-template-columns: minmax(0, 320px) minmax(0, 1fr);
    }

    .talk-mobile-actions {
        display: flex;
    }

    .talk-mobile-create--list,
    .talk-detail-back {
        display: inline-flex;
    }

    .talk-pane--detail {
        display: none;
    }

    .talk-shell[data-view="compose"] {
        grid-template-columns: 1fr;
    }

    .talk-shell[data-view="compose"] .talk-pane--list,
    .talk-shell[data-view="compose"] .talk-pane--thread {
        display: none;
    }

    .talk-shell[data-view="compose"] .talk-pane--detail {
        display: flex;
    }

    .talk-shell[data-view="receipt"] {
        grid-template-columns: 1fr;
    }

    .talk-shell[data-view="receipt"] .talk-pane--list,
    .talk-shell[data-view="receipt"] .talk-pane--thread,
    .talk-shell[data-view="receipt"] .talk-pane--detail {
        display: none;
    }

    .talk-shell[data-view="receipt"] .talk-pane--receipt-screen {
        display: flex;
    }
}

@media (max-width: 860px) {
    .talk-shell {
        grid-template-columns: 1fr;
        height: auto;
    }

    .talk-thread-head {
        grid-template-columns: 1fr;
    }

    .talk-detail-head,
    .talk-receipt-screen-head {
        flex-direction: column;
        align-items: stretch;
    }

    .talk-thread-actions {
        justify-content: flex-start;
        width: 100%;
    }

    .talk-font-controls {
        order: 10;
        margin-left: 0;
    }

    .talk-mobile-back {
        display: inline-flex;
        align-self: flex-start;
    }

    .talk-mobile-create--thread {
        display: inline-flex;
        align-self: flex-start;
    }

    .talk-pane--detail {
        display: none;
    }

    .talk-shell[data-view="thread"] .talk-pane--list {
        display: none;
    }

    .talk-shell[data-view="list"] .talk-pane--thread {
        display: none;
    }

    .talk-shell[data-view="receipt"] .talk-pane--list,
    .talk-shell[data-view="receipt"] .talk-pane--thread,
    .talk-shell[data-view="receipt"] .talk-pane--detail {
        display: none;
    }

    .talk-shell[data-view="receipt"] .talk-pane--receipt-screen {
        display: flex;
    }

    .talk-pane {
        height: auto;
    }

    .talk-messages {
        max-height: 55vh;
    }

    .talk-receipt-kpis {
        grid-template-columns: 1fr 1fr;
    }

    .talk-receipt-member-main,
    .talk-receipt-summary-main {
        align-items: flex-start;
        flex-direction: column;
    }
}

.login-shell {
    max-width: 460px;
    margin: 72px auto;
    background: var(--surface-0);
    padding: 28px 30px;
    border-radius: var(--radius-lg);
    border: 1px solid var(--line-200);
    box-shadow: var(--shadow-soft);
    animation: riseIn 650ms var(--ease-out-expo) both;
}

.login-shell h1 {
    margin-top: 0;
    font-size: 28px;
    letter-spacing: 0.08em;
}

.login-shell .form-row label {
    flex: 0 0 100%;
    white-space: normal;
}

.login-shell .form-row .form-control,
.login-shell .form-row input[type="text"],
.login-shell .form-row input[type="password"],
.login-shell .form-row input[type="search"],
.login-shell .form-row input[type="email"],
.login-shell .form-row input[type="number"],
.login-shell .form-row select,
.login-shell .form-row textarea {
    flex: 1 1 100%;
    width: 100%;
}

.password-field {
    position: relative;
    width: 100%;
    display: flex;
    align-items: center;
}

.password-field .form-control,
.password-field input[type="password"],
.password-field input[type="text"] {
    padding-right: 84px;
}

.password-toggle {
    position: absolute;
    top: 50%;
    right: 12px;
    transform: translateY(-50%);
    width: 40px;
    height: 40px;
    border: none;
    background: transparent;
    color: var(--primary-600);
    line-height: 1;
    padding: 0;
    border-radius: 999px;
    cursor: pointer;
    transition: background-color 0.18s ease, color 0.18s ease;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.password-toggle:hover,
.password-toggle:focus-visible {
    background: rgba(59, 109, 242, 0.1);
    color: var(--primary-700);
    outline: none;
}

.password-toggle.is-active {
    color: var(--primary-700);
}

.password-toggle__icon {
    width: 20px;
    height: 20px;
    flex: 0 0 auto;
}

.password-toggle__icon--visible {
    display: none;
}

.password-toggle.is-active .password-toggle__icon--hidden {
    display: none;
}

.password-toggle.is-active .password-toggle__icon--visible {
    display: block;
}

.login-shell .password-field {
    position: relative;
    width: 100%;
    display: flex;
    align-items: center;
}

.login-shell .password-field .form-control,
.login-shell .password-field input[type="password"],
.login-shell .password-field input[type="text"] {
    padding-right: 84px;
}

.login-shell .password-toggle {
    position: absolute;
    top: 50%;
    right: 12px;
    transform: translateY(-50%);
    width: 40px;
    height: 40px;
    border: none;
    background: transparent;
    color: var(--primary-600);
    line-height: 1;
    padding: 0;
    border-radius: 999px;
    cursor: pointer;
    transition: background-color 0.18s ease, color 0.18s ease;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.login-shell .password-toggle:hover,
.login-shell .password-toggle:focus-visible {
    background: rgba(59, 109, 242, 0.1);
    color: var(--primary-700);
    outline: none;
}

.login-shell .password-toggle.is-active {
    color: var(--primary-700);
}

.login-shell .password-toggle__icon {
    width: 20px;
    height: 20px;
    flex: 0 0 auto;
}

.login-shell .password-toggle__icon--visible {
    display: none;
}

.login-shell .password-toggle.is-active .password-toggle__icon--hidden {
    display: none;
}

.login-shell .password-toggle.is-active .password-toggle__icon--visible {
    display: block;
}

.login-shell .form-row input[type="checkbox"] {
    flex: 0 0 auto;
}

.login-shell .form-row input[type="checkbox"] + label {
    flex: 0 0 auto;
    width: auto;
    margin-left: 6px;
}

.login-shell .birthdate-input-group {
    width: 100%;
    display: flex;
    gap: 12px;
    align-items: stretch;
}

.login-shell .birthdate-field {
    flex: 1 1 0;
    display: flex;
    align-items: center;
    gap: 8px;
}

.login-shell .birthdate-field .form-control {
    min-width: 0;
    text-align: center;
}

.login-shell .birthdate-suffix {
    flex: 0 0 auto;
    align-self: center;
    color: var(--text-500);
    font-weight: 700;
}

@media (max-width: 640px) {
    .login-shell .birthdate-input-group {
        gap: 8px;
    }

    .login-shell .birthdate-field {
        gap: 6px;
    }

    .login-shell .birthdate-field .form-control {
        padding-left: 12px;
        padding-right: 12px;
    }

    .password-field .form-control,
    .password-field input[type="password"],
    .password-field input[type="text"] {
        padding-right: 76px;
    }

    .password-toggle {
        right: 10px;
        width: 36px;
        height: 36px;
    }

    .password-toggle__icon {
        width: 18px;
        height: 18px;
    }

    .login-shell .password-field .form-control,
    .login-shell .password-field input[type="password"],
    .login-shell .password-field input[type="text"] {
        padding-right: 76px;
    }

    .login-shell .password-toggle {
        right: 10px;
        width: 36px;
        height: 36px;
    }

    .login-shell .password-toggle__icon {
        width: 18px;
        height: 18px;
    }
}

.login-shell .login-remember {
    width: 100%;
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: nowrap;
}

.login-shell .login-remember label {
    /* Override .login-shell .form-row label { flex-basis:100% } for this inline row */
    flex: 1 1 auto;
    width: auto;
    margin: 0;
    min-width: 0;
}

.login-shell .login-links {
    align-items: center;
}

.login-shell .login-links a + a::before {
    content: "/";
    display: inline-block;
    margin: 0 8px;
    color: var(--muted-500);
    font-weight: 700;
}

.privacy-policy-page {
    max-width: 920px;
    margin: 48px auto 72px;
    padding: 0 20px;
}

.privacy-policy-container {
    background: var(--surface-0);
    border: 1px solid var(--line-200);
    border-radius: var(--radius-xl);
    box-shadow: var(--shadow-soft);
    padding: 32px 36px;
    color: var(--text-700);
    line-height: 1.9;
    overflow-wrap: anywhere;
    word-break: normal;
    animation: riseIn 650ms var(--ease-out-expo) both;
}

.privacy-policy-back-link {
    margin: 0 0 28px;
    font-size: 14px;
}

.privacy-policy-back-button {
    min-width: 0;
}

.privacy-policy-header {
    margin-bottom: 24px;
}

.privacy-policy-header h1 {
    margin: 0 0 18px;
    font-size: 32px;
    letter-spacing: 0.04em;
    line-height: 1.3;
}

.privacy-policy-meta {
    display: grid;
    gap: 4px;
    font-size: 15px;
    color: var(--text-600);
}

.privacy-policy-meta p,
.privacy-policy-container > p,
.privacy-policy-section p {
    margin: 0;
}

.privacy-policy-section {
    margin-top: 28px;
}

.privacy-policy-section h2 {
    margin: 0 0 10px;
    font-size: 21px;
    line-height: 1.5;
}

@media (max-width: 640px) {
    .privacy-policy-page {
        margin: 28px auto 48px;
        padding: 0 12px;
    }

    .privacy-policy-container {
        padding: 24px 18px;
        border-radius: var(--radius-lg);
        line-height: 1.8;
    }

    .privacy-policy-header h1 {
        font-size: 28px;
    }

    .privacy-policy-section {
        margin-top: 24px;
    }

    .privacy-policy-section h2 {
        font-size: 19px;
    }
}

body.dashboard-home {
    color: #25344f;
    background:
        radial-gradient(circle at 10% 8%, rgba(65, 125, 255, 0.12), transparent 44%),
        radial-gradient(circle at 88% 2%, rgba(42, 170, 170, 0.1), transparent 34%),
        linear-gradient(180deg, #f7fafe 0%, #eef4fb 100%);
}

body.dashboard-home::before {
    background: radial-gradient(circle at 36% 26%, rgba(58, 118, 230, 0.2), rgba(58, 118, 230, 0) 70%);
    opacity: 0.56;
}

body.dashboard-home::after {
    background: radial-gradient(circle at 66% 64%, rgba(22, 163, 174, 0.16), rgba(22, 163, 174, 0) 70%);
    opacity: 0.5;
}

body.dashboard-home h1,
body.dashboard-home h2,
body.dashboard-home h3 {
    color: #142744;
    font-family: var(--font-body);
    letter-spacing: 0.03em;
}

body.dashboard-home .app-header {
    background: rgba(255, 255, 255, 0.9);
    border-bottom-color: rgba(148, 163, 184, 0.26);
    box-shadow: 0 8px 22px rgba(15, 23, 42, 0.1);
}

body.dashboard-home .app-header::after {
    background: linear-gradient(90deg, rgba(42, 91, 215, 0.75), rgba(18, 163, 166, 0.55));
}

body.dashboard-home .app-brand a {
    color: #152948;
}

body.dashboard-home .app-meta-item {
    background: #f8fbff;
    border-color: #d6e1ef;
    color: #445b7d;
}

body.dashboard-home .app-logout {
    color: #2f5fc5;
    border-color: rgba(42, 91, 215, 0.34);
    background: rgba(42, 91, 215, 0.08);
}

body.dashboard-home .app-shell {
    max-width: 1600px;
    padding: 14px 18px 24px;
}

body.dashboard-home .app-main {
    padding: 0;
    animation: none;
}

.dashboard-screen {
    position: relative;
    background:
        radial-gradient(circle at 14% 20%, rgba(57, 117, 230, 0.08), transparent 36%),
        linear-gradient(180deg, #ffffff, #f8fbff);
    border: 1px solid #d5e1ef;
    border-radius: 24px;
    padding: 22px 26px 24px;
    box-shadow: 0 22px 44px rgba(15, 23, 42, 0.14);
}

.dashboard-icon-sprite {
    position: absolute;
    width: 0;
    height: 0;
    overflow: hidden;
}

.dashboard-hero {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 14px;
    padding: 10px 4px 14px;
    margin-bottom: 12px;
    border-bottom: 1px solid #d7e2f1;
}

.dashboard-hero-main {
    text-align: left;
}

.dashboard-hero-date {
    margin: 0;
    color: #60728d;
    font-size: 18px;
    letter-spacing: 0.04em;
    font-weight: 600;
}

.dashboard-hero-action {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 44px;
    padding: 10px 22px;
    border-radius: 12px;
    border: 1px solid #2755b7;
    background: linear-gradient(135deg, #3a73dc, #2a57ba);
    color: #ffffff;
    font-weight: 600;
    letter-spacing: 0.08em;
    transition: transform 180ms ease, background 180ms ease, border-color 180ms ease;
}

.dashboard-hero-action:hover,
.dashboard-hero-action:focus {
    color: #ffffff;
    background: linear-gradient(135deg, #2f65d2, #244ca4);
    border-color: #214592;
    transform: translateY(-1px);
}

.dashboard-hero-action:focus-visible {
    outline: none;
    box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.26);
}

.dashboard-panel {
    background: #f7faff;
    border: 1px solid #d7e2f1;
    border-radius: 18px;
    padding: 16px;
    margin-bottom: 16px;
}

.dashboard-panel-head {
    margin-bottom: 14px;
}

.dashboard-panel-head h2 {
    margin: 0;
    font-size: 25px;
    font-weight: 700;
    color: #16315c;
}

.dashboard-menu-panel {
    border: none;
    background: transparent;
    padding: 8px 2px 4px;
    margin-bottom: 18px;
}

.dashboard-admin-work-panel {
    box-shadow: none;
}

.dashboard-admin-work-panel--attention {
    padding: 18px 20px 20px;
    background: linear-gradient(180deg, #ffffff, #f6f9ff);
    box-shadow: 0 14px 28px rgba(29, 78, 216, 0.08);
}

.dashboard-admin-work-panel--idle {
    padding: 4px 2px 6px;
    border: none;
    background: transparent;
    margin-bottom: 12px;
}

.dashboard-admin-work-panel-head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 12px;
}

.dashboard-admin-work-panel-head h2 {
    font-size: 24px;
}

.dashboard-admin-work-panel-head p {
    margin: 6px 0 0;
    color: #60728d;
    line-height: 1.65;
    max-width: 44ch;
}

.dashboard-admin-work-badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 32px;
    padding: 0 12px;
    border-radius: 999px;
    border: 1px solid #d8e3f3;
    background: #f8fbff;
    color: #4f6e95;
    font-size: 12px;
    font-weight: 800;
    letter-spacing: 0.04em;
    white-space: nowrap;
}

.dashboard-admin-work-widget {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    grid-template-areas:
        "main meta"
        "actions actions";
    gap: 16px 18px;
    align-items: center;
    margin-top: 16px;
    padding: 18px 20px;
    border-radius: 22px;
    border: 1px solid #d8e3f3;
    background: linear-gradient(180deg, #ffffff, #f8fbff);
    transition: border-color 180ms ease, box-shadow 180ms ease, background 180ms ease;
}

.dashboard-admin-work-widget--attention {
    border-color: #cfe5de;
    background: linear-gradient(135deg, #ffffff, #eefaf7 56%, #e5f7f1);
    box-shadow: 0 18px 34px rgba(17, 94, 89, 0.12);
}

.dashboard-admin-work-widget--idle {
    grid-template-columns: minmax(0, 1fr) auto auto;
    grid-template-areas: "main meta actions";
    gap: 12px 16px;
    margin-top: 0;
    padding: 12px 16px;
    border-radius: 18px;
    background: linear-gradient(180deg, #ffffff, #fbfdff);
    box-shadow: 0 8px 18px rgba(30, 64, 175, 0.06);
}

.dashboard-admin-work-widget__main {
    grid-area: main;
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    gap: 16px;
    align-items: center;
}

.dashboard-admin-work-widget__icon {
    width: 68px;
    height: 68px;
    border-radius: 22px;
    display: grid;
    place-items: center;
    color: #fff;
    box-shadow: inset 0 1px 1px rgba(255, 255, 255, 0.24), 0 10px 22px rgba(15, 23, 42, 0.14);
}

.dashboard-admin-work-widget__icon svg {
    width: 30px;
    height: 30px;
}

.dashboard-admin-work-widget__icon--emerald {
    background: linear-gradient(145deg, #2fb99d, #1f8b75);
}

.dashboard-admin-work-widget--idle .dashboard-admin-work-widget__icon {
    width: 52px;
    height: 52px;
    border-radius: 18px;
}

.dashboard-admin-work-widget--idle .dashboard-admin-work-widget__icon svg {
    width: 24px;
    height: 24px;
}

.dashboard-admin-work-widget__copy {
    display: grid;
    gap: 6px;
}

.dashboard-admin-work-widget__eyebrow {
    font-size: 12px;
    font-weight: 800;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: #4f6e95;
}

.dashboard-admin-work-widget__copy h3 {
    margin: 0;
    font-size: 26px;
    font-weight: 800;
    line-height: 1.15;
    color: #16315c;
}

.dashboard-admin-work-widget--idle .dashboard-admin-work-widget__copy {
    gap: 2px;
}

.dashboard-admin-work-widget--idle .dashboard-admin-work-widget__copy h3 {
    font-size: 22px;
}

.dashboard-admin-work-widget__copy p {
    margin: 0;
    color: #5f7391;
    line-height: 1.65;
    max-width: 54ch;
}

.dashboard-admin-work-widget--idle .dashboard-admin-work-widget__copy p {
    font-size: 13px;
    line-height: 1.45;
    max-width: none;
}

.dashboard-admin-work-widget__meta {
    grid-area: meta;
    display: grid;
    gap: 6px;
    justify-items: end;
    text-align: right;
}

.dashboard-admin-work-widget__count-label {
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 0.04em;
    color: #6b7f9f;
}

.dashboard-admin-work-widget__count {
    font-size: 32px;
    font-weight: 800;
    line-height: 1;
    color: #16315c;
}

.dashboard-admin-work-widget--attention .dashboard-admin-work-widget__count {
    color: #176f56;
}

.dashboard-admin-work-widget--idle .dashboard-admin-work-widget__count {
    color: #335b9d;
}

.dashboard-admin-work-widget__state {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 30px;
    padding: 0 10px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 800;
    letter-spacing: 0.04em;
}

.dashboard-admin-work-widget__state--attention {
    background: #dff4ea;
    color: #176f56;
}

.dashboard-admin-work-widget__state--idle {
    background: #edf4ff;
    color: #335b9d;
}

.dashboard-admin-work-widget__actions {
    grid-area: actions;
    display: flex;
    gap: 10px;
    flex-wrap: wrap;
    justify-content: flex-end;
}

.dashboard-admin-work-widget--idle .dashboard-admin-work-widget__actions {
    flex-wrap: nowrap;
    gap: 8px;
}

.dashboard-admin-work-widget--idle .dashboard-admin-work-widget__actions .btn {
    min-height: 38px;
    padding: 8px 14px;
}

.dashboard-menu-grid {
    display: grid;
    grid-template-columns: repeat(6, minmax(0, 1fr));
    gap: 20px 14px;
}

.menu-tile {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: flex-start;
    text-align: center;
    text-decoration: none;
    color: #1c2f4d;
    min-height: 168px;
    border-radius: 16px;
    border: 1px solid #d8e3f3;
    background: linear-gradient(180deg, #ffffff, #f8fbff);
    padding: 8px 8px 10px;
    transition: transform 180ms ease, border-color 180ms ease, background 180ms ease, box-shadow 180ms ease;
}

.menu-tile:hover,
.menu-tile:focus {
    color: #152b4d;
    border-color: #84a8de;
    background: #ffffff;
    transform: translateY(-2px);
    box-shadow: 0 14px 22px rgba(30, 64, 175, 0.14);
}

.menu-tile:focus-visible {
    outline: none;
    box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.22), 0 14px 22px rgba(30, 64, 175, 0.14);
}

.menu-tile-icon {
    width: 78px;
    height: 78px;
    border-radius: 22px;
    display: grid;
    place-items: center;
    margin-bottom: 12px;
    color: #ffffff;
    box-shadow: inset 0 1px 1px rgba(255, 255, 255, 0.24), 0 10px 18px rgba(30, 64, 175, 0.2);
    transition: transform 180ms ease, box-shadow 180ms ease;
}

.menu-tile:hover .menu-tile-icon,
.menu-tile:focus .menu-tile-icon {
    transform: translateY(-1px) scale(1.02);
    box-shadow: inset 0 1px 1px rgba(255, 255, 255, 0.28), 0 14px 24px rgba(30, 64, 175, 0.24);
}

.menu-tile-icon svg {
    width: 36px;
    height: 36px;
}

.menu-tile-title {
    font-size: 21px;
    font-weight: 700;
    line-height: 1.18;
}

.menu-tile-sub {
    margin-top: 5px;
    font-size: 13px;
    color: #697d9b;
    line-height: 1.3;
}

.menu-tile-sub--single-line {
    display: block;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.menu-tile-icon--blue {
    background: linear-gradient(145deg, #4a7de2, #2b5fc6);
}

.menu-tile-icon--cyan {
    background: linear-gradient(145deg, #2ea9bf, #1b7f98);
}

.menu-tile-icon--orange {
    background: linear-gradient(145deg, #e6a14a, #c77422);
}

.menu-tile-icon--amber {
    background: linear-gradient(145deg, #d4aa44, #ab7c1c);
}

.menu-tile-icon--violet {
    background: linear-gradient(145deg, #6f7de2, #4b58bf);
}

.menu-tile-icon--purple {
    background: linear-gradient(145deg, #7c70c6, #5a4b9a);
}

.menu-tile-icon--indigo {
    background: linear-gradient(145deg, #5e7ad8, #3f5eb8);
}

.menu-tile-icon--teal {
    background: linear-gradient(145deg, #27b2a6, #197f7a);
}

.menu-tile-icon--green {
    background: linear-gradient(145deg, #3fae72, #288450);
}

.menu-tile-icon--emerald {
    background: linear-gradient(145deg, #2bab8f, #1e816c);
}

.menu-tile-icon--red {
    background: linear-gradient(145deg, #db6876, #b13f52);
}

.menu-tile-icon--pink {
    background: linear-gradient(145deg, #cf7197, #a34b6f);
}

.menu-tile-icon--slate {
    background: linear-gradient(145deg, #7488a0, #526377);
}

.menu-tile-icon--sky {
    background: linear-gradient(145deg, #4fb2d6, #2b84ac);
}

.menu-tile-icon--gray {
    background: linear-gradient(145deg, #8b9ab0, #66758a);
}

.dashboard-summary-panel {
    background: linear-gradient(160deg, #f4f8ff, #edf3ff);
    padding: 14px;
}

.dashboard-summary-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: 10px;
}

.dashboard-summary-card {
    display: flex;
    flex-direction: column;
    gap: 6px;
    min-height: 96px;
    border-radius: 12px;
    border: 1px solid #d8e3f3;
    background: #ffffff;
    padding: 12px 14px;
    text-decoration: none;
}

.dashboard-summary-card:hover,
.dashboard-summary-card:focus {
    border-color: #8eaee1;
    background: #f7faff;
}

.dashboard-summary-card:focus-visible {
    outline: none;
    box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.23);
}

.dashboard-summary-label {
    color: #627899;
    font-size: 14px;
    line-height: 1.35;
}

.dashboard-summary-value {
    font-size: 38px;
    font-weight: 700;
    font-variant-numeric: tabular-nums;
    line-height: 1.1;
    letter-spacing: 0.03em;
}

.dashboard-summary-value--danger {
    color: #d45d63;
}

.dashboard-summary-value--green {
    color: #1d9961;
}

.dashboard-summary-value--yellow {
    color: #aa7d1e;
}

.dashboard-summary-value--brand {
    color: #2a5ebf;
}

.dashboard-panel-head--compact {
    margin-bottom: 10px;
}

.dashboard-summary-sections {
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.dashboard-summary-section + .dashboard-summary-section {
    border-top: 1px solid #d8e3f3;
    padding-top: 10px;
}

.dashboard-summary-section-head {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 10px;
    margin-bottom: 8px;
}

.dashboard-summary-section-head h3 {
    margin: 0;
    font-size: 15px;
    font-weight: 700;
    color: #1f3e6e;
}

.dashboard-summary-section-head p {
    margin: 0;
    color: #6a7f9f;
    font-size: 12px;
    line-height: 1.4;
}

.dashboard-summary-grid--compact {
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: 10px;
}

.dashboard-summary-card--compact {
    min-height: 84px;
    padding: 10px 12px;
    gap: 4px;
}

.dashboard-summary-card--compact .dashboard-summary-value {
    font-size: 34px;
}

.dashboard-summary-note {
    color: #6b809f;
    font-size: 12px;
    line-height: 1.45;
}

.dashboard-schedule-panel {
    background: #f5f8ff;
}

.dashboard-schedule-panel .table {
    background: #ffffff;
    border-color: #d8e3f3;
}

.dashboard-schedule-panel .table th {
    background: #edf3ff;
    color: #3f567a;
    border-bottom-color: #d1deef;
}

.dashboard-schedule-panel .table td {
    color: #314866;
    border-bottom-color: #dbe5f3;
}

.dashboard-schedule-panel .table-hover tbody tr:hover td {
    background: #f6faff;
}

.weekcal {
    max-width: 100%;
    min-width: 0;
}

.weekcal__notice {
    margin: 0 0 12px;
    padding: 10px 12px;
    border-radius: 14px;
    border: 1px dashed rgba(42, 91, 215, 0.28);
    background: rgba(255, 255, 255, 0.92);
    color: #314866;
    font-size: 13px;
    font-weight: 600;
    letter-spacing: 0.02em;
}

.weekcal__shell {
    width: 100%;
    max-width: 100%;
    overflow-x: auto;
    border-radius: var(--radius-md);
    overscroll-behavior-x: contain;
    -webkit-overflow-scrolling: touch;
}

.weekcal__table {
    width: 100%;
    border-collapse: separate;
    border-spacing: 0;
    background: #ffffff;
    border: 1px solid #d8e3f3;
    border-radius: var(--radius-md);
    overflow: hidden;
}

.weekcal__table th,
.weekcal__table td {
    padding: 10px 12px;
    border-bottom: 1px solid #dbe5f3;
    border-right: 1px solid #dbe5f3;
    vertical-align: top;
}

.weekcal__table td:last-child,
.weekcal__table th:last-child {
    border-right: none;
}

.weekcal__table tr:last-child td {
    border-bottom: none;
}

.weekcal__corner,
.weekcal__th {
    position: sticky;
    top: 0;
    z-index: 3;
    background: #edf3ff;
    color: #3f567a;
    font-size: 12px;
    font-weight: 800;
    letter-spacing: 0.04em;
    text-transform: none;
    white-space: nowrap;
}

.weekcal__corner {
    left: 0;
    z-index: 4;
    min-width: 88px;
}

.weekcal__rowhead {
    position: sticky;
    left: 0;
    z-index: 2;
    background: #f2f7ff;
    color: #36506f;
    font-size: 12px;
    font-weight: 900;
    letter-spacing: 0.02em;
    white-space: nowrap;
    min-width: 88px;
}

.weekcal__rowhead--events {
    background: rgba(18, 163, 166, 0.12);
    color: #0f766e;
}

.weekcal__th--today {
    box-shadow: inset 0 -2px 0 rgba(42, 91, 215, 0.45);
}

.weekcal__date {
    display: block;
    margin-top: 4px;
    font-size: 12px;
    font-weight: 900;
    letter-spacing: 0;
    color: #1e355b;
}

.weekcal__cell {
    min-width: 168px;
    min-height: 56px;
    background: #ffffff;
}

.weekcal__cell--today {
    background: rgba(42, 91, 215, 0.04);
}

.weekcal__cell--events {
    background: rgba(18, 163, 166, 0.06);
}

.weekcal__chips {
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.weekcal__chip {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    max-width: 100%;
    padding: 5px 9px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 800;
    line-height: 1.15;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    border: 1px solid transparent;
}

.weekcal__chip-text {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
}

.weekcal__chip-badge {
    flex: 0 0 auto;
    padding: 1px 5px;
    border-radius: 6px;
    background: rgba(244, 63, 94, 0.12);
    color: #be123c;
    font-size: 10px;
    font-weight: 900;
    line-height: 1.2;
}

.weekcal__chip-link {
    text-decoration: none;
    cursor: pointer;
}

.weekcal__chip--lesson {
    background: rgba(42, 91, 215, 0.1);
    color: #2451b0;
    border-color: rgba(42, 91, 215, 0.18);
}

.weekcal__chip--manual {
    background: rgba(244, 63, 94, 0.08);
    color: #9f1239;
    border-color: rgba(244, 63, 94, 0.22);
}

.weekcal__chip-link.weekcal__chip--lesson:hover,
.weekcal__chip-link.weekcal__chip--lesson:focus {
    background: rgba(42, 91, 215, 0.16);
    border-color: rgba(42, 91, 215, 0.32);
    color: #1d4ed8;
    text-decoration: none;
}

.weekcal__chip-link.weekcal__chip--manual:hover,
.weekcal__chip-link.weekcal__chip--manual:focus {
    background: rgba(244, 63, 94, 0.14);
    border-color: rgba(244, 63, 94, 0.32);
    color: #9f1239;
}

.weekcal__chip-link.weekcal__chip--lesson:focus-visible {
    outline: none;
    box-shadow: 0 0 0 2px rgba(42, 91, 215, 0.25);
}

.weekcal__chip--event {
    background: rgba(18, 163, 166, 0.12);
    color: #0f766e;
    border-color: rgba(18, 163, 166, 0.25);
}

.weekcal__more {
    font-size: 12px;
    font-weight: 800;
    color: #64748b;
}

.weekcal__empty {
    padding: 14px;
    border-radius: 14px;
    border: 1px dashed rgba(42, 91, 215, 0.28);
    background: rgba(255, 255, 255, 0.92);
    color: #314866;
    font-size: 13px;
    font-weight: 600;
}

@media (max-width: 1400px) {
    .dashboard-menu-grid {
        grid-template-columns: repeat(5, minmax(0, 1fr));
    }
}

@media (max-width: 1180px) {
    .dashboard-menu-grid {
        grid-template-columns: repeat(4, minmax(0, 1fr));
        gap: 16px 12px;
    }

    .dashboard-summary-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .dashboard-summary-grid--compact {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .menu-tile-title {
        font-size: 19px;
    }
}

@media (max-width: 900px) {
    .dashboard-menu-grid {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }
}

@media (max-width: 760px) {
    .student-commute-panel {
        padding: 16px;
        border-radius: 16px;
    }

    .student-commute-duo {
        grid-template-columns: 1fr;
    }

    .student-commute-panel-head {
        flex-direction: column;
    }

    .student-commute-chip {
        align-self: flex-start;
    }

    .student-commute-accordion summary {
        padding: 14px 16px;
    }

    .student-commute-accordion > :not(summary) {
        padding: 16px;
    }

    .commute-choice-list td {
        padding: 9px 11px;
    }

    .commute-choice-list input[type="checkbox"] + label,
    .commute-choice-list input[type="radio"] + label {
        font-size: 14px;
    }

    body.dashboard-home .app-shell {
        padding: 12px;
    }

    .dashboard-screen {
        border-radius: 18px;
        padding: 14px;
    }

    .dashboard-hero {
        flex-direction: column;
        align-items: stretch;
        gap: 10px;
        padding: 8px 2px 12px;
    }

    .dashboard-hero-main {
        text-align: left;
    }

    .dashboard-hero-date {
        font-size: 15px;
    }

    .dashboard-hero-action {
        align-self: flex-start;
        margin-top: 2px;
    }

    .dashboard-menu-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 12px 10px;
    }

    .menu-tile {
        min-height: 138px;
        padding: 8px 6px;
    }

    .menu-tile-icon {
        width: 58px;
        height: 58px;
        border-radius: 16px;
        margin-bottom: 8px;
    }

    .menu-tile-icon svg {
        width: 28px;
        height: 28px;
    }

    .menu-tile-title {
        font-size: 16px;
    }

    .menu-tile-sub {
        font-size: 11px;
    }

    .dashboard-summary-grid {
        grid-template-columns: 1fr;
        gap: 10px;
    }

    .dashboard-summary-card {
        min-height: 96px;
    }

    .dashboard-summary-panel {
        padding: 12px;
    }

    .dashboard-summary-sections {
        gap: 8px;
    }

    .dashboard-summary-section + .dashboard-summary-section {
        padding-top: 8px;
    }

    .dashboard-summary-section-head {
        flex-direction: column;
        align-items: flex-start;
        gap: 4px;
        margin-bottom: 6px;
    }

    .dashboard-summary-card--compact {
        min-height: 80px;
        padding: 10px 11px;
    }

    .dashboard-summary-value {
        font-size: 30px;
    }

    .dashboard-panel-head h2 {
        font-size: 20px;
    }

    .weekcal__cell {
        min-width: 140px;
    }

    .weekcal__chip {
        font-size: 11px;
        padding: 4px 8px;
    }
}

@media (max-width: 860px) {
    .dashboard-admin-work-panel {
        padding: 9px;
        border-radius: 16px;
    }

    .dashboard-admin-work-panel--attention {
        padding: 9px 9px 10px;
    }

    .dashboard-admin-work-panel--idle {
        padding: 2px 0 4px;
        margin-bottom: 10px;
    }

    .dashboard-admin-work-panel-head {
        flex-direction: column;
        align-items: flex-start;
        gap: 8px;
    }

    .dashboard-admin-work-panel-head p {
        display: none;
    }

    .dashboard-admin-work-badge {
        min-height: 28px;
        padding: 0 10px;
        font-size: 11px;
    }

    .dashboard-admin-work-widget,
    .dashboard-admin-work-widget--idle {
        grid-template-columns: minmax(0, 1fr) auto;
        grid-template-areas:
            "main meta"
            "actions actions";
        gap: 6px 8px;
        align-items: start;
        border-radius: 18px;
    }

    .dashboard-admin-work-widget {
        margin-top: 7px;
        padding: 10px 11px;
    }

    .dashboard-admin-work-widget--idle {
        margin-top: 0;
        padding: 9px 11px;
        gap: 4px 8px;
    }

    .dashboard-admin-work-widget__main,
    .dashboard-admin-work-widget--idle .dashboard-admin-work-widget__main {
        grid-template-columns: auto minmax(0, 1fr);
        gap: 10px;
        align-items: center;
        justify-items: stretch;
    }

    .dashboard-admin-work-widget__icon {
        width: 48px;
        height: 48px;
        border-radius: 15px;
    }

    .dashboard-admin-work-widget__icon svg {
        width: 21px;
        height: 21px;
    }

    .dashboard-admin-work-widget__copy {
        min-width: 0;
        gap: 4px;
    }

    .dashboard-admin-work-widget--idle .dashboard-admin-work-widget__copy {
        gap: 2px;
    }

    .dashboard-admin-work-widget__copy h3 {
        font-size: 18px;
        line-height: 1.08;
    }

    .dashboard-admin-work-widget__copy p {
        max-width: none;
        font-size: 11px;
        line-height: 1.35;
        display: -webkit-box;
        -webkit-line-clamp: 2;
        -webkit-box-orient: vertical;
        overflow: hidden;
    }

    .dashboard-admin-work-widget__meta {
        display: flex;
        flex-wrap: nowrap;
        align-items: center;
        align-self: start;
        gap: 5px;
        justify-content: flex-end;
        text-align: right;
        white-space: nowrap;
    }

    .dashboard-admin-work-widget__count-label {
        display: none;
    }

    .dashboard-admin-work-widget__count {
        font-size: 22px;
    }

    .dashboard-admin-work-widget__state {
        min-height: 24px;
        padding: 0 8px;
        font-size: 10px;
    }

    .dashboard-admin-work-widget__actions,
    .dashboard-admin-work-widget--idle .dashboard-admin-work-widget__actions {
        display: grid;
        grid-template-columns: repeat(auto-fit, minmax(min(160px, 100%), 1fr));
        justify-content: stretch;
        gap: 6px 8px;
        flex-wrap: wrap;
    }

    .dashboard-admin-work-widget__actions .btn,
    .dashboard-admin-work-widget--idle .dashboard-admin-work-widget__actions .btn {
        width: 100%;
        min-height: 34px;
        padding: 6px 8px;
        font-size: 11px;
        line-height: 1.3;
        white-space: nowrap;
        text-align: center;
    }
}

@media (max-width: 640px) {
    .dashboard-admin-work-panel--attention {
        padding: 8px 8px 10px;
    }

    .dashboard-admin-work-widget {
        margin-top: 5px;
        padding: 9px;
        border-radius: 16px;
    }

    .dashboard-admin-work-widget--idle {
        gap: 3px 6px;
    }

    .dashboard-admin-work-widget__icon {
        width: 42px;
        height: 42px;
        border-radius: 14px;
    }

    .dashboard-admin-work-widget__icon svg {
        width: 18px;
        height: 18px;
    }

    .dashboard-admin-work-widget__copy h3 {
        font-size: 16px;
    }

    .dashboard-admin-work-widget__copy p {
        font-size: 10px;
    }

    .dashboard-admin-work-widget__count {
        font-size: 20px;
    }

    .dashboard-admin-work-widget__actions .btn,
    .dashboard-admin-work-widget--idle .dashboard-admin-work-widget__actions .btn {
        min-height: 32px;
        padding: 5px 6px;
        font-size: 10px;
    }
}

@media (max-width: 420px) {
    .dashboard-hero-action {
        width: 100%;
    }
}

@keyframes riseIn {
    from {
        opacity: 0;
        transform: translateY(10px);
    }
    to {
        opacity: 1;
        /* Avoid creating a stacking-context/containing-block after the animation ends (Bootstrap modal needs this). */
        transform: none;
    }
}

@media (max-width: 1100px) {
    .app-shell {
        padding: 16px;
    }

    .app-sidebar-pin {
        display: none;
    }

    .chat-layout,
    .schedule-layout {
        grid-template-columns: 1fr;
    }

    .portal-summary-grid:not(.portal-summary-grid--attendance) {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .portal-summary-grid--single {
        grid-template-columns: minmax(0, 1fr);
    }
}

@media (max-width: 960px) {
    .portal-summary-grid--attendance {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }
}

@media (max-width: 720px) {
    .app-header {
        padding: 10px 12px;
    }

    .app-header::after {
        left: 12px;
        right: 12px;
    }

    .app-brand-logo {
        width: 28px;
        height: 28px;
    }

    .app-page-title {
        max-width: min(54vw, 340px);
    }

    body.app-body:not(.dashboard-home) .app-page-title {
        font-size: 18px;
    }

    .app-sidebar {
        top: 92px;
        left: 12px;
        bottom: 12px;
        width: min(320px, calc(100vw - 24px));
    }

    .grid-2,
    .grid-3 {
        grid-template-columns: 1fr;
    }

    .portal-summary-grid,
    .portal-nav-grid,
    .portal-nav-grid--compact {
        grid-template-columns: 1fr;
    }

    .portal-summary-grid--attendance {
        grid-template-columns: repeat(3, minmax(0, 1fr));
        gap: 8px;
    }

    .portal-priority-grid {
        grid-template-columns: 1fr;
    }

    .portal-summary-grid--single {
        max-width: none;
    }

    .portal-nav-card {
        min-height: 0;
    }

    .portal-nav-card .menu-tile-title {
        font-size: 18px;
    }

    .portal-nav-card .menu-tile-sub {
        font-size: 13px;
    }

    .portal-summary-grid--attendance .portal-summary-card {
        min-height: 84px;
        padding: 10px 10px 9px;
        gap: 6px;
    }

    .portal-summary-grid--attendance .portal-summary-label {
        font-size: 11px;
        line-height: 1.35;
        min-height: calc(1.35em * 2);
    }

    .portal-summary-grid--attendance .portal-summary-value {
        font-size: 28px;
        line-height: 1;
    }

    .portal-section-copy {
        font-size: 13px;
    }

    .portal-nav-card--priority {
        min-height: 0;
    }

    .portal-priority-actions {
        flex-direction: column;
        align-items: stretch;
    }

    .form-row {
        flex-direction: column;
        align-items: stretch;
    }

    .form-row label {
        white-space: normal;
    }

    .login-shell .login-links {
        flex-direction: column;
        align-items: flex-start;
        gap: 8px;
    }

    .login-shell .login-links a + a::before {
        content: none;
    }

    .btn {
        width: 100%;
    }

    .public-filter-bar {
        grid-template-columns: 1fr;
        gap: 10px;
    }

    .public-date-range {
        gap: 10px;
    }

    .public-filter-bar__actions {
        justify-content: stretch;
    }

    .public-request-helper {
        margin-bottom: 12px;
    }

    .public-request-single-day-toggle {
        padding: 11px 12px;
        gap: 10px;
        border-radius: 16px;
    }

    .public-request-single-day-toggle__copy strong {
        font-size: 14px;
    }

    .public-request-form-grid {
        grid-template-columns: 1fr;
        gap: 10px 12px;
    }

    .public-request-date-grid {
        gap: 10px;
    }

    .dashboard-schedule-scroll-hint {
        display: block;
    }

    .page-head {
        flex-direction: column;
        align-items: flex-start;
    }

    .student-profile-head {
        align-items: flex-start;
    }

    .student-profile-name {
        font-size: 18px;
    }

    .mock-avatar--lg {
        width: 72px;
        height: 72px;
    }

    .mock-avatar--lg::before {
        top: 14px;
        width: 20px;
        height: 20px;
    }

    .mock-avatar--lg::after {
        bottom: 11px;
        width: 36px;
        height: 20px;
    }

    .course-item {
        grid-template-columns: 1fr;
        gap: 8px;
    }

    .course-item-order-controls {
        grid-column: 1 / 2;
        grid-row: auto;
        margin-bottom: 2px;
    }

    .course-item-main,
    .course-item-actions {
        grid-column: 1 / 2;
    }

    .course-item-actions {
        justify-content: flex-start;
    }

    .course-item-actions .btn {
        min-width: 0;
    }

    .selector-grid,
    .selector-grid tbody,
    .selector-grid tr,
    .selector-grid td {
        display: block;
        width: 100%;
    }

    .selector-grid td {
        padding: 4px 0;
    }

    .timetable-editor-table {
        min-width: 720px;
    }

    .timetable-slot-cell {
        min-width: 0;
    }

    .timetable-slot-edit-btn {
        min-height: 44px;
    }

    .timetable-reference-row {
        grid-template-columns: 1fr;
        gap: 2px;
    }

    .timetable-target-card {
        padding-top: 14px;
        padding-bottom: 14px;
    }

    .timetable-target-row {
        grid-template-columns: 1fr;
        gap: 10px 12px;
    }

    .timetable-target-action {
        grid-column: auto;
        justify-content: stretch;
    }

    .timetable-target-load-btn {
        width: 100%;
        min-width: 0;
    }

    .timetable-slot-modal-panel {
        width: calc(100vw - 12px);
        max-height: calc(100vh - 12px);
        margin: 0 auto;
    }

    .timetable-slot-modal-actions {
        flex-wrap: wrap;
    }

    .timetable-slot-modal-actions .btn {
        width: auto;
        min-height: 44px;
        flex: 1 1 0;
    }

    .course-order-toolbar {
        width: 100%;
        justify-content: flex-start;
    }

    .course-order-toolbar > .btn,
    .course-order-toolbar > a.btn,
    .course-order-toolbar > button,
    .course-order-toolbar > .course-quick-filters {
        width: auto;
        min-width: 0;
        min-height: 44px;
        flex: 1 1 calc(50% - 4px);
    }

    .course-order-toolbar > .btn,
    .course-order-toolbar > a.btn,
    .course-order-toolbar > button,
    .course-order-toolbar > .course-quick-filters .btn,
    .course-order-toolbar > .course-quick-filters a.btn {
        padding: 10px 12px;
        font-size: 14px;
    }

    .course-order-toolbar > .course-quick-filters .btn,
    .course-order-toolbar > .course-quick-filters a.btn {
        width: 100%;
    }

    .course-page-actions {
        display: grid;
        grid-template-columns: repeat(auto-fit, minmax(min(150px, 100%), 1fr));
        width: 100%;
        margin-left: 0;
        margin-bottom: 0;
        gap: 8px;
        align-items: stretch;
    }

    .course-page-actions .btn,
    .course-page-actions a.btn {
        width: auto;
        min-width: 0;
        min-height: 42px;
        padding: 10px 8px;
        white-space: nowrap;
        font-size: 14px;
    }

    .course-filter-accordion summary {
        align-items: flex-start;
    }

    .course-filter-strip {
        width: 100%;
        display: grid;
        grid-template-columns: minmax(0, 1fr) auto;
        align-items: start;
        gap: 8px 10px;
    }

    .course-filter-strip-main {
        align-items: center;
        gap: 8px;
    }

    .course-filter-strip-summary-group {
        gap: 6px;
    }

    .course-filter-strip-badges {
        gap: 4px;
    }

    .course-filter-badge {
        min-height: 22px;
        padding: 2px 7px;
        font-size: 10px;
    }

    .course-filter-toggle-text {
        white-space: nowrap;
        text-align: right;
    }

    .course-filter-actions .btn {
        width: auto;
        flex: 1 1 0;
    }

    .course-order-editor-side {
        padding: 8px;
        overflow-x: auto;
    }

    .course-order-editor-category-list {
        flex-direction: row;
        gap: 8px;
        min-width: max-content;
    }

    .course-order-editor-category {
        min-width: 220px;
    }

    .course-order-editor-category-label {
        min-height: 44px;
    }

    .course-order-editor-control {
        min-width: 44px;
        min-height: 44px;
        font-size: 16px;
    }

    .course-order-editor-course {
        grid-template-columns: 1fr;
        gap: 8px;
    }

    .course-order-editor-inline-controls {
        width: 100%;
        justify-content: flex-start;
    }

    .course-order-editor-savebar {
        position: sticky;
        bottom: 0;
        background: rgba(247, 250, 255, 0.98);
        padding: 10px 0 6px;
        margin-top: 10px;
        z-index: 5;
    }

    .course-order-editor-savebar .btn,
    .course-order-editor-savebar button {
        min-height: 44px;
        width: auto;
        flex: 1 1 0;
    }

    .student-local-nav,
    .student-report-tabs {
        flex-wrap: nowrap;
        overflow-x: auto;
        padding-bottom: 6px;
        -webkit-overflow-scrolling: touch;
    }

    .student-summary-kv-grid,
    .student-detail-readonly-grid {
        grid-template-columns: 1fr;
    }

    .student-local-nav .talk-tab,
    .student-report-tabs .talk-tab {
        flex: 0 0 auto;
        white-space: nowrap;
    }

    .student-page-intro-card {
        padding-top: 14px;
    }

    .student-page-intro-card .student-detail-actions {
        margin-bottom: 8px;
    }

    .student-page-intro-card .student-local-nav {
        margin: 8px 0 12px;
    }

    .student-page-intro-card--public .form-row {
        margin-bottom: 6px;
    }

    .public-date-range {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .public-date-range__field,
    .public-request-date-grid__field {
        min-width: 0;
    }

    .public-date-range__field .form-control,
    .public-date-range__field input[type="date"],
    .public-request-date-grid__field .form-control,
    .public-request-date-grid__field input[type="date"] {
        min-width: 0;
    }

    .student-report-side {
        display: none;
    }

    .student-report-grid thead {
        display: none;
    }

    .student-report-grid,
    .student-report-grid tbody,
    .student-report-grid tr,
    .student-report-grid td {
        display: block;
        width: 100%;
    }

    .student-report-grid tr {
        border: 1px solid var(--line-200);
        border-radius: var(--radius-md);
        background: rgba(255, 255, 255, 0.92);
        padding: 12px;
        margin-bottom: 10px;
    }

    .student-report-grid td {
        border: 0 !important;
        padding: 0 !important;
    }

    .student-detail-layout .student-report-grid td.table-report-item-name {
        width: auto;
        min-width: 0;
        max-width: none;
        margin-bottom: 8px;
        color: var(--ink-800);
    }

    .student-report-grid td.table-report-item-name::before,
    .student-report-grid td.table-report-field-value::before {
        display: block;
        font-size: 11px;
        letter-spacing: 0.05em;
        color: var(--muted-500);
        text-transform: uppercase;
        margin-bottom: 3px;
    }

    .student-report-grid td.table-report-item-name::before {
        content: "項目";
    }

    .student-report-grid td.table-report-field-value::before {
        content: "値";
    }

    .student-report-grid .table-report-field-detail,
    .student-report-grid .table-report-field-detail tbody {
        display: block;
    }

    .student-report-grid .table-report-field-detail tr {
        display: block;
        border: 1px solid var(--line-200);
        border-radius: 10px;
        padding: 7px 9px;
        margin-bottom: 8px;
        background: #f8fafc;
    }

    .student-report-grid .table-report-field-detail th,
    .student-report-grid .table-report-field-detail td {
        display: block;
        width: 100%;
        border: 0;
        padding: 0;
        background: transparent;
        white-space: pre-wrap;
    }

    .student-report-grid .table-report-field-detail th {
        margin-bottom: 2px;
        font-size: 12px;
        color: var(--muted-500);
        font-weight: 700;
    }
}

@media (max-width: 1024px) {
    .school-settings-grid {
        grid-template-columns: 1fr;
    }

    .verification-detail-grid {
        grid-template-columns: 1fr;
    }

    .verification-scan-actions {
        align-items: stretch;
    }

    .verification-scan-actions .form-control,
    .verification-scan-actions .btn {
        width: 100%;
    }
}

@media (max-width: 720px) {
    .school-settings-layout {
        padding: 14px;
    }

    .verification-panel-note {
        font-size: 13px;
        line-height: 1.7;
    }

    .verification-search-panel > summary {
        font-size: 16px;
    }

    .verification-search-panel__body {
        margin-top: 10px;
    }

    .verification-detail-card {
        scroll-margin-top: 88px;
    }

    .verification-detail-head {
        align-items: flex-start;
        gap: 10px;
    }

    .verification-detail-title {
        font-size: 22px;
    }

    .verification-detail-callout {
        font-size: 14px;
        line-height: 1.7;
    }

    .verification-detail-grid {
        gap: 10px;
    }

    .verification-detail-item {
        border-radius: 14px;
    }

    .school-guide-panel {
        padding: 12px;
    }

    .academic-structure-guide-list {
        font-size: 12px;
        padding-left: 16px;
    }

    .school-guide-list {
        font-size: 12px;
        padding-left: 16px;
    }

    .school-settings-layout .school-admin-tab-groups,
    .school-settings-layout .school-admin-tabs {
        flex-wrap: nowrap;
        overflow-x: auto;
        padding-bottom: 2px;
    }

    .school-subtabs {
        flex-wrap: nowrap;
        overflow-x: auto;
        padding-bottom: 2px;
    }

    .school-settings-layout .school-admin-tab-groups .talk-tab,
    .school-settings-layout .school-admin-tabs .talk-tab {
        white-space: nowrap;
        min-height: 44px;
    }

    .school-settings-actions {
        position: sticky;
        bottom: 8px;
        z-index: 5;
        background: rgba(255, 255, 255, 0.94);
        border: 1px solid var(--line-200);
        border-radius: 12px;
        padding: 8px;
    }

    .verification-search-panel .school-settings-actions {
        position: static;
        bottom: auto;
        z-index: auto;
        background: transparent;
        border: 0;
        border-radius: 0;
        padding: 0;
    }

    .verification-decision-actions {
        position: sticky;
        bottom: 8px;
        z-index: 6;
        padding-top: 12px;
        background: linear-gradient(180deg, rgba(255, 255, 255, 0), rgba(255, 255, 255, 0.96) 18px, rgba(255, 255, 255, 0.96) 100%);
    }

    .verification-decision-actions .btn {
        width: 100%;
    }

    .attendance-reason-order-root .attendance-reason-order-handle {
        display: none;
    }

    .attendance-reason-toolbar {
        align-items: stretch;
    }

    .attendance-reason-toolbar-group {
        width: 100%;
    }

    .attendance-reason-row-actions-order {
        border-left: 0;
        padding-left: 0;
    }

    .school-emblem-row {
        flex-direction: column;
        align-items: flex-start;
    }

    .student-list-desktop {
        display: none;
    }

    .teacher-list-desktop {
        display: none;
    }

    .student-search-card,
    .teacher-search-card {
        padding: 16px;
    }

    .student-search-grid,
    .teacher-search-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 10px 12px;
        margin-bottom: 12px;
    }

    .teacher-search-grid .filter-field:last-child {
        grid-column: 1 / -1;
    }

    .student-search-actions {
        justify-content: flex-start;
        gap: 8px;
    }

    .student-search-actions-group,
    .teacher-search-actions {
        width: 100%;
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 8px;
        align-items: stretch;
    }

    .student-search-actions-group--secondary {
        margin-left: 0;
        justify-content: flex-start;
    }

    .student-search-actions-group .btn,
    .teacher-search-actions .btn {
        width: auto;
        min-width: 0;
        min-height: 42px;
        padding: 10px 8px;
    }

    .student-list-mobile {
        display: block;
    }

    .teacher-list-mobile {
        display: block;
    }

    .student-list-card-actions .btn {
        width: auto;
    }
}

@media (max-width: 420px) {
    .student-search-grid,
    .teacher-search-grid {
        grid-template-columns: 1fr;
    }

    .teacher-search-grid .filter-field:last-child {
        grid-column: auto;
    }

    .student-list-card-kv {
        grid-template-columns: 1fr;
    }

    .student-list-card-actions {
        flex-direction: column;
    }

    .student-list-card-actions .btn {
        width: 100%;
    }
}

/* Attendance picker (HR / Lesson) */
.attendance-picker {
    display: flex;
    align-items: center;
    gap: 10px;
}

.attendance-picker .attendance-code {
    min-width: 140px;
}

.attendance-indicator {
    order: -1;
    width: 26px;
    height: 26px;
    border-radius: 999px;
    display: inline-grid;
    place-items: center;
    font-weight: 800;
    font-size: 14px;
    line-height: 1;
    background: var(--surface-2);
    color: var(--muted-500);
    border: 1px solid var(--line-200);
    box-shadow: inset 0 1px 2px rgba(15, 23, 42, 0.08);
}

.attendance-code[data-attendance="PRESENT"] + .attendance-indicator {
    background: rgba(22, 163, 74, 0.14);
    border-color: rgba(22, 163, 74, 0.35);
    color: #15803d;
}

.attendance-code[data-attendance="ABSENT"] + .attendance-indicator {
    background: rgba(209, 73, 73, 0.12);
    border-color: rgba(209, 73, 73, 0.35);
    color: var(--danger-500);
}

.attendance-code[data-attendance="LATE"] + .attendance-indicator {
    background: rgba(245, 158, 11, 0.14);
    border-color: rgba(245, 158, 11, 0.35);
    color: #b45309;
}

.attendance-code[data-attendance="EARLY"] + .attendance-indicator {
    background: rgba(59, 114, 240, 0.14);
    border-color: rgba(59, 114, 240, 0.35);
    color: #2563eb;
}

.table-attendance-edit {
    min-width: 920px;
}

.table-attendance-edit tr.attendance-input-locked-row,
.daily-flow-inline-grid tr.attendance-input-locked-row {
    background:
        repeating-linear-gradient(
            -45deg,
            rgba(148, 163, 184, 0.10) 0,
            rgba(148, 163, 184, 0.10) 8px,
            rgba(248, 250, 252, 0.92) 8px,
            rgba(248, 250, 252, 0.92) 16px
        );
    color: var(--muted-500);
}

.table-attendance-edit tr.attendance-input-locked-row .form-control,
.daily-flow-inline-grid tr.attendance-input-locked-row .form-control {
    background: rgba(226, 232, 240, 0.74);
    border-color: rgba(148, 163, 184, 0.55);
    color: var(--muted-500);
    cursor: not-allowed;
}

.attendance-input-lock-badge {
    display: inline-flex;
    align-items: center;
    width: fit-content;
    margin-top: 4px;
    padding: 2px 8px;
    border-radius: 999px;
    border: 1px solid rgba(100, 116, 139, 0.28);
    background: rgba(241, 245, 249, 0.92);
    color: var(--muted-500);
    font-size: 11px;
    font-weight: 700;
}

/* Daily attendance exemption (configured from morning HR) */
.daily-exemption-panel {
    margin: 14px 0;
    overflow: hidden;
    border: 1px solid rgba(14, 116, 144, 0.28);
    border-radius: 14px;
    background: rgba(240, 249, 255, 0.72);
    box-shadow: 0 8px 22px rgba(14, 116, 144, 0.08);
}

.daily-exemption-panel-toggle {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto 18px;
    align-items: center;
    gap: 12px;
    width: 100%;
    min-height: 68px;
    padding: 13px 16px;
    border: 0;
    background: transparent;
    color: var(--ink-800);
    font: inherit;
    text-align: left;
    cursor: pointer;
}

.daily-exemption-panel-toggle:hover,
.daily-exemption-panel-toggle:focus-visible {
    background: rgba(224, 242, 254, 0.72);
}

.daily-exemption-panel-toggle:focus-visible {
    outline: 3px solid rgba(37, 99, 235, 0.28);
    outline-offset: -3px;
}

.daily-exemption-panel-toggle-text {
    display: grid;
    min-width: 0;
    gap: 3px;
}

.daily-exemption-panel-title {
    font-size: 16px;
    font-weight: 800;
    line-height: 1.45;
}

.daily-exemption-panel-subtitle {
    color: var(--ink-600);
    font-size: 12px;
    line-height: 1.5;
}

.daily-exemption-panel-count {
    display: inline-flex;
    min-height: 30px;
    align-items: center;
    justify-content: center;
    padding: 4px 10px;
    border: 1px solid rgba(14, 116, 144, 0.24);
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.92);
    color: #0e7490;
    font-size: 12px;
    font-weight: 800;
    white-space: nowrap;
}

.daily-exemption-panel-chevron {
    width: 10px;
    height: 10px;
    border-right: 2px solid #0e7490;
    border-bottom: 2px solid #0e7490;
    transform: rotate(45deg) translateY(-2px);
    transition: transform 160ms ease;
}

.daily-exemption-panel-toggle[aria-expanded="true"] .daily-exemption-panel-chevron {
    transform: rotate(225deg) translate(-2px, -2px);
}

.daily-exemption-panel-body {
    padding: 0 16px 16px;
    border-top: 1px solid rgba(14, 116, 144, 0.18);
    background: rgba(255, 255, 255, 0.72);
}

.daily-exemption-panel-body[hidden] {
    display: none;
}

.daily-exemption-guidance {
    margin: 14px 0;
    padding: 12px 14px;
    border-left: 4px solid rgba(14, 116, 144, 0.56);
    border-radius: 0 10px 10px 0;
    background: rgba(236, 254, 255, 0.72);
    color: var(--ink-700);
    font-size: 13px;
    line-height: 1.7;
}

.daily-exemption-guidance p {
    margin: 0;
}

.daily-exemption-guidance-note {
    margin-top: 7px !important;
    color: var(--ink-600);
    font-size: 12px;
}

.daily-exemption-toolbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px 16px;
    margin: 12px 0 10px;
}

.daily-exemption-toolbar-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

.daily-exemption-toolbar .btn {
    min-height: 36px;
    padding: 7px 11px;
    font-size: 12px;
}

.daily-exemption-selection-count {
    color: #0e7490;
    font-size: 13px;
    font-weight: 800;
    white-space: nowrap;
}

.daily-exemption-student-list {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 8px;
    max-height: 340px;
    padding: 2px;
    overflow-y: auto;
}

.daily-exemption-student {
    display: grid;
    grid-template-columns: auto minmax(56px, auto) minmax(0, 1fr);
    align-items: center;
    gap: 7px;
    min-height: 48px;
    padding: 8px 10px;
    border: 1px solid var(--line-200);
    border-radius: 10px;
    background: rgba(255, 255, 255, 0.94);
    cursor: pointer;
}

.daily-exemption-student:hover {
    border-color: rgba(14, 116, 144, 0.42);
    background: rgba(236, 254, 255, 0.78);
}

.daily-exemption-student:focus-within {
    border-color: rgba(37, 99, 235, 0.62);
    box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.14);
}

.daily-exemption-student.is-selected {
    border-color: rgba(14, 116, 144, 0.48);
    background: rgba(207, 250, 254, 0.56);
}

.daily-exemption-student.is-unavailable {
    grid-template-columns: auto minmax(56px, auto) minmax(0, 1fr);
    background:
        repeating-linear-gradient(
            -45deg,
            rgba(148, 163, 184, 0.08) 0,
            rgba(148, 163, 184, 0.08) 8px,
            rgba(248, 250, 252, 0.94) 8px,
            rgba(248, 250, 252, 0.94) 16px
        );
    color: var(--muted-500);
    cursor: not-allowed;
}

.daily-exemption-checkbox {
    display: inline-flex;
    align-items: center;
}

.daily-exemption-checkbox input[type="checkbox"] {
    width: 18px;
    height: 18px;
    margin: 0;
    accent-color: #0e7490;
}

.daily-exemption-student-number {
    color: var(--ink-600);
    font-size: 12px;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}

.daily-exemption-student-name {
    min-width: 0;
    overflow: hidden;
    color: var(--ink-800);
    font-size: 13px;
    font-weight: 700;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.daily-exemption-unavailable-reason {
    grid-column: 2 / -1;
    color: var(--muted-500);
    font-size: 11px;
    line-height: 1.45;
}

.daily-exemption-note-field {
    margin-top: 14px;
}

.daily-exemption-note-field textarea.form-control {
    min-height: 72px;
    resize: vertical;
}

.daily-exemption-unsaved {
    margin-top: 10px;
    color: #b45309;
    font-size: 12px;
    font-weight: 800;
}

.daily-exemption-warning {
    margin: 14px 0 12px;
    padding: 12px 14px;
    border: 1px solid #d97706;
    border-left-width: 5px;
    border-radius: 10px;
    background: #fffbeb;
    color: #78350f;
    font-size: 14px;
    font-weight: 800;
    line-height: 1.65;
}

.daily-exemption-warning .daily-exemption-conflict-list {
    color: inherit;
    font-size: 13px;
    font-weight: 600;
}

.daily-exemption-conflict-list {
    margin: 8px 0 0;
    padding-left: 20px;
    color: inherit;
    font-size: 12px;
    line-height: 1.6;
}

.daily-exemption-actions {
    position: static;
    justify-content: flex-start;
    margin-top: 12px;
    padding: 0;
    border: 0;
    background: transparent;
    box-shadow: none;
}

.daily-exemption-actions .btn-danger {
    border-color: #b45309;
    background: #b45309;
    color: #ffffff;
}

.daily-exemption-actions .btn-danger:hover,
.daily-exemption-actions .btn-danger:focus-visible {
    border-color: #92400e;
    background: #92400e;
    color: #ffffff;
}

.daily-exemption-summary {
    display: flex;
    align-items: center;
    gap: 12px;
    margin: 12px 0;
    padding: 11px 13px;
    border: 1px solid rgba(100, 116, 139, 0.24);
    border-radius: 12px;
    background: rgba(248, 250, 252, 0.94);
}

.daily-exemption-summary-icon {
    display: inline-grid;
    flex: 0 0 32px;
    width: 32px;
    height: 32px;
    place-items: center;
    border: 1px solid rgba(100, 116, 139, 0.28);
    border-radius: 999px;
    background: rgba(226, 232, 240, 0.88);
    color: #475569;
    font-size: 13px;
    font-weight: 800;
}

.daily-exemption-summary-text {
    display: grid;
    flex: 1 1 auto;
    min-width: 0;
    gap: 2px;
    color: var(--ink-600);
    font-size: 12px;
    line-height: 1.5;
}

.daily-exemption-summary-text strong {
    color: var(--ink-800);
    font-size: 13px;
}

.daily-exemption-summary .btn {
    flex: 0 0 auto;
    min-height: 36px;
    padding: 7px 11px;
    font-size: 12px;
}

.table-attendance-edit tr.daily-attendance-exempt-row,
.daily-flow-inline-grid tr.daily-attendance-exempt-row {
    border-left: 4px solid rgba(100, 116, 139, 0.5);
}

.daily-attendance-exemption-badge {
    border-color: rgba(14, 116, 144, 0.3);
    background: rgba(236, 254, 255, 0.88);
    color: #0e7490;
}

@media (max-width: 980px) {
    .daily-exemption-student-list {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 720px) {
    .daily-exemption-panel-toggle {
        grid-template-columns: minmax(0, 1fr) auto;
        gap: 8px;
        padding: 12px;
    }

    .daily-exemption-panel-chevron {
        display: none;
    }

    .daily-exemption-panel-body {
        padding: 0 12px 12px;
    }

    .daily-exemption-toolbar,
    .daily-exemption-summary {
        align-items: stretch;
        flex-direction: column;
    }

    .daily-exemption-toolbar-actions {
        display: grid;
        grid-template-columns: 1fr;
        width: 100%;
    }

    .daily-exemption-toolbar .btn,
    .daily-exemption-summary .btn {
        width: 100%;
    }

    .daily-exemption-selection-count {
        white-space: normal;
    }

    .daily-exemption-student-list {
        grid-template-columns: 1fr;
        max-height: 420px;
    }

    .daily-exemption-actions {
        display: grid;
        grid-template-columns: 1fr;
        width: 100%;
    }

    .daily-exemption-actions .btn {
        width: 100%;
    }
}

.table-attendance-approval {
    min-width: 1380px;
    table-layout: fixed;
}

.table-attendance-approval td,
.table-attendance-approval th {
    vertical-align: middle;
}

.table-attendance-approval th {
    white-space: nowrap;
}

.table-attendance-approval td:nth-child(1),
.table-attendance-approval th:nth-child(1) {
    width: 44px;
}

.table-attendance-approval td:nth-child(2),
.table-attendance-approval th:nth-child(2) {
    width: 100px;
}

.table-attendance-approval td:nth-child(3),
.table-attendance-approval th:nth-child(3) {
    width: 120px;
}

.table-attendance-approval td:nth-child(4),
.table-attendance-approval th:nth-child(4) {
    width: 164px;
    white-space: nowrap;
}

.table-attendance-approval td:nth-child(6),
.table-attendance-approval th:nth-child(6) {
    width: 128px;
}

.table-attendance-approval td:nth-child(7),
.table-attendance-approval th:nth-child(7) {
    width: 180px;
    white-space: nowrap;
}

.table-attendance-approval td:nth-child(8),
.table-attendance-approval th:nth-child(8) {
    width: 118px;
    overflow-wrap: anywhere;
}

.table-attendance-approval td:nth-child(9),
.table-attendance-approval th:nth-child(9) {
    width: 170px;
}

@media (max-width: 720px) {
    .table-shell {
        max-width: 100%;
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
        overscroll-behavior-x: contain;
    }

    .table-shell > .table {
        width: max-content;
        min-width: 100%;
    }

    .table-shell .table .form-control,
    .table-shell .table input[type="text"],
    .table-shell .table input[type="password"],
    .table-shell .table input[type="email"],
    .table-shell .table input[type="number"],
    .table-shell .table input[type="date"],
    .table-shell .table input[type="datetime-local"],
    .table-shell .table input[type="time"],
    .table-shell .table select,
    .table-shell .table textarea {
        min-height: 44px;
    }

    .table-attendance-edit {
        min-width: 980px;
    }

    .table-attendance-edit .attendance-picker {
        min-width: 170px;
    }

    .table-attendance-edit .attendance-picker .attendance-code,
    .table-attendance-edit .attendance-reason {
        min-width: 140px;
    }

    .table-mobile-stack {
        border: 0;
        background: transparent;
        box-shadow: none;
        min-width: 0 !important;
        width: 100% !important;
    }

    .table-mobile-stack thead {
        display: none;
    }

    .table-mobile-stack,
    .table-mobile-stack tbody {
        display: block;
        width: 100%;
    }

    .table-mobile-stack tr {
        display: block;
        border: 1px solid var(--line-200);
        border-radius: var(--radius-md);
        background: var(--surface-0);
        padding: 12px;
        margin-bottom: 10px;
    }

    .table-mobile-stack td {
        display: block;
        width: 100%;
        border: 0 !important;
        padding: 0 !important;
        margin-top: 8px;
    }

    .table-mobile-stack td:first-child {
        margin-top: 0;
    }

    .table-mobile-stack td::before {
        display: block;
        margin-bottom: 4px;
        font-size: 11px;
        font-weight: 700;
        color: var(--muted-500);
        letter-spacing: 0.05em;
        text-transform: uppercase;
    }

    .table-mobile-stack td[colspan]::before {
        display: none;
        content: none !important;
    }

    .table-mobile-stack td:last-child {
        margin-top: 10px;
        display: flex;
        flex-direction: column;
        gap: 8px;
    }

    .table-mobile-stack td[colspan] {
        display: block;
        margin-top: 0;
    }

    .table-mobile-stack td > * {
        width: 100%;
        max-width: 100%;
    }

    .table-mobile-stack td .btn {
        width: 100%;
    }

    .table-mobile-stack td:last-child > a,
    .table-mobile-stack td:last-child > input[type="submit"],
    .table-mobile-stack td:last-child > button {
        display: flex;
        align-items: center;
        justify-content: center;
        width: 100%;
    }

    .attendance-code-table td:nth-child(1)::before {
        content: "表示名";
    }

    .attendance-code-table td:nth-child(2)::before {
        content: "略称";
    }

    .attendance-code-table td:nth-child(3)::before {
        content: "集計カテゴリ";
    }

    .attendance-code-table td:nth-child(4)::before {
        content: "状態";
    }

    .attendance-code-table td:nth-child(5)::before {
        content: "操作";
    }

    .academic-years-table td:nth-child(1)::before {
        content: "年度";
    }

    .academic-years-table td:nth-child(2)::before {
        content: "開始日";
    }

    .academic-years-table td:nth-child(3)::before {
        content: "終了日";
    }

    .academic-years-table td:nth-child(4)::before {
        content: "状態";
    }

    .academic-year-update-candidates-table td:nth-child(1)::before {
        content: "学籍番号";
    }

    .academic-year-update-candidates-table td:nth-child(2)::before {
        content: "氏名";
    }

    .academic-year-update-candidates-table td:nth-child(3)::before {
        content: "現学年";
    }

    .academic-year-update-candidates-table td:nth-child(4)::before {
        content: "現HR（クラス）";
    }

    .academic-year-update-candidates-table td:nth-child(5)::before {
        content: "現在籍状態";
    }

    .academic-year-update-candidates-table td:nth-child(6)::before {
        content: "判定結果";
    }

    .academic-year-update-candidates-table td:nth-child(7)::before {
        content: "留年";
    }

    .academic-year-update-candidates-table td:nth-child(8)::before {
        content: "留年理由";
    }

    .academic-year-update-results-table td:nth-child(1)::before {
        content: "学籍番号";
    }

    .academic-year-update-results-table td:nth-child(2)::before {
        content: "氏名";
    }

    .academic-year-update-results-table td:nth-child(3)::before {
        content: "現学年";
    }

    .academic-year-update-results-table td:nth-child(4)::before {
        content: "現HR（クラス）";
    }

    .academic-year-update-results-table td:nth-child(5)::before {
        content: "判定結果";
    }

    .academic-year-update-results-table td:nth-child(6)::before {
        content: "処理結果";
    }

    .academic-year-update-results-table td:nth-child(7)::before {
        content: "メッセージ";
    }

    .academic-grades-table td:nth-child(1)::before {
        content: "学年";
    }

    .academic-grades-table td:nth-child(2)::before {
        content: "番号";
    }

    .academic-grades-table td:nth-child(3)::before {
        content: "状態";
    }

    .academic-homerooms-table td:nth-child(1)::before {
        content: "HR（クラス）";
    }

    .academic-homerooms-table td:nth-child(2)::before {
        content: "学年";
    }

    .academic-homerooms-table td:nth-child(3)::before {
        content: "状態";
    }

    .academic-structure-homerooms-table td:nth-child(1)::before {
        content: "年度";
    }

    .academic-structure-homerooms-table td:nth-child(2)::before {
        content: "学年";
    }

    .academic-structure-homerooms-table td:nth-child(3)::before {
        content: "コース";
    }

    .academic-structure-homerooms-table td:nth-child(4)::before {
        content: "HRコード";
    }

    .academic-structure-homerooms-table td:nth-child(5)::before {
        content: "HR（クラス）";
    }

    .academic-structure-homerooms-table td:nth-child(6)::before {
        content: "状態";
    }

    .academic-structure-homerooms-table td:nth-child(7)::before {
        content: "操作";
    }

    .attendance-reason-table td:nth-child(1)::before {
        content: "理由名";
    }

    .attendance-reason-table td:nth-child(2)::before {
        content: "状態";
    }

    .attendance-reason-table td:nth-child(3)::before {
        content: "操作";
    }

    .assessment-category-table td:nth-child(1)::before {
        content: "種類名";
    }

    .assessment-category-table td:nth-child(2)::before {
        content: "入力時の並び";
    }

    .assessment-category-table td:nth-child(3)::before {
        content: "状態";
    }

    .assessment-category-table td:nth-child(4)::before {
        content: "操作";
    }

    .assessment-item-table td:nth-child(1)::before {
        content: "欄の名前";
    }

    .assessment-item-table td:nth-child(2)::before {
        content: "入力グループ";
    }

    .assessment-item-table td:nth-child(3)::before {
        content: "通知表への反映先";
    }

    .assessment-item-table td:nth-child(4)::before {
        content: "満点";
    }

    .assessment-item-table td:nth-child(5)::before {
        content: "重み";
    }

    .assessment-item-table td:nth-child(6)::before {
        content: "表示順";
    }

    .assessment-item-table td:nth-child(7)::before {
        content: "使用";
    }

    .assessment-item-table td:nth-child(8)::before {
        content: "操作";
    }

    .guardian-master-table td:nth-child(1)::before {
        content: "姓";
    }

    .guardian-master-table td:nth-child(2)::before {
        content: "名";
    }

    .guardian-master-table td:nth-child(3)::before {
        content: "メール";
    }

    .guardian-master-table td:nth-child(4)::before {
        content: "状態";
    }

    .guardian-master-table td:nth-child(5)::before {
        content: "操作";
    }

    .guardian-link-table td:nth-child(1)::before {
        content: "生徒番号";
    }

    .guardian-link-table td:nth-child(2)::before {
        content: "姓";
    }

    .guardian-link-table td:nth-child(3)::before {
        content: "名";
    }

    .guardian-link-table td:nth-child(4)::before {
        content: "HR（クラス）";
    }

    .guardian-link-table td:nth-child(5)::before {
        content: "続柄";
    }

    .guardian-link-table td:nth-child(6)::before {
        content: "主";
    }

    .guardian-link-table td:nth-child(7)::before {
        content: "操作";
    }

    .program-course-table td:nth-child(1)::before {
        content: "課程名";
    }

    .program-course-table td:nth-child(2)::before {
        content: "課程名（英語）";
    }

    .program-course-table td:nth-child(3)::before {
        content: "課程コード";
    }

    .program-course-table td:nth-child(4)::before {
        content: "コース名";
    }

    .program-course-table td:nth-child(5)::before {
        content: "コース名（英語）";
    }

    .program-course-table td:nth-child(6)::before {
        content: "コースコード";
    }

    .program-course-table td:nth-child(7)::before {
        content: "状態";
    }

    .program-course-table td:nth-child(8)::before {
        content: "操作";
    }

    .room-master-table td:nth-child(1)::before {
        content: "コード";
    }

    .room-master-table td:nth-child(2)::before {
        content: "名称";
    }

    .room-master-table td:nth-child(3)::before {
        content: "収容人数";
    }

    .room-master-table td:nth-child(4)::before {
        content: "並び順";
    }

    .room-master-table td:nth-child(5)::before {
        content: "状態";
    }

    .room-master-table td:nth-child(6)::before {
        content: "操作";
    }

    .school-calendar-day-table td:nth-child(1)::before {
        content: "日付";
    }

    .school-calendar-day-table td:nth-child(2)::before {
        content: "日種別";
    }

    .school-calendar-day-table td:nth-child(3)::before {
        content: "授業日";
    }

    .school-calendar-day-table td:nth-child(4)::before {
        content: "メモ";
    }

    .staff-master-table td:nth-child(1)::before {
        content: "教員コード";
    }

    .staff-master-table td:nth-child(2)::before {
        content: "姓";
    }

    .staff-master-table td:nth-child(3)::before {
        content: "名";
    }

    .staff-master-table td:nth-child(4)::before {
        content: "職種";
    }

    .staff-master-table td:nth-child(5)::before {
        content: "在職状態";
    }

    .staff-master-table td:nth-child(6)::before {
        content: "在職期間";
    }

    .staff-master-table td:nth-child(7)::before {
        content: "電子印";
    }

    .staff-master-table td:nth-child(8)::before {
        content: "ログインID";
    }

    .staff-master-table td:nth-child(9)::before {
        content: "アカウント状態";
    }

    .staff-master-table td:nth-child(10)::before {
        content: "ロック";
    }

    .staff-master-table td:nth-child(11)::before {
        content: "多要素認証";
    }

    .staff-master-table td:nth-child(12)::before {
        content: "操作";
    }

    .student-memo-category-table td:nth-child(1)::before {
        content: "カテゴリコード";
    }

    .student-memo-category-table td:nth-child(2)::before {
        content: "表示名";
    }

    .student-memo-category-table td:nth-child(3)::before {
        content: "並び順";
    }

    .student-memo-category-table td:nth-child(4)::before {
        content: "状態";
    }

    .student-memo-category-table td:nth-child(5)::before {
        content: "操作";
    }

    .subject-settings-table td:nth-child(1)::before {
        content: "カテゴリ";
    }

    .subject-settings-table td:nth-child(2)::before {
        content: "カテゴリ（英語）";
    }

    .subject-settings-table td:nth-child(3)::before {
        content: "コード";
    }

    .subject-settings-table td:nth-child(4)::before {
        content: "科目名";
    }

    .subject-settings-table td:nth-child(5)::before {
        content: "科目名（英語）";
    }

    .subject-settings-table td:nth-child(6)::before {
        content: "種別";
    }

    .subject-settings-table td:nth-child(7)::before {
        content: "状態";
    }

    .subject-settings-table td:nth-child(8)::before {
        content: "操作";
    }

    .term-settings-table td:nth-child(1)::before {
        content: "学期名";
    }

    .term-settings-table td:nth-child(2)::before {
        content: "開始日";
    }

    .term-settings-table td:nth-child(3)::before {
        content: "終了日";
    }

    .term-settings-table td:nth-child(4)::before {
        content: "状態";
    }

    .teachers-table td:nth-child(1)::before {
        content: "詳細";
    }

    .teachers-table td:nth-child(2)::before {
        content: "編集";
    }

    .teachers-table td:nth-child(3)::before {
        content: "氏名";
    }

    .teachers-table td:nth-child(4)::before {
        content: "メール";
    }

    .teachers-table td:nth-child(5)::before {
        content: "職種";
    }

    .teachers-table td:nth-child(6)::before {
        content: "在職状態";
    }

    .teachers-table td:nth-child(7)::before {
        content: "在職期間";
    }

    .teachers-table td:nth-child(8)::before {
        content: "電子印";
    }

    .grade-average-rules-table td:nth-child(1)::before {
        content: "適用範囲";
    }

    .grade-average-rules-table td:nth-child(2)::before {
        content: "対象";
    }

    .grade-average-rules-table td:nth-child(3)::before {
        content: "丸め";
    }

    .grade-average-rules-table td:nth-child(4)::before {
        content: "小数桁";
    }

    .grade-average-rules-table td:nth-child(5)::before {
        content: "欠損値";
    }

    .grade-average-rules-table td:nth-child(6)::before {
        content: "更新日時";
    }

    .grade-publish-settings-table td:nth-child(1)::before {
        content: "公開対象";
    }

    .grade-publish-settings-table td:nth-child(2)::before {
        content: "公開する成績";
    }

    .grade-publish-settings-table td:nth-child(3)::before {
        content: "公開開始";
    }

    .grade-publish-settings-table td:nth-child(4)::before {
        content: "公開終了";
    }

    .grade-publish-settings-table td:nth-child(5)::before {
        content: "範囲種別";
    }

    .grade-publish-settings-table td:nth-child(6)::before {
        content: "範囲名";
    }

    .grade-publish-settings-table td:nth-child(7)::before {
        content: "公開中";
    }

    .grade-publish-settings-table td:nth-child(8)::before {
        content: "評価ラベル";
    }

    .grade-publish-settings-table td:nth-child(9)::before {
        content: "操作";
    }

    .health-reports-table td:nth-child(1)::before {
        content: "報告番号";
    }

    .health-reports-table td:nth-child(2)::before {
        content: "タイトル";
    }

    .health-reports-table td:nth-child(3)::before {
        content: "状態";
    }

    .health-visits-table td:nth-child(1)::before {
        content: "生徒";
    }

    .health-visits-table td:nth-child(2)::before {
        content: "来室日時";
    }

    .health-visits-table td:nth-child(3)::before {
        content: "備考";
    }

    .category-rules-categories-table td:nth-child(1)::before {
        content: "カテゴリ";
    }

    .category-rules-categories-table td:nth-child(2)::before {
        content: "表示名";
    }

    .category-rules-categories-table td:nth-child(3)::before {
        content: "並び順";
    }

    .category-rules-categories-table td:nth-child(4)::before {
        content: "有効";
    }

    .category-rules-rules-table td:nth-child(1)::before {
        content: "カテゴリ";
    }

    .category-rules-rules-table td:nth-child(2)::before {
        content: "表示名";
    }

    .category-rules-rules-table td:nth-child(3)::before {
        content: "送信者種別";
    }

    .category-rules-rules-table td:nth-child(4)::before {
        content: "新規送信";
    }

    .category-rules-rules-table td:nth-child(5)::before {
        content: "返信";
    }

    .category-rules-rules-table td:nth-child(6)::before {
        content: "全校送信";
    }

    .category-rules-rules-table td:nth-child(7)::before {
        content: "送信曜日マスク";
    }

    .category-rules-rules-table td:nth-child(8)::before {
        content: "開始時刻";
    }

    .category-rules-rules-table td:nth-child(9)::before {
        content: "終了時刻";
    }

    .category-rules-rules-table td:nth-child(10)::before {
        content: "タイムゾーンID";
    }

    .table-period-settings.table-mobile-stack td:nth-child(1)::before {
        content: "時限";
    }

    .table-period-settings.table-mobile-stack td:nth-child(2)::before {
        content: "表示名";
    }

    .table-period-settings.table-mobile-stack td:nth-child(3)::before {
        content: "開始時間";
    }

    .table-period-settings.table-mobile-stack td:nth-child(4)::before {
        content: "終了時間";
    }

    .table-period-settings.table-mobile-stack td:nth-child(5)::before {
        content: "操作";
    }

    .hr-credit-settings-table.table-mobile-stack td:nth-child(1)::before {
        content: "HR";
    }

    .hr-credit-settings-table.table-mobile-stack td:nth-child(2)::before {
        content: "HR\6388\696d\540d";
    }

    .hr-credit-settings-table.table-mobile-stack td:nth-child(3)::before {
        content: "\62c5\5f53\6559\54e1";
    }

    .hr-credit-settings-table.table-mobile-stack td:nth-child(4)::before {
        content: "\73fe\5728\5358\4f4d";
    }

    .hr-credit-settings-table.table-mobile-stack td:nth-child(5)::before {
        content: "\7de8\96c6\6b04";
    }

    .hr-credit-settings-table.table-mobile-stack td:nth-child(6)::before {
        content: "\4fdd\5b58";
    }

    .table-period-settings.table-mobile-stack .table-actions {
        width: 100%;
        justify-content: flex-start;
    }

    .table-period-settings.table-mobile-stack .icon-action {
        flex: 0 0 44px;
        width: 44px;
        height: 44px;
    }

    .rank-definitions-table td:nth-child(1)::before {
        content: "名称";
    }

    .rank-definitions-table td:nth-child(2)::before {
        content: "集計単位";
    }

    .rank-definitions-table td:nth-child(3)::before {
        content: "集計対象";
    }

    .rank-definitions-table td:nth-child(4)::before {
        content: "学期";
    }

    .rank-definitions-table td:nth-child(5)::before {
        content: "順位基準";
    }

    .rank-definitions-table td:nth-child(6)::before {
        content: "操作";
    }

    .rank-results-table td:nth-child(1)::before {
        content: "順位";
    }

    .rank-results-table td:nth-child(2)::before {
        content: "生徒番号";
    }

    .rank-results-table td:nth-child(3)::before {
        content: "生徒名";
    }

    .rank-results-table td:nth-child(4)::before {
        content: "指標値";
    }

    .rank-results-table td:nth-child(5)::before {
        content: "母集団";
    }

    .rank-results-table td:nth-child(6)::before {
        content: "計算日時";
    }

    .rank-group-members-table td:nth-child(1)::before {
        content: "生徒番号";
    }

    .rank-group-members-table td:nth-child(2)::before {
        content: "生徒名";
    }

    .rank-group-members-table td:nth-child(3)::before {
        content: "開始日";
    }

    .rank-group-members-table td:nth-child(4)::before {
        content: "終了日";
    }

    .school-calendar-day-table td:last-child,
    .academic-years-table td:last-child,
    .academic-year-update-results-table td:last-child,
    .academic-grades-table td:last-child,
    .academic-homerooms-table td:last-child,
    .category-rules-categories-table td:last-child,
    .category-rules-rules-table td:last-child,
    .term-settings-table td:last-child,
    .teachers-table td:last-child,
    .grade-average-rules-table td:last-child,
    .health-reports-table td:last-child,
    .health-visits-table td:last-child,
    .rank-results-table td:last-child,
    .rank-group-members-table td:last-child {
        display: block;
        margin-top: 8px;
    }

    .academic-year-update-candidates-table .year-update-reason-input {
        min-width: 0;
    }

    .attendance-editor-actions,
    .grade-entry-actions {
        align-items: stretch;
    }

    .attendance-editor-actions-group {
        width: 100%;
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 8px;
    }

    .attendance-editor-actions-group .btn,
    .grade-entry-actions .btn {
        width: 100%;
    }

    .attendance-editor-context-actions {
        gap: 8px;
    }

    .attendance-editor-context-action {
        padding: 10px 10px 9px;
        gap: 3px;
    }

    .attendance-editor-context-action-kind {
        min-height: 20px;
        padding: 0 7px;
    }

    .attendance-editor-context-action-title {
        font-size: 12px;
    }

    .attendance-editor-context-action-note {
        font-size: 10px;
    }

    .attendance-approval-filters {
        grid-template-columns: 1fr;
    }

    .attendance-approval-search {
        grid-column: auto;
    }

    .attendance-approval-search .btn {
        width: 100%;
    }

    .attendance-approval-row-actions {
        display: grid;
        grid-template-columns: 1fr;
        width: 100%;
    }

    .attendance-approval-row-actions .btn {
        width: 100%;
    }

    .attendance-approval-bulk-actions {
        align-items: stretch;
        flex-direction: column;
    }

    .table-attendance-mobile-stack {
        min-width: 0 !important;
    }

    .table-attendance-mobile-stack td:nth-child(1)::before {
        content: "生徒番号";
    }

    .table-attendance-mobile-stack td:nth-child(2)::before {
        content: "生徒名";
    }

    .table-attendance-mobile-stack td:nth-child(3)::before {
        content: "出欠";
    }

    .table-attendance-mobile-stack td:nth-child(4)::before {
        content: "理由";
    }

    .table-attendance-mobile-stack td:nth-child(5)::before {
        content: "備考";
    }

    .attendance-class-table td:nth-child(1)::before {
        content: "生徒番号";
    }

    .attendance-class-table td:nth-child(2)::before {
        content: "生徒名";
    }

    .attendance-class-table td:nth-child(3)::before {
        content: "ワンタップ受付";
    }

    .attendance-class-table td:nth-child(4)::before {
        content: "出欠";
    }

    .attendance-class-table td:nth-child(5)::before {
        content: "理由";
    }

    .attendance-class-table td:nth-child(6)::before {
        content: "備考";
    }

    .table-attendance-mobile-stack td:last-child {
        display: block;
    }

    .table-attendance-mobile-stack .attendance-picker {
        align-items: stretch;
        gap: 8px;
    }

    .table-attendance-mobile-stack .attendance-picker .attendance-code,
    .table-attendance-mobile-stack .attendance-reason {
        min-width: 0;
        width: 100%;
    }

    .grade-entry-mobile {
        min-width: 0 !important;
    }

    .grade-entry-mobile > tbody > tr:first-child {
        display: none;
    }

    .grade-entry-mobile .grade-entry-mobile-only-cell {
        display: block;
    }

    .grade-entry-mobile td:nth-child(1)::before {
        content: "出席番号";
    }

    .grade-entry-mobile td:nth-child(2)::before {
        content: "氏名";
    }

    .grade-entry-mobile td:nth-child(3)::before {
        display: none;
        content: "";
    }

    .grade-entry-mobile td:nth-child(4)::before {
        content: "素点";
    }

    .grade-entry-mobile td:nth-child(5)::before {
        content: "状態";
    }

    .grade-entry-mobile td:nth-child(6)::before {
        content: "学年末評点";
    }

    .grade-entry-mobile td:nth-child(7)::before {
        content: "学年末評定";
    }

    .grade-entry-mobile td:nth-child(8)::before {
        content: "知識・技能";
    }

    .grade-entry-mobile td:nth-child(9)::before {
        content: "思考・判断・表現";
    }

    .grade-entry-mobile td:nth-child(10)::before {
        content: "主体的に学習に取り組む態度";
    }

    .grade-calculation-mode-criterion .grade-entry-mobile td:nth-child(4)::before {
        content: "前期・後期試験";
    }

    .grade-calculation-mode-criterion .grade-entry-mobile td:nth-child(5)::before {
        content: "年間総合点";
    }

    .grade-calculation-mode-criterion .grade-entry-mobile td:nth-child(6)::before {
        content: "5段階評定";
    }

    .grade-entry-mobile tr {
        transition: border-color 180ms ease, box-shadow 180ms ease;
    }

    .grade-entry-mobile tr.is-expanded {
        border-color: rgba(42, 91, 215, 0.3);
        box-shadow: 0 12px 22px rgba(15, 23, 42, 0.08);
    }

    .grade-entry-mobile tr:not(.is-expanded) td:nth-child(n+4) {
        display: none;
    }

    .grade-entry-mobile tr:not(.is-expanded) .grade-entry-override-reason {
        display: none;
    }

    .grade-calculation-mode-criterion .grade-entry-mobile .grade-entry-score-list-inner {
        grid-template-columns: minmax(0, 1fr);
    }

    .grade-entry-mobile .grade-entry-mobile-toggle {
        min-height: 44px;
    }

    .student-attendance-overview-grid td:nth-child(1)::before {
        content: "授業（科目）";
    }

    .student-attendance-overview-grid td:nth-child(2)::before {
        content: "担当";
    }

    .student-attendance-overview-grid td:nth-child(3)::before {
        content: "実施回";
    }

    .student-attendance-overview-grid td:nth-child(4)::before {
        content: "欠席";
    }

    .student-attendance-overview-grid td:nth-child(5)::before {
        content: "遅刻";
    }

    .student-attendance-overview-grid td:nth-child(6)::before {
        content: "早退";
    }

    .student-attendance-overview-grid td:nth-child(7)::before {
        content: "公欠";
    }

    .student-attendance-overview-grid td:nth-child(8)::before {
        content: "忌引";
    }

    .student-attendance-overview-grid td:nth-child(9)::before {
        content: "出停";
    }

    .student-attendance-overview-grid td:nth-child(10)::before {
        content: "遅早";
    }

    .student-attendance-overview-grid td:nth-child(11)::before {
        content: "出席率";
    }

    .student-attendance-detail-grid td:nth-child(1)::before {
        content: "日付";
    }

    .student-attendance-detail-grid td:nth-child(2)::before {
        content: "時限";
    }

    .student-attendance-detail-grid td:nth-child(3)::before {
        content: "授業（科目）";
    }

    .student-attendance-detail-grid td:nth-child(4)::before {
        content: "区分";
    }

    .student-attendance-detail-grid td:nth-child(5)::before {
        content: "理由";
    }

    .student-attendance-detail-grid td:nth-child(6)::before {
        content: "備考";
    }

    .student-score-matrix {
        min-width: 0 !important;
    }

    .student-score-matrix td:nth-child(1)::before {
        content: "カテゴリ";
    }

    .student-score-matrix td:nth-child(2)::before {
        content: "科目";
    }

    .student-score-matrix td:nth-child(3)::before {
        content: "状態";
    }

    .student-score-matrix td:nth-child(4)::before {
        content: "前期素点";
    }

    .student-score-matrix td:nth-child(5)::before {
        content: "後期素点";
    }

    .student-score-matrix td:nth-child(6)::before {
        content: "学年末評点";
    }

    .student-score-matrix td:nth-child(7)::before {
        content: "学年末評定";
    }

    .student-score-matrix td:nth-child(8)::before {
        content: "評価ラベル";
    }

    .student-score-matrix td:nth-child(9)::before {
        content: "知識・技能";
    }

    .student-score-matrix td:nth-child(10)::before {
        content: "思考・判断・表現";
    }

    .student-score-matrix td:nth-child(11)::before {
        content: "主体的に学習に取り組む態度";
    }

    .student-score-matrix td:nth-child(12)::before {
        content: "単位";
    }

    .student-score-matrix tr {
        background: linear-gradient(180deg, rgba(248, 251, 255, 0.98) 0%, rgba(255, 255, 255, 1) 100%);
    }

    .student-memo-detail-card,
    .student-achievement-detail-card,
    .student-criterion-detail-card {
        padding: 14px;
    }

    .student-memo-detail-card h3,
    .student-achievement-detail-card h3,
    .student-criterion-detail-card h3 {
        font-size: 20px;
    }

    .student-activity-detail-grid {
        grid-template-columns: 1fr;
    }

    .student-score-matrix td:last-child,
    .student-attendance-overview-grid td:last-child,
    .student-attendance-detail-grid td:last-child,
    .student-achievement-list td:last-child,
    .student-criterion-list td:last-child {
        display: block;
    }

    .student-memo-list td:nth-child(1)::before {
        content: "日付";
    }

    .student-memo-list td:nth-child(2)::before {
        content: "カテゴリ";
    }

    .student-memo-list td:nth-child(3)::before {
        content: "タイトル";
    }

    .student-memo-list td:nth-child(4)::before {
        content: "公開範囲";
    }

    .student-memo-list td:nth-child(5)::before {
        content: "登録者";
    }

    .student-memo-list td:nth-child(6)::before {
        content: "登録日時";
    }

    .student-memo-list td:nth-child(7)::before {
        content: "操作";
    }

    .student-achievement-list td:nth-child(1)::before {
        content: "実施日";
    }

    .student-achievement-list td:nth-child(2)::before {
        content: "種別";
    }

    .student-achievement-list td:nth-child(3)::before {
        content: "タイトル";
    }

    .student-achievement-list td:nth-child(4)::before {
        content: "結果";
    }

    .student-achievement-list td:nth-child(5)::before {
        content: "公開範囲";
    }

    .student-criterion-list td:nth-child(1)::before {
        content: "更新日時";
    }

    .student-criterion-list td:nth-child(2)::before {
        content: "科目";
    }

    .student-criterion-list td:nth-child(3)::before {
        content: "学期";
    }

    .student-criterion-list td:nth-child(4)::before {
        content: "種別";
    }

    .student-criterion-list td:nth-child(5)::before {
        content: "観点";
    }

    .student-criterion-list td:nth-child(6)::before {
        content: "評価";
    }

    .table-request-entry td:nth-child(1)::before,
    .table-request-manage td:nth-child(1)::before,
    .table-request-public td:nth-child(1)::before {
        content: "生徒番号";
    }

    .table-request-entry td:nth-child(2)::before,
    .table-request-manage td:nth-child(2)::before,
    .table-request-public td:nth-child(2)::before {
        content: "生徒名";
    }

    .table-request-entry td:nth-child(3)::before,
    .table-request-manage td:nth-child(3)::before,
    .table-request-public td:nth-child(3)::before {
        content: "クラス";
    }

    .table-request-entry td:nth-child(4)::before,
    .table-request-manage td:nth-child(4)::before,
    .table-request-public td:nth-child(4)::before {
        content: "出席番号";
    }

    .table-request-entry td:nth-child(5)::before,
    .table-request-manage td:nth-child(5)::before,
    .table-request-public td:nth-child(5)::before {
        content: "申請種別";
    }

    .table-request-entry td:nth-child(6)::before,
    .table-request-manage td:nth-child(6)::before,
    .table-request-public td:nth-child(6)::before {
        content: "開始日";
    }

    .table-request-entry td:nth-child(7)::before,
    .table-request-manage td:nth-child(7)::before,
    .table-request-public td:nth-child(7)::before {
        content: "終了日";
    }

    .table-request-entry td:nth-child(8)::before,
    .table-request-manage td:nth-child(8)::before,
    .table-request-public td:nth-child(8)::before {
        content: "送信日時";
    }

    .table-request-entry td:nth-child(9)::before,
    .table-request-manage td:nth-child(9)::before,
    .table-request-public td:nth-child(9)::before {
        content: "状態";
    }

    .table-request-entry td:nth-child(10)::before,
    .table-request-manage td:nth-child(10)::before,
    .table-request-public td:nth-child(10)::before {
        content: "理由";
    }

    .table-request-entry td:nth-child(11)::before,
    .table-request-manage td:nth-child(11)::before,
    .table-request-public td:nth-child(11)::before {
        content: "操作";
    }

    .talk-composer-row {
        flex-direction: column;
        align-items: stretch;
        gap: 8px;
    }

    .talk-composer-row .form-control,
    .talk-composer-row .talk-composer-field,
    .talk-composer-row .talk-file,
    .talk-composer-row .talk-send {
        width: 100%;
        max-width: 100%;
    }

    .talk-new-attachment-row {
        align-items: stretch;
    }

    .talk-new-attachment-row .talk-file,
    .talk-new-create-btn {
        width: 100%;
        max-width: 100%;
    }
}

.student-intake-import .student-intake-import-actions {
    display: flex;
    gap: 10px;
    align-items: center;
    flex-wrap: wrap;
}

.student-intake-import .table-shell {
    margin-top: 12px;
}

.student-intake-import .table {
    min-width: 880px;
}

.student-intake-import .student-intake-example {
    margin-top: 12px;
}

.student-intake-import .student-intake-example-shell .table {
    min-width: 760px;
}

.student-single-entry .student-single-entry-nextlinks {
    margin-top: 10px;
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}

.student-single-entry .student-single-sections {
    display: flex;
    flex-direction: column;
    gap: 22px;
}

.student-single-entry .student-single-section {
    border-top: 1px solid rgba(148, 168, 198, 0.28);
    padding-top: 18px;
}

.student-single-entry .student-single-section:first-child {
    border-top: 0;
    padding-top: 0;
}

.student-single-entry .student-single-section-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 12px;
}

.student-single-entry .student-single-section-head h3 {
    margin: 0;
    color: var(--ink-800);
    font-size: 16px;
    font-weight: 700;
    line-height: 1.35;
}

.student-single-entry .student-single-section-note {
    color: var(--muted-500);
    font-size: 12px;
    text-align: right;
}

.student-single-entry .student-single-section-grid {
    margin-bottom: 0;
}

.student-single-entry .student-no-preview-field {
    min-width: 0;
}

.student-single-entry .student-no-preview-card {
    min-height: 82px;
    padding: 12px 14px;
    border: 1px solid rgba(148, 168, 198, 0.38);
    border-radius: 8px;
    background: #f7f9fc;
    color: var(--ink-700);
}

.student-single-entry .student-no-preview-card.is-ready {
    border-color: rgba(39, 122, 87, 0.36);
    background: #f4fbf7;
}

.student-single-entry .student-no-preview-card.is-warning {
    border-color: rgba(184, 113, 36, 0.46);
    background: #fff8ee;
}

.student-single-entry .student-no-preview-card.is-muted {
    color: var(--muted-500);
}

.student-single-entry .student-no-preview-label {
    color: var(--muted-500);
    font-size: 12px;
    font-weight: 700;
}

.student-single-entry .student-no-preview-value {
    margin-top: 2px;
    color: var(--ink-900);
    font-size: 24px;
    font-weight: 800;
    line-height: 1.25;
    word-break: break-all;
}

.student-single-entry .student-no-preview-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 6px 12px;
    margin-top: 8px;
    color: var(--ink-700);
    font-size: 12px;
}

.student-single-entry .student-no-preview-warning {
    margin-top: 8px;
    color: #965f19;
    font-size: 12px;
    font-weight: 700;
    line-height: 1.5;
}

.student-single-entry .student-no-preview-empty {
    color: var(--muted-500);
    font-size: 13px;
    line-height: 1.55;
}

.student-single-entry .form-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
}

.student-single-entry .form-help {
    margin-top: 2px;
}

.student-single-entry .optional-profile-accordion {
    border-color: rgba(104, 137, 188, 0.35);
    background: linear-gradient(180deg, rgba(236, 244, 255, 0.72) 0%, rgba(255, 255, 255, 0.96) 100%);
}

.student-single-entry .optional-profile-accordion summary {
    background: rgba(214, 228, 247, 0.8);
    color: var(--ink-800);
}

.student-single-entry .optional-profile-caption {
    margin-left: auto;
    font-size: 12px;
    font-weight: 500;
    color: var(--muted-500);
}

.student-single-entry .optional-profile-accordion > :not(summary) {
    background: transparent;
}

.student-single-entry .optional-profile-grid {
    margin-bottom: 0;
}

@media (max-width: 1600px) {
    .grade-entry-search-workspace {
        grid-template-columns: minmax(0, 1fr);
    }

    .grade-entry-primary-actions {
        min-width: 0;
        justify-content: flex-end;
    }
}

@media (max-width: 1200px) {
    .grade-entry-primary-actions {
        justify-content: flex-start;
    }
}

@media (max-width: 1024px) {

    .grade-entry-filter-grid {
        grid-template-columns: minmax(180px, 0.8fr) minmax(0, 2fr);
    }

    .grade-entry-class-field {
        grid-column: 1;
        grid-row: 1;
    }

    .grade-entry-course-search-field {
        grid-column: 1 / -1;
        grid-row: 2;
    }

    .grade-entry-course-field {
        grid-column: 2;
        grid-row: 1;
    }

    .grade-entry-assessment-field {
        grid-column: 1 / -1;
        grid-row: 3;
    }

    .student-single-entry .form-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 720px) {
    .grade-entry-filter-grid {
        grid-template-columns: 1fr;
    }

    .grade-entry-class-field,
    .grade-entry-course-field {
        grid-column: auto;
        grid-row: auto;
    }

    .grade-entry-course-search-field,
    .grade-entry-assessment-field {
        grid-column: auto;
        grid-row: auto;
    }

    .grade-entry-primary-actions,
    .grade-entry-approval-actions {
        width: 100%;
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        margin-left: 0;
    }

    .grade-entry-primary-actions .btn,
    .grade-entry-approval-actions .btn {
        width: 100%;
    }

    .grade-entry-primary-actions .grade-entry-back-button {
        grid-column: 1 / -1;
        order: 3;
    }

    .grade-entry-status-row {
        align-items: stretch;
    }

    .grade-entry-savebar {
        flex-direction: column;
        align-items: stretch;
        gap: 8px;
        padding: 10px;
    }

    .grade-entry-savebar-label {
        width: 100%;
        margin-right: 0;
        white-space: nowrap;
    }

    .grade-entry-savebar .btn {
        width: 100%;
        min-width: 0;
    }

    .student-single-entry .form-grid {
        grid-template-columns: 1fr;
    }

    .student-single-entry .student-single-section-head {
        align-items: flex-start;
        flex-direction: column;
    }

    .student-single-entry .student-single-section-note {
        text-align: left;
    }
}

body.cnx-loading-open {
    cursor: progress;
}

.cnx-loading-overlay {
    position: fixed;
    inset: 0;
    z-index: 3000;
    display: grid;
    place-items: start center;
    padding: max(76px, env(safe-area-inset-top)) 16px max(18px, env(safe-area-inset-bottom));
    background: rgba(15, 23, 42, 0.26);
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transition: opacity 180ms var(--ease-out-quart), visibility 180ms var(--ease-out-quart);
}

.cnx-loading-overlay.is-active {
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
}

.cnx-loading-card {
    display: grid;
    justify-items: center;
    width: min(360px, 100%);
    padding: 20px 18px 18px;
    border: 1px solid rgba(191, 219, 254, 0.9);
    border-radius: var(--radius-md);
    background: rgba(255, 255, 255, 0.98);
    box-shadow: 0 24px 58px rgba(15, 23, 42, 0.22);
    text-align: center;
}

.cnx-loading-spinner {
    width: 36px;
    height: 36px;
    margin-bottom: 12px;
    border: 4px solid rgba(42, 91, 215, 0.16);
    border-top-color: var(--brand-600);
    border-radius: 50%;
    animation: cnx-loading-spin 0.85s linear infinite;
}

.cnx-loading-title {
    color: var(--ink-800);
    font-size: 17px;
    font-weight: 700;
    line-height: 1.45;
}

.cnx-loading-text {
    margin-top: 4px;
    color: var(--muted-500);
    font-size: 13px;
    line-height: 1.6;
}

.btn.is-loading,
button.is-loading,
input[type="submit"].is-loading,
input[type="button"].is-loading,
a.is-loading {
    opacity: 0.72;
    pointer-events: none;
    transform: none;
}

@keyframes cnx-loading-spin {
    from {
        transform: rotate(0deg);
    }

    to {
        transform: rotate(360deg);
    }
}

@media (max-width: 720px) {
    .cnx-loading-overlay {
        align-items: end;
        padding: 16px 12px max(18px, env(safe-area-inset-bottom));
    }

    .cnx-loading-card {
        width: 100%;
        padding: 18px 16px 16px;
    }
}

@media (max-width: 1500px) {
    .attendance-approval-table-shell {
        overflow: visible;
    }

    .attendance-approval-table-shell > .table-attendance-approval,
    .table-attendance-approval,
    .table-attendance-approval tbody {
        display: block;
        width: 100% !important;
        min-width: 0 !important;
        border: 0;
        background: transparent;
        box-shadow: none;
    }

    .table-attendance-approval thead {
        display: none;
    }

    .table-attendance-approval tr {
        display: block;
        margin-bottom: 12px;
        padding: 14px 16px;
        border: 1px solid rgba(191, 219, 254, 0.94);
        border-radius: 8px;
        background: rgba(255, 255, 255, 0.98);
        box-shadow: 0 12px 30px rgba(42, 91, 215, 0.08);
    }

    .table-attendance-approval td {
        display: grid;
        grid-template-columns: 118px minmax(0, 1fr);
        align-items: center;
        gap: 10px;
        width: 100% !important;
        padding: 5px 0 !important;
        border: 0 !important;
        color: var(--ink-800);
        line-height: 1.5;
        white-space: normal !important;
        overflow-wrap: anywhere;
    }

    .table-attendance-approval td::before {
        display: block;
        color: var(--ink-500);
        font-size: 12px;
        font-weight: 700;
        letter-spacing: 0;
        text-transform: none;
    }

    .table-attendance-approval td:nth-child(1)::before {
        content: "選択";
    }

    .table-attendance-approval td:nth-child(2)::before {
        content: "区分";
    }

    .table-attendance-approval td:nth-child(3)::before {
        content: "HR";
    }

    .table-attendance-approval td:nth-child(4)::before {
        content: "日付";
    }

    .table-attendance-approval td:nth-child(5)::before {
        content: "対象";
    }

    .table-attendance-approval td:nth-child(6)::before {
        content: "状態";
    }

    .table-attendance-approval td:nth-child(7)::before {
        content: "提出日時";
    }

    .table-attendance-approval td:nth-child(8)::before {
        content: "申請者";
    }

    .table-attendance-approval td:nth-child(9) {
        display: block;
        margin-top: 8px;
        padding-top: 12px !important;
        border-top: 1px solid rgba(191, 219, 254, 0.84) !important;
    }

    .table-attendance-approval td:nth-child(9)::before {
        content: "操作";
        margin-bottom: 8px;
    }

    .table-attendance-approval td > * {
        width: auto;
        max-width: 100%;
    }

    .table-attendance-approval .attendance-approval-row-actions {
        display: grid;
        grid-template-columns: minmax(0, 1fr) minmax(0, 1.2fr);
        gap: 8px;
        width: 100%;
    }

    .table-attendance-approval .attendance-approval-row-actions .btn {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        width: 100%;
        min-height: 40px;
        margin-right: 0;
    }

    .attendance-approval-bulk-actions {
        position: sticky;
        top: 78px;
        z-index: 4;
    }
}

@media (max-width: 560px) {
    .table-attendance-approval tr {
        padding: 12px;
    }

    .table-attendance-approval td {
        grid-template-columns: 92px minmax(0, 1fr);
        gap: 8px;
        font-size: 14px;
    }

    .table-attendance-approval .attendance-approval-row-actions {
        grid-template-columns: 1fr;
    }
}

.portal-nav-card--daily-review {
    background: linear-gradient(135deg, rgba(236, 253, 245, 0.96), rgba(255, 255, 255, 0.96));
    border-color: rgba(16, 185, 129, 0.28);
}

.attendance-request-source-badge {
    display: inline-flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 4px 8px;
    width: fit-content;
    max-width: 100%;
    margin-top: 6px;
    padding: 4px 8px;
    border: 1px solid rgba(13, 148, 136, 0.3);
    border-radius: 6px;
    background: rgba(240, 253, 250, 0.95);
    color: #0f766e;
    font-size: 12px;
    font-weight: 700;
    line-height: 1.35;
}

.attendance-request-source-badge--manual {
    border-color: rgba(217, 119, 6, 0.3);
    background: rgba(255, 251, 235, 0.96);
    color: #92400e;
}

.attendance-request-source-detail {
    color: inherit;
    font-weight: 600;
    opacity: 0.82;
}

.attendance-request-manage-table-shell {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}

.table-request-manage {
    min-width: 1420px;
    table-layout: fixed;
}

.table-request-manage th,
.table-request-manage td {
    padding: 10px 12px;
    vertical-align: middle;
    line-height: 1.35;
}

.table-request-manage th {
    white-space: nowrap;
}

.table-request-manage th:nth-child(1),
.table-request-manage td:nth-child(1) {
    width: 180px;
}

.table-request-manage th:nth-child(2),
.table-request-manage td:nth-child(2) {
    width: 112px;
}

.table-request-manage th:nth-child(3),
.table-request-manage td:nth-child(3) {
    width: 112px;
}

.table-request-manage th:nth-child(4),
.table-request-manage td:nth-child(4) {
    width: 178px;
}

.table-request-manage th:nth-child(5),
.table-request-manage td:nth-child(5),
.table-request-manage th:nth-child(6),
.table-request-manage td:nth-child(6) {
    width: 118px;
}

.table-request-manage th:nth-child(7),
.table-request-manage td:nth-child(7) {
    width: 90px;
}

.table-request-manage th:nth-child(8),
.table-request-manage td:nth-child(8) {
    width: 380px;
}

.table-request-manage th:nth-child(9),
.table-request-manage td:nth-child(9) {
    width: 124px;
}

.request-manage-student-cell,
.request-manage-class-cell,
.request-manage-request-cell,
.request-manage-requester-cell {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 4px 8px;
    min-width: 0;
}

.request-manage-student-cell br,
.request-manage-class-cell br,
.request-manage-request-cell br,
.request-manage-requester-cell br {
    display: none;
}

.request-manage-student-no,
.request-manage-date,
.request-manage-period {
    color: var(--ink-600);
    font-size: 13px;
    font-variant-numeric: tabular-nums;
    font-weight: 700;
    line-height: 1.25;
    white-space: nowrap;
}

.request-manage-student-name,
.request-manage-class-name,
.request-manage-requester-name {
    color: var(--ink-900);
    font-size: 14px;
    font-weight: 800;
    line-height: 1.3;
    overflow-wrap: anywhere;
}

.request-manage-attendance-no {
    color: var(--ink-500);
    font-size: 12px;
    font-weight: 800;
    line-height: 1.25;
    white-space: nowrap;
}

.request-manage-type-badge,
.request-manage-status-badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: fit-content;
    max-width: 100%;
    min-height: 26px;
    padding: 3px 8px;
    border-radius: 6px;
    font-size: 12px;
    font-weight: 800;
    line-height: 1;
    white-space: nowrap;
}

.request-manage-type-badge {
    border: 1px solid rgba(59, 130, 246, 0.22);
    background: rgba(239, 246, 255, 0.92);
    color: #1d4ed8;
}

.request-manage-requester-type {
    color: var(--ink-600);
    font-size: 13px;
    font-weight: 800;
    line-height: 1.25;
    white-space: nowrap;
}

.request-manage-status-badge--pending {
    border: 1px solid rgba(217, 119, 6, 0.28);
    background: rgba(255, 251, 235, 0.95);
    color: #92400e;
}

.request-manage-status-badge--approved {
    border: 1px solid rgba(13, 148, 136, 0.28);
    background: rgba(240, 253, 250, 0.95);
    color: #0f766e;
}

.request-manage-status-badge--rejected,
.request-manage-status-badge--cancelled,
.request-manage-status-badge--neutral {
    border: 1px solid rgba(100, 116, 139, 0.2);
    background: rgba(248, 250, 252, 0.95);
    color: var(--ink-700);
}

.request-manage-reason {
    max-width: 100%;
    color: var(--ink-800);
    line-height: 1.45;
    overflow-wrap: anywhere;
}

.table-request-manage .btn {
    margin: 2px 4px 2px 0;
    white-space: nowrap;
}

.daily-review-mode-row,
.daily-review-options {
    display: flex;
    align-items: center;
    gap: 12px;
    flex-wrap: wrap;
}

.daily-review-mode-row {
    margin: 18px 0 14px;
}

.daily-review-mode-label {
    font-weight: 700;
    color: var(--ink);
}

.daily-review-mode-selector {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 4px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: var(--surface-subtle, #f7f9fc);
}

.daily-review-mode-selector input[type="radio"] {
    position: absolute;
    opacity: 0;
    pointer-events: none;
}

.daily-review-mode-selector label {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 110px;
    min-height: 40px;
    padding: 7px 16px;
    border: 0;
    border-radius: 6px;
    background: transparent;
    color: var(--ink-600);
    font-weight: 700;
    cursor: pointer;
    transition: background-color 0.15s ease, color 0.15s ease, box-shadow 0.15s ease;
}

.daily-review-mode-selector input[type="radio"]:checked + label {
    background: #2f66e8;
    color: #fff;
    box-shadow: 0 3px 10px rgba(47, 102, 232, 0.18);
}

.daily-review-mode-selector input[type="radio"]:focus-visible + label {
    outline: 2px solid #2f66e8;
    outline-offset: 2px;
}

.daily-review-date-control {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 48px;
    align-items: center;
    gap: 8px;
}

.daily-review-date-control .form-control {
    min-width: 0;
}

.daily-review-weekday {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 48px;
    min-height: 44px;
    border: 1px solid var(--line);
    border-radius: 6px;
    background: var(--surface-subtle, #f7f9fc);
    color: var(--ink-600);
    font-weight: 800;
    white-space: nowrap;
}

.daily-review-weekday:empty {
    visibility: hidden;
}

.daily-review-weekday[data-day="0"] {
    border-color: #fecdca;
    background: #fff4f2;
    color: #b42318;
}

.daily-review-weekday[data-day="6"] {
    border-color: #b2ddff;
    background: #eff8ff;
    color: #175cd3;
}

.daily-review-options {
    margin-top: 14px;
    padding: 12px 14px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: var(--surface-subtle, #f7f9fc);
}

.daily-review-report-day {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 4px 8px;
    border-radius: 999px;
    font-size: 0.86rem;
    font-weight: 700;
    white-space: nowrap;
}

.daily-review-report-day--included {
    color: #08796f;
    background: #e9faf7;
}

.daily-review-report-day--excluded {
    color: #8b5a00;
    background: #fff7df;
}

.daily-review-report-day + small {
    display: block;
    margin-top: 4px;
    color: var(--muted);
    line-height: 1.35;
}

.table-attendance-daily-review tr.daily-review-date-group-start td {
    border-top: 2px solid #9fb8d8;
}

.attendance-daily-review-table-shell {
    position: relative;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}

.table-attendance-daily-review {
    min-width: 1500px;
    table-layout: fixed;
    overflow: visible;
}

.table-attendance-daily-review th,
.table-attendance-daily-review td {
    vertical-align: middle;
    line-height: 1.55;
}

.table-attendance-daily-review th {
    white-space: nowrap;
}

.table-attendance-daily-review th:nth-child(1),
.table-attendance-daily-review td:nth-child(1) {
    width: 116px;
}

.table-attendance-daily-review th:nth-child(2),
.table-attendance-daily-review td:nth-child(2) {
    width: 164px;
}

.table-attendance-daily-review th:nth-child(3),
.table-attendance-daily-review td:nth-child(3) {
    width: 86px;
}

.table-attendance-daily-review th:nth-child(4),
.table-attendance-daily-review td:nth-child(4) {
    width: 96px;
}

.table-attendance-daily-review th:nth-child(5),
.table-attendance-daily-review td:nth-child(5) {
    width: 238px;
}

.table-attendance-daily-review th:nth-child(6),
.table-attendance-daily-review td:nth-child(6) {
    width: 104px;
}

.table-attendance-daily-review th:nth-child(7),
.table-attendance-daily-review td:nth-child(7) {
    width: 110px;
}

.table-attendance-daily-review th:nth-child(8),
.table-attendance-daily-review td:nth-child(8) {
    width: 156px;
}

.table-attendance-daily-review th:nth-child(9),
.table-attendance-daily-review td:nth-child(9) {
    width: 170px;
}

.table-attendance-daily-review th:nth-child(10),
.table-attendance-daily-review td:nth-child(10) {
    width: 188px;
}

.table-attendance-daily-review th:nth-child(11),
.table-attendance-daily-review td:nth-child(11) {
    width: 78px;
    text-align: center;
}

.daily-review-type-pill {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 58px;
    min-height: 28px;
    padding: 3px 9px;
    border: 1px solid rgba(87, 117, 153, 0.22);
    border-radius: 6px;
    background: rgba(248, 250, 252, 0.96);
    color: #334155;
    font-size: 13px;
    font-weight: 800;
    line-height: 1;
    white-space: nowrap;
}

.daily-review-type-pill--morning,
.daily-review-type-pill--final {
    border-color: rgba(59, 130, 246, 0.22);
    background: rgba(239, 246, 255, 0.92);
    color: #1d4ed8;
}

.daily-review-type-pill--lesson {
    border-color: rgba(20, 184, 166, 0.24);
    background: rgba(240, 253, 250, 0.95);
    color: #0f766e;
}

.daily-review-homeroom-name {
    display: inline-block;
    max-width: 100%;
    color: var(--ink-800);
    font-weight: 700;
    white-space: nowrap;
}

.daily-review-target {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 2px;
    min-width: 0;
}

.daily-review-target-title {
    display: block;
    color: var(--ink-850);
    font-weight: 800;
    overflow-wrap: break-word;
}

.daily-review-target-meta {
    display: block;
    color: var(--ink-500);
    font-size: 12px;
    font-weight: 700;
    line-height: 1.45;
    white-space: nowrap;
}

.daily-review-count {
    display: inline-flex;
    align-items: center;
    min-width: 68px;
    justify-content: center;
    padding: 4px 8px;
    border-radius: 6px;
    font-weight: 800;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}

.daily-review-count--complete {
    background: rgba(220, 252, 231, 0.9);
    color: #166534;
}

.daily-review-count--incomplete {
    background: rgba(254, 242, 242, 0.92);
    color: #b91c1c;
}

.daily-review-breakdown {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 2px;
    align-items: center;
}

.daily-review-breakdown-row {
    display: flex;
    align-items: baseline;
    gap: 4px;
    white-space: nowrap;
}

.daily-review-breakdown-item {
    display: inline-flex;
    align-items: baseline;
    gap: 4px;
    white-space: nowrap;
}

.daily-review-breakdown-label {
    color: var(--ink-600);
    font-weight: 700;
}

.daily-review-breakdown-value {
    color: var(--ink-900);
    font-variant-numeric: tabular-nums;
    font-weight: 800;
}

.daily-review-breakdown-separator {
    color: var(--ink-300);
    font-weight: 700;
    white-space: nowrap;
}

.daily-review-request-summary {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    align-items: center;
}

.daily-review-request-summary .attendance-request-source-badge {
    margin-top: 0;
}

.daily-review-timeline {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 4px;
}

.daily-review-timeline-item {
    display: inline-flex;
    align-items: baseline;
    gap: 6px;
    width: fit-content;
    white-space: nowrap;
}

.daily-review-timeline-label {
    color: var(--ink-500);
    font-size: 12px;
    font-weight: 800;
}

.daily-review-timeline time {
    color: var(--ink-800);
    font-variant-numeric: tabular-nums;
    font-weight: 700;
}

.daily-review-summary-list {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    align-items: center;
    margin-top: 10px;
}

.daily-review-summary-item {
    display: inline-flex;
    align-items: center;
    min-height: 26px;
    padding: 3px 9px;
    border: 1px solid rgba(148, 163, 184, 0.24);
    border-radius: 6px;
    background: rgba(248, 250, 252, 0.72);
    color: var(--ink-600);
    font-size: 13px;
    font-weight: 700;
    line-height: 1.25;
    max-width: 100%;
    white-space: nowrap;
}

.table-attendance-daily-review .btn-xs {
    min-width: 56px;
    margin-right: 0;
    white-space: nowrap;
}

.table-attendance-daily-review th.daily-review-action-column,
.table-attendance-daily-review td.daily-review-action-column {
    position: sticky;
    right: 0;
    z-index: 2;
    background: var(--surface-0);
    border-left: 1px solid var(--line-200);
    box-shadow: -10px 0 14px -14px rgba(30, 64, 110, 0.65);
}

.table-attendance-daily-review th.daily-review-action-column {
    z-index: 3;
    background: var(--surface-2);
}

@media (max-width: 720px) {
    .table-request-manage {
        min-width: 0;
        table-layout: auto;
    }

    .table-request-manage th,
    .table-request-manage td {
        width: auto !important;
        text-align: left;
    }

    .request-manage-student-cell,
    .request-manage-class-cell,
    .request-manage-request-cell,
    .request-manage-requester-cell {
        align-items: flex-start;
        flex-direction: column;
        gap: 3px;
    }

    .table-request-manage td:nth-child(1)::before {
        content: "生徒";
    }

    .table-request-manage td:nth-child(2)::before {
        content: "HR/番号";
    }

    .table-request-manage td:nth-child(3)::before {
        content: "申請";
    }

    .table-request-manage td:nth-child(4)::before {
        content: "連絡者";
    }

    .table-request-manage td:nth-child(5)::before {
        content: "送信日時";
    }

    .table-request-manage td:nth-child(6)::before {
        content: "承認日時";
    }

    .table-request-manage td:nth-child(7)::before {
        content: "状態";
    }

    .table-request-manage td:nth-child(8)::before {
        content: "理由";
    }

    .table-request-manage td:nth-child(9)::before {
        content: "操作";
    }

    .table-attendance-daily-review {
        min-width: 0;
        table-layout: auto;
    }

    .table-attendance-daily-review th,
    .table-attendance-daily-review td {
        width: auto !important;
        text-align: left;
    }

    .table-attendance-daily-review th.daily-review-action-column,
    .table-attendance-daily-review td.daily-review-action-column {
        position: static;
        border-left: 0;
        box-shadow: none;
    }

    .daily-review-homeroom-name,
    .daily-review-target-meta {
        white-space: normal;
    }

    .daily-review-timeline-item {
        display: grid;
        grid-template-columns: 40px minmax(0, 1fr);
        width: 100%;
    }

    .table-attendance-daily-review td:nth-child(1)::before {
        content: "対象日";
    }

    .table-attendance-daily-review td:nth-child(2)::before {
        content: "帳票授業日";
    }

    .table-attendance-daily-review td:nth-child(3)::before {
        content: "区分";
    }

    .table-attendance-daily-review td:nth-child(4)::before {
        content: "HR";
    }

    .table-attendance-daily-review td:nth-child(5)::before {
        content: "対象";
    }

    .table-attendance-daily-review td:nth-child(6)::before {
        content: "状態";
    }

    .table-attendance-daily-review td:nth-child(7)::before {
        content: "入力";
    }

    .table-attendance-daily-review td:nth-child(8)::before {
        content: "内訳";
    }

    .table-attendance-daily-review td:nth-child(9)::before {
        content: "欠席連絡";
    }

    .table-attendance-daily-review td:nth-child(10)::before {
        content: "提出・承認";
    }

    .table-attendance-daily-review td:nth-child(11)::before {
        content: "操作";
    }

    .daily-review-mode-row {
        align-items: flex-start;
    }

    .daily-review-mode-label,
    .daily-review-mode-selector {
        width: 100%;
    }

    .daily-review-mode-selector label {
        flex: 1 1 0;
        width: auto;
        min-width: 0;
        justify-content: center;
    }

    .daily-review-date-control {
        grid-template-columns: minmax(0, 1fr) 44px;
    }

    .daily-review-weekday {
        min-width: 44px;
    }
}

@media (prefers-reduced-motion: reduce) {
    .cnx-loading-overlay,
    a.is-loading,
    button.is-loading,
    input.is-loading {
        transition: none;
    }

    .cnx-loading-spinner {
        animation-duration: 1.4s;
    }
}

.student-report-condition-card {
    margin-top: 18px;
}

.student-report-condition-card__head {
    display: flex;
    flex-wrap: wrap;
    gap: 10px 18px;
    align-items: flex-end;
    justify-content: space-between;
    margin-bottom: 14px;
}

.student-report-condition-card__head h2 {
    margin: 0 0 4px;
    font-size: 1.15rem;
}

.student-report-condition-card__head p {
    margin: 0;
    color: #64748b;
    font-size: 0.94rem;
}

.student-report-list-toolbar {
    display: grid;
    grid-template-columns: minmax(140px, 180px) minmax(220px, 320px) repeat(3, minmax(160px, 220px));
    gap: 14px;
    align-items: end;
    margin-top: 0;
    margin-bottom: 0;
    padding: 16px;
    border: 1px solid rgba(148, 163, 184, 0.28);
    border-radius: 8px;
    background: rgba(248, 250, 252, 0.82);
}

.student-report-list-toolbar__type {
    max-width: 360px;
}

.student-report-list-toolbar__year,
.student-report-list-toolbar__period,
.student-report-list-toolbar__language,
.student-report-list-toolbar__package {
    max-width: 220px;
}

.student-search-card .student-search-actions {
    margin-top: 4px;
}

.student-report-list-toolbar [hidden] {
    display: none !important;
}

.student-report-list-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 14px;
    padding: 14px;
    border: 1px solid rgba(148, 163, 184, 0.28);
    border-radius: 8px;
    background: rgba(248, 250, 252, 0.9);
}

.student-report-list-actions__left,
.student-report-list-actions__right {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    align-items: center;
}

.student-report-list-history-option {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    min-height: 36px;
    color: #475569;
    font-size: 0.92rem;
    font-weight: 700;
}

.student-report-list-selection {
    min-width: 96px;
    color: #475569;
    font-weight: 700;
}

.student-report-list-selection-help {
    color: #64748b;
    font-size: 13px;
    font-weight: 700;
}

.student-report-list-selection-help.is-ready {
    color: #0f766e;
}

.student-report-list-actions .btn.is-unavailable {
    border-color: rgba(148, 163, 184, 0.42);
    background: #e8eef8;
    color: #64748b;
    box-shadow: none;
    cursor: pointer;
    opacity: 0.86;
}

.student-report-list-actions .btn.is-unavailable:hover,
.student-report-list-actions .btn.is-unavailable:focus-visible {
    transform: none;
    box-shadow: none;
}

.student-report-table th:first-child,
.student-report-table td:first-child,
.student-report-table th:nth-child(2),
.student-report-table td:nth-child(2) {
    width: 72px;
    text-align: center;
}

.student-report-table th,
.student-report-table td {
    vertical-align: middle;
}

.student-report-table th:nth-child(9),
.student-report-table td:nth-child(9) {
    min-width: 300px;
}

.student-report-row-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    align-items: center;
}

.student-report-row-actions .link-action,
.report-action-link {
    appearance: none;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 28px;
    padding: 3px 9px;
    border: 1px solid rgba(42, 91, 215, 0.22);
    border-radius: 8px;
    background: #ffffff;
    box-shadow: 0 1px 2px rgba(15, 23, 42, 0.08);
    cursor: pointer;
    font: inherit;
    font-size: 13px;
    font-weight: 800;
    line-height: 1.3;
    text-decoration: none;
    white-space: nowrap;
    transition: background-color 160ms var(--ease-out-quart), border-color 160ms var(--ease-out-quart), box-shadow 160ms var(--ease-out-quart), color 160ms var(--ease-out-quart), opacity 160ms var(--ease-out-quart), transform 160ms var(--ease-out-quart);
}

.student-report-row-actions .link-action:hover,
.student-report-row-actions .link-action:focus-visible,
.report-action-link:hover,
.report-action-link:focus-visible {
    box-shadow: 0 4px 10px rgba(15, 23, 42, 0.12);
    text-decoration: none;
    transform: translateY(-1px);
}

.student-report-row-actions .link-action {
    border-color: rgba(42, 91, 215, 0.28);
    background: rgba(239, 246, 255, 0.95);
    color: var(--brand-700);
}

.student-report-row-actions .link-action:hover,
.student-report-row-actions .link-action:focus-visible {
    border-color: rgba(42, 91, 215, 0.5);
    background: #dbeafe;
    color: var(--brand-700);
}

.report-action-link--preview {
    border-color: rgba(20, 184, 166, 0.36);
    background: rgba(240, 253, 250, 0.9);
    color: #0f766e;
}

.report-action-link--preview:hover,
.report-action-link--preview:focus-visible {
    border-color: rgba(15, 118, 110, 0.55);
    background: #ccfbf1;
}

.report-action-link--export {
    border-color: rgba(37, 99, 235, 0.32);
    background: rgba(239, 246, 255, 0.95);
    color: #1d4ed8;
}

.report-action-link--export:hover,
.report-action-link--export:focus-visible {
    border-color: rgba(29, 78, 216, 0.55);
    background: #dbeafe;
}

.report-action-link--history {
    border-color: rgba(100, 116, 139, 0.28);
    background: #f8fafc;
    color: #475569;
}

.report-action-link--history:hover,
.report-action-link--history:focus-visible {
    border-color: rgba(71, 85, 105, 0.42);
    background: #e2e8f0;
}

.report-action-link.is-loading {
    opacity: 0.72;
    pointer-events: none;
    transform: none;
}

.link-button {
    appearance: none;
    border: 0;
    background: transparent;
    color: var(--primary, #2563eb);
    cursor: pointer;
    font: inherit;
    font-weight: 700;
    padding: 0;
}

.link-button:hover,
.link-button:focus-visible {
    text-decoration: underline;
}

.student-report-list-status {
    min-height: 22px;
    margin-top: 12px;
    color: #475569;
    font-weight: 700;
}

.student-report-list-status:not(:empty) {
    display: block;
    margin-bottom: 10px;
    padding: 10px 12px;
    border: 1px solid rgba(148, 163, 184, 0.28);
    border-radius: 8px;
    background: rgba(248, 250, 252, 0.92);
}

.student-report-list-status.is-error {
    color: #b91c1c;
    border-color: rgba(248, 113, 113, 0.38);
    background: rgba(254, 242, 242, 0.92);
}

.student-report-list-job {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
    align-items: center;
    margin-top: 10px;
    padding: 12px 14px;
    border: 1px solid rgba(37, 99, 235, 0.22);
    border-radius: 8px;
    background: rgba(239, 246, 255, 0.78);
}

.student-report-list-job.is-running::before {
    content: "";
    width: 18px;
    height: 18px;
    border: 3px solid rgba(42, 91, 215, 0.18);
    border-top-color: #0f766e;
    border-radius: 50%;
    animation: cnx-loading-spin 0.85s linear infinite;
}

.student-report-list-job.is-done {
    border-color: rgba(16, 185, 129, 0.32);
    background: rgba(236, 253, 245, 0.9);
}

.student-report-list-job.is-failed {
    border-color: rgba(248, 113, 113, 0.38);
    background: rgba(254, 242, 242, 0.92);
}

.student-report-list-job__main {
    display: grid;
    gap: 6px;
    min-width: min(520px, 100%);
    flex: 1 1 420px;
}

.student-report-list-job__title {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    align-items: center;
}

.student-report-list-job__main strong {
    color: var(--ink-900);
}

.student-report-list-job__badge {
    display: inline-flex;
    align-items: center;
    min-height: 24px;
    padding: 2px 10px;
    border-radius: 999px;
    background: rgba(42, 91, 215, 0.12);
    color: var(--brand-700);
    font-size: 12px;
    font-weight: 800;
}

.student-report-list-job__main span {
    color: #334155;
    font-weight: 800;
}

.student-report-list-job__main small {
    color: #64748b;
    font-weight: 700;
}

.student-report-list-job__error-list {
    margin: 0;
    padding-left: 18px;
    color: #b91c1c;
    font-size: 13px;
    font-weight: 700;
}

.student-report-list-job__error-list li + li {
    margin-top: 3px;
}

.student-report-list-job.has-warning,
.student-report-bulk-history-item.has-warning {
    border-color: rgba(245, 158, 11, 0.36);
    background: rgba(255, 251, 235, 0.9);
}

.student-report-list-job.has-warning .student-report-list-job__error-list,
.student-report-bulk-history-item.has-warning .student-report-list-job__error-list {
    color: #92400e;
}

.student-report-list-job .text-warning,
.student-report-bulk-history-item .text-warning {
    color: #92400e;
    font-weight: 800;
}

.student-report-list-job__progress {
    position: relative;
    overflow: hidden;
    width: min(460px, 100%);
    height: 8px;
    border-radius: 999px;
    background: rgba(148, 163, 184, 0.22);
}

.student-report-list-job__progress > span {
    display: block;
    height: 100%;
    border-radius: inherit;
    background: linear-gradient(90deg, #2563eb, #0f766e);
    transition: width 220ms var(--ease-out-quart);
}

.student-report-list-job__progress--indeterminate > span {
    width: 42% !important;
    animation: cnx-report-progress-slide 1.1s ease-in-out infinite;
}

.student-report-list-job.is-grade-batch {
    display: block;
}

.student-report-list-job.is-grade-batch.is-running::before {
    display: none;
}

.student-report-grade-batch__summary {
    display: grid;
    gap: 6px;
    margin-bottom: 12px;
}

.student-report-grade-batch__summary > small {
    color: #64748b;
    font-weight: 700;
}

.student-report-grade-batch__list {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(320px, 100%), 1fr));
    gap: 10px;
}

.student-report-grade-batch__item {
    display: grid;
    gap: 8px;
    min-width: 0;
    padding: 12px;
    border: 1px solid rgba(42, 91, 215, 0.22);
    border-radius: 8px;
    background: rgba(255, 255, 255, 0.94);
}

.student-report-grade-batch__item.is-done {
    border-color: rgba(16, 185, 129, 0.32);
    background: rgba(236, 253, 245, 0.74);
}

.student-report-grade-batch__item.is-failed {
    border-color: rgba(248, 113, 113, 0.38);
    background: rgba(254, 242, 242, 0.82);
}

.student-report-grade-batch__item-head {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    align-items: center;
    justify-content: space-between;
}

.student-report-grade-batch__item-head strong {
    color: var(--ink-900);
}

.student-report-grade-batch__item > span {
    color: #334155;
    font-weight: 800;
}

.student-report-grade-batch__item > small {
    color: #64748b;
    font-weight: 700;
}

.student-report-grade-batch__item .student-report-list-job__progress {
    width: 100%;
}

.student-report-grade-batch__item-actions {
    display: flex;
    justify-content: flex-end;
    min-height: 38px;
}

@media (max-width: 720px) {
    .student-report-grade-batch__item-actions .btn {
        width: 100%;
    }
}

@keyframes cnx-report-progress-slide {
    0% {
        transform: translateX(-110%);
    }
    100% {
        transform: translateX(260%);
    }
}

.student-report-bulk-history {
    margin: 12px 0 16px;
    padding: 14px;
    border: 1px solid rgba(148, 163, 184, 0.28);
    border-radius: 8px;
    background: rgba(255, 255, 255, 0.98);
}

.student-report-bulk-history__head {
    display: flex;
    gap: 12px;
    align-items: flex-start;
    justify-content: space-between;
    margin-bottom: 12px;
}

.student-report-bulk-history__head h3 {
    margin: 0;
    color: var(--ink-900);
    font-size: 16px;
    font-weight: 800;
}

.student-report-bulk-history__head p {
    margin: 4px 0 0;
    color: var(--ink-500);
    font-size: 13px;
    font-weight: 700;
}

.student-report-bulk-history-list {
    display: grid;
    gap: 10px;
}

.student-report-bulk-history-item {
    display: flex;
    flex-wrap: wrap;
    gap: 10px 14px;
    align-items: center;
    justify-content: space-between;
    padding: 10px 12px;
    border: 1px solid rgba(148, 163, 184, 0.24);
    border-radius: 8px;
    background: rgba(248, 250, 252, 0.86);
}

.student-report-bulk-history-item.is-running {
    border-color: rgba(42, 91, 215, 0.24);
    background: rgba(239, 246, 255, 0.8);
}

.student-report-bulk-history-item.is-done {
    border-color: rgba(16, 185, 129, 0.28);
    background: rgba(236, 253, 245, 0.84);
}

.student-report-bulk-history-item.is-failed {
    border-color: rgba(248, 113, 113, 0.38);
    background: rgba(254, 242, 242, 0.92);
}

.student-report-bulk-history-item__main {
    display: grid;
    gap: 2px;
    min-width: 220px;
}

.student-report-bulk-history-item__main strong {
    color: var(--ink-900);
    font-weight: 800;
}

.student-report-bulk-history-item__main span {
    color: #334155;
    font-weight: 800;
}

.student-report-bulk-history-item__main small {
    color: #64748b;
    font-weight: 700;
}

.student-report-history-panel {
    margin-top: 16px;
    padding: 16px;
    border: 1px solid rgba(148, 163, 184, 0.28);
    border-radius: 8px;
    background: rgba(255, 255, 255, 0.98);
}

.student-report-history-panel__head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 14px;
}

.student-report-history-panel__head h3 {
    margin: 0;
    color: var(--ink-900);
    font-size: 18px;
    font-weight: 800;
}

.student-report-history-panel__head p {
    margin: 4px 0 0;
    color: var(--ink-500);
    font-size: 13px;
    font-weight: 700;
}

.student-report-history-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 14px;
}

.student-report-history-section {
    min-width: 0;
}

.student-report-history-section h4 {
    margin: 0 0 8px;
    color: var(--ink-700);
    font-size: 14px;
    font-weight: 800;
}

.student-report-card-check {
    display: inline-flex;
    gap: 8px;
    align-items: center;
    font-weight: 700;
}

@media (max-width: 1100px) {
    .student-report-list-toolbar {
        grid-template-columns: repeat(2, minmax(180px, 1fr));
    }

    .student-report-list-toolbar__type,
    .student-report-list-toolbar__year,
    .student-report-list-toolbar__period,
    .student-report-list-toolbar__language,
    .student-report-list-toolbar__package {
        max-width: none;
    }

    .student-report-history-grid {
        grid-template-columns: 1fr;
    }

    .student-report-table th:nth-child(9),
    .student-report-table td:nth-child(9) {
        min-width: 260px;
    }
}

@media (max-width: 768px) {
    .student-report-list-toolbar {
        grid-template-columns: 1fr;
    }

    .student-report-list-actions,
    .student-report-list-actions__left,
    .student-report-list-actions__right {
        align-items: stretch;
    }

    .student-report-list-actions__left,
    .student-report-list-actions__right,
    .student-report-list-actions .btn {
        width: 100%;
    }

    .student-report-history-panel__head {
        flex-direction: column;
        align-items: stretch;
    }

    .student-report-bulk-history__head {
        flex-direction: column;
        align-items: stretch;
    }

    .student-report-history-panel__head .btn {
        width: 100%;
    }

    .student-report-bulk-history__head .btn,
    .student-report-bulk-history-item .btn {
        width: 100%;
    }

    .student-report-row-actions {
        flex-wrap: wrap;
    }

    .student-report-row-actions .btn,
    .student-report-row-actions .link-action,
    .student-report-row-actions .report-action-link {
        flex: 1 1 140px;
    }
}

.course-excel-import-panel {
    margin: 16px 0 18px;
    padding: 14px 16px;
    border: 1px solid rgba(148, 163, 184, 0.28);
    border-radius: 8px;
    background: rgba(248, 251, 255, 0.94);
}

.course-excel-import-guide {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    padding: 12px 14px;
    border: 1px solid rgba(37, 99, 235, 0.18);
    border-radius: 8px;
    background: #fff;
}

.course-excel-import-guide h3 {
    margin: 0;
    color: var(--ink-900);
    font-size: 17px;
    font-weight: 800;
}

.course-excel-import-guide p {
    margin: 4px 0 0;
    font-size: 13px;
}

.course-excel-import-download {
    flex: 0 0 auto;
}

.course-excel-import-steps {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 8px;
    margin: 12px 0 18px;
    padding: 0;
    list-style: none;
}

.course-excel-import-steps li {
    display: flex;
    align-items: center;
    gap: 8px;
    min-height: 42px;
    padding: 8px 10px;
    border: 1px solid rgba(148, 163, 184, 0.24);
    border-radius: 8px;
    background: rgba(255, 255, 255, 0.72);
    color: var(--ink-700);
    font-size: 13px;
    font-weight: 700;
}

.course-excel-import-steps li span:last-child {
    min-width: 0;
    line-height: 1.35;
}

.course-excel-import-step-no {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 24px;
    width: 24px;
    height: 24px;
    border-radius: 50%;
    background: #eaf2ff;
    color: #2563eb;
    font-size: 13px;
    font-weight: 800;
}

.course-excel-import-head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
}

.course-excel-import-head h3 {
    margin: 0;
    color: var(--ink-900);
    font-size: 17px;
    font-weight: 800;
}

.course-excel-import-head p {
    margin: 4px 0 0;
    font-size: 13px;
}

.course-excel-import-actions {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 10px;
    flex-wrap: wrap;
}

.course-excel-import-actions input[type="file"] {
    width: min(420px, 52vw);
}

.course-excel-import-result {
    margin-top: 12px;
    font-weight: 700;
}

.course-excel-import-table-wrap {
    margin-top: 10px;
    max-height: 320px;
    overflow: auto;
}

.course-excel-import-table th,
.course-excel-import-table td {
    white-space: nowrap;
}

.course-excel-import-table tr.is-error td {
    background: #fff5f5;
}

@media (max-width: 1100px) {
    .grade-settings-flow,
    .grade-settings-setup-status {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 768px) {
    .grade-settings-overview-head,
    .grade-rule-source-strip,
    .grade-rule-calculator-head {
        flex-direction: column;
        align-items: stretch;
    }

    .grade-settings-overview-actions,
    .grade-settings-overview-actions .btn {
        width: 100%;
    }

    .grade-settings-overview-actions {
        flex-direction: column;
    }

    .grade-settings-flow,
    .grade-settings-setup-status,
    .grade-input-method-grid,
    .grade-rule-calculator-grid {
        grid-template-columns: 1fr;
    }

    .manual-criteria-settings-head {
        flex-direction: column;
        align-items: stretch;
    }

    .criterion-threshold-editor {
        grid-template-columns: 1fr;
    }

    .criterion-threshold-editor > p {
        grid-column: 1;
    }

    .grade-settings-advanced-summary,
    .grade-settings-advanced-intro {
        padding-right: 14px;
        padding-left: 14px;
    }

    .grade-label-preset-toolbar {
        width: 100%;
    }

    .grade-label-preset-button {
        flex: 1 1 0;
    }

    .grade-entry-mode-guide span {
        width: 100%;
    }

    .assessment-label-rule-head {
        align-items: stretch;
    }

    .assessment-label-mode-toolbar {
        width: 100%;
    }

    .assessment-label-mode-button {
        flex: 1 1 0;
    }

    .assessment-label-easy-row,
    .assessment-label-easy-row--fallback {
        grid-template-columns: 1fr;
        gap: 6px;
    }

    .assessment-label-condition {
        min-height: 0;
    }

    .assessment-label-preview {
        flex-direction: column;
        gap: 4px;
    }

    .course-excel-import-guide,
    .course-excel-import-head {
        flex-direction: column;
        align-items: stretch;
    }

    .course-excel-import-steps {
        grid-template-columns: 1fr;
    }

    .course-excel-import-actions,
    .course-excel-import-actions input[type="file"],
    .course-excel-import-actions .btn,
    .course-excel-import-download {
        width: 100%;
    }
}

/* Responsive action safeguards shared by data-heavy management screens. */
.form-field > .form-control,
.filter-field > .form-control {
    width: 100%;
    min-width: 0;
}

@media (min-width: 721px) {
    .table-shell > .table:has(> tbody > tr > td:last-child :is(.btn, .icon-action, .link-action, .report-action-link, button, input[type="submit"])) {
        overflow: visible;
    }

    .table-shell > .table:has(> tbody > tr > td:last-child :is(.btn, .icon-action, .link-action, .report-action-link, button, input[type="submit"])) > thead > tr > th:last-child:not([colspan]),
    .table-shell > .table:has(> tbody > tr > td:last-child :is(.btn, .icon-action, .link-action, .report-action-link, button, input[type="submit"])) > tbody > tr > th:last-child:not([colspan]),
    .table-shell > .table:has(> tbody > tr > td:last-child :is(.btn, .icon-action, .link-action, .report-action-link, button, input[type="submit"])) > tbody > tr > td:last-child:not([colspan]) {
        position: sticky;
        right: 0;
        background: var(--surface-0);
        background-clip: padding-box;
        box-shadow: -10px 0 14px -12px rgba(15, 23, 42, 0.42);
    }

    .table-shell > .table:has(> tbody > tr > td:last-child :is(.btn, .icon-action, .link-action, .report-action-link, button, input[type="submit"])) > thead > tr > th:last-child:not([colspan]),
    .table-shell > .table:has(> tbody > tr > td:last-child :is(.btn, .icon-action, .link-action, .report-action-link, button, input[type="submit"])) > tbody > tr > th:last-child:not([colspan]) {
        z-index: 3;
        background: var(--surface-2);
    }

    .table-shell > .table:has(> tbody > tr > td:last-child :is(.btn, .icon-action, .link-action, .report-action-link, button, input[type="submit"])) > tbody > tr > td:last-child:not([colspan]) {
        z-index: 2;
    }

    .table-shell > .table-hover:has(> tbody > tr > td:last-child :is(.btn, .icon-action, .link-action, .report-action-link, button, input[type="submit"])) > tbody > tr:hover > td:last-child:not([colspan]) {
        background: var(--surface-1);
    }

}

@media (max-width: 720px) {
    .card-head {
        flex-direction: column;
        align-items: stretch;
    }

    .card-head > [class*="badge"],
    .card-head > [class*="chip"] {
        align-self: flex-start;
        width: auto;
    }
}

@media (max-width: 520px) {
    .btn {
        padding-right: 10px;
        padding-left: 10px;
        font-size: clamp(11px, 3.2vw, 14px);
        letter-spacing: 0;
    }

    .app-header {
        gap: 8px;
    }

    .app-brand {
        flex: 1 1 auto;
        gap: 8px;
        overflow: hidden;
    }

    .app-brand-link,
    .app-nav-toggle {
        flex: 0 0 auto;
    }

    .app-brand-text {
        display: none;
    }

    .app-page-title {
        flex: 1 1 auto;
        max-width: none;
        margin-left: 0;
        padding-left: 10px;
    }

    .app-actions {
        gap: 8px;
    }
}

/* Attendance request entry */
.request-entry-page {
    width: min(1180px, 100%);
    margin: 0 auto;
    color: var(--text, #1f2d47);
}

.request-entry-heading {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 24px;
    margin-bottom: 18px;
}

.request-entry-heading h1,
.request-entry-section-heading h2 {
    margin: 0;
    letter-spacing: 0;
}

.request-entry-heading h1 {
    font-size: clamp(28px, 3vw, 40px);
}

.request-entry-heading p,
.request-entry-section-heading p,
.request-entry-submit-bar p {
    margin: 6px 0 0;
    color: var(--text-muted, #667793);
}

.request-entry-eyebrow {
    margin: 0 0 5px !important;
    color: #0f8f83 !important;
    font-size: 13px;
    font-weight: 700;
}

.request-entry-tabs {
    display: inline-grid;
    grid-template-columns: repeat(2, minmax(132px, 1fr));
    gap: 4px;
    margin-bottom: 18px;
    padding: 4px;
    border: 1px solid #d8e2f0;
    border-radius: 8px;
    background: #f3f7fc;
}

.request-entry-tab {
    min-height: 42px;
    padding: 8px 18px;
    border: 0;
    border-radius: 6px;
    background: transparent;
    color: #425574;
    font: inherit;
    font-weight: 700;
    cursor: pointer;
}

.request-entry-tab:hover {
    background: #e7effb;
}

.request-entry-tab.is-active {
    background: #2f66db;
    color: #fff;
    box-shadow: 0 4px 12px rgba(47, 102, 219, 0.2);
}

.request-entry-panel {
    padding: clamp(20px, 3vw, 32px);
}

.request-entry-section-heading {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 24px;
    margin-bottom: 24px;
}

.request-entry-section-heading h2 {
    font-size: clamp(22px, 2vw, 28px);
}

.request-entry-form-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 24px 28px;
}

.request-entry-field {
    min-width: 0;
}

.request-entry-field--wide {
    grid-column: 1 / -1;
}

.request-entry-field > label,
.request-entry-label,
.request-entry-detail-heading label,
.request-entry-history-status label {
    display: block;
    margin-bottom: 8px;
    color: #293b58;
    font-weight: 700;
}

.request-entry-native-select {
    position: absolute !important;
    width: 1px !important;
    height: 1px !important;
    margin: -1px !important;
    padding: 0 !important;
    overflow: hidden !important;
    clip: rect(0 0 0 0) !important;
    white-space: nowrap !important;
    border: 0 !important;
}

.request-entry-type-options {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 10px;
}

.request-entry-type-option {
    min-height: 52px;
    padding: 10px 14px;
    border: 1px solid #cdd9ea;
    border-radius: 7px;
    background: #fff;
    color: #344967;
    font: inherit;
    font-weight: 700;
    cursor: pointer;
}

.request-entry-type-option:hover {
    border-color: #7ea5ef;
    background: #f5f8ff;
}

.request-entry-type-option.is-selected {
    border-color: #2f66db;
    background: #eaf1ff;
    color: #2154be;
    box-shadow: inset 0 0 0 1px #2f66db;
}

.request-entry-date-heading,
.request-entry-detail-heading {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 18px;
}

.request-entry-date-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 16px;
}

.request-entry-date-grid:not(.is-multi-day) {
    grid-template-columns: minmax(0, 420px);
}

.request-entry-date-grid:not(.is-multi-day) .request-entry-end-date {
    display: none;
}

.request-entry-multi-day-toggle {
    display: inline-flex !important;
    align-items: center;
    gap: 8px;
    margin: 0 0 8px !important;
    color: #425574 !important;
    font-weight: 600 !important;
    cursor: pointer;
}

.request-entry-multi-day-toggle input {
    width: 18px;
    height: 18px;
    margin: 0;
    accent-color: #2f66db;
}

.request-entry-detail-heading span {
    color: #70809a;
    font-size: 13px;
}

.request-entry-detail {
    min-height: 112px;
    resize: vertical;
}

.request-entry-student-summary {
    display: flex;
    align-items: center;
    gap: 14px;
    min-height: 64px;
    padding: 12px 16px;
    border: 1px solid #d7e2f0;
    border-radius: 7px;
    background: #f7faff;
}

.request-entry-student-summary__icon {
    width: 38px;
    height: 38px;
    flex: 0 0 38px;
    border-radius: 50%;
    background: radial-gradient(circle at 50% 35%, #8ea4c3 0 20%, transparent 21%),
        radial-gradient(circle at 50% 86%, #8ea4c3 0 34%, transparent 35%), #dfe8f4;
}

.request-entry-student-summary strong,
.request-entry-student-summary small {
    display: block;
}

.request-entry-student-summary small {
    margin-top: 3px;
    color: #6a7b95;
}

.request-entry-empty-note,
.request-entry-history-empty {
    padding: 20px;
    border: 1px dashed #c9d7e8;
    border-radius: 7px;
    background: #f8fafc;
    color: #5f708a;
}

.request-entry-submit-bar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 24px;
    margin-top: 28px;
    padding-top: 20px;
    border-top: 1px solid #e1e8f2;
}

.request-entry-submit-bar p {
    margin: 0;
}

.request-entry-submit {
    min-width: 220px;
}

.request-entry-alert {
    margin: 0 0 18px;
    padding: 13px 16px;
    border: 1px solid;
    border-radius: 7px;
    font-weight: 700;
}

.request-entry-alert--success {
    border-color: #9edfd6;
    background: #ecfbf8;
    color: #0c756c;
}

.request-entry-alert--error {
    border-color: #f2b9b9;
    background: #fff2f2;
    color: #b32323;
}

.request-entry-section-heading--history {
    align-items: flex-end;
}

.request-entry-history-status {
    width: min(220px, 100%);
}

.request-entry-history-filter {
    margin-bottom: 22px;
    border: 1px solid #dce5f1;
    border-radius: 7px;
    background: #f8fafc;
}

.request-entry-history-filter summary {
    padding: 13px 16px;
    color: #354966;
    font-weight: 700;
    cursor: pointer;
}

.request-entry-history-filter__content {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr)) auto;
    align-items: end;
    gap: 14px;
    padding: 2px 16px 16px;
}

.request-entry-history-filter__content .btn {
    min-height: 48px;
}

.request-entry-history-empty {
    display: grid;
    gap: 4px;
    margin-bottom: 18px;
}

.request-entry-history-empty strong {
    color: #334761;
}

.request-entry-status {
    display: inline-flex;
    align-items: center;
    min-height: 28px;
    padding: 3px 10px;
    border: 1px solid #d8e1ed;
    border-radius: 999px;
    background: #f5f7fa;
    color: #52627a;
    font-size: 13px;
    font-weight: 700;
}

.request-applicant-status-cell {
    display: grid;
    gap: 8px;
    min-width: 190px;
}

.request-applicant-comment {
    display: grid;
    gap: 3px;
    padding: 8px 10px;
    border-left: 3px solid #5279c8;
    border-radius: 0 6px 6px 0;
    background: #f2f6fd;
    color: #344866;
    line-height: 1.55;
}

.request-applicant-comment__label {
    color: #315da9;
    font-size: 12px;
    font-weight: 800;
    letter-spacing: 0.02em;
}

.request-applicant-comment__body {
    overflow-wrap: anywhere;
    font-size: 13px;
}

.request-entry-status--pending {
    border-color: #f2cf85;
    background: #fff8e9;
    color: #92620b;
}

.request-entry-status--approved {
    border-color: #9ddfd6;
    background: #ecfbf8;
    color: #0c756c;
}

.request-entry-status--rejected {
    border-color: #efb1b1;
    background: #fff1f1;
    color: #ad2626;
}

.request-entry-status--cancelled {
    border-color: #cfd8e5;
    background: #f3f5f8;
    color: #64738a;
}

.request-entry-cancel {
    white-space: nowrap;
}

@media (max-width: 760px) {
    .request-entry-page {
        width: 100%;
    }

    .request-entry-heading {
        margin-bottom: 14px;
    }

    .request-entry-heading h1 {
        font-size: 28px;
    }

    .request-entry-tabs {
        display: grid;
        width: 100%;
    }

    .request-entry-panel {
        padding: 20px 16px;
    }

    .request-entry-section-heading,
    .request-entry-section-heading--history,
    .request-entry-date-heading,
    .request-entry-detail-heading {
        align-items: stretch;
        flex-direction: column;
        gap: 10px;
    }

    .request-entry-form-grid,
    .request-entry-date-grid,
    .request-entry-date-grid:not(.is-multi-day),
    .request-entry-history-filter__content {
        grid-template-columns: minmax(0, 1fr);
    }

    .request-entry-type-options {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .request-entry-type-option {
        min-height: 50px;
    }

    .request-entry-multi-day-toggle {
        min-height: 40px;
    }

    .request-entry-history-status {
        width: 100%;
    }

    .request-entry-submit-bar {
        position: sticky;
        z-index: 8;
        bottom: 0;
        display: block;
        margin: 24px -16px -20px;
        padding: 12px 16px calc(12px + env(safe-area-inset-bottom));
        border-top: 1px solid #d8e2ef;
        background: rgba(255, 255, 255, 0.96);
        box-shadow: 0 -8px 24px rgba(27, 48, 80, 0.1);
        backdrop-filter: blur(8px);
    }

    .request-entry-submit-bar p {
        display: none;
    }

    .request-entry-submit {
        width: 100%;
        min-height: 50px;
    }

    .request-entry-history-filter__content .btn {
        width: 100%;
    }

    .request-entry-history-table {
        overflow: visible;
    }
}

@media (max-width: 420px) {
    .request-entry-tabs {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .request-entry-tab {
        min-width: 0;
        padding-inline: 10px;
    }
}

/* Default grade entry: scores and annual decisions in one continuous flow. */
.grade-entry-manual-only {
    display: none;
}

.grade-entry-manual-flow-guide {
    margin-top: 0;
}

.grade-calculation-mode-manual-criteria .grade-entry-manual-only.grade-entry-auto-output {
    display: flex;
}

.grade-calculation-mode-manual-criteria .grade-entry-manual-only.grade-entry-auto-output-note {
    display: block;
}

.grade-entry-auto-output {
    align-items: center;
    justify-content: center;
    gap: 4px;
    width: 100%;
    min-width: 0;
    height: 48px;
    padding: 0 12px;
    border: 1px solid #cbd8e8;
    border-radius: 8px;
    background: #eef4fb;
    color: var(--ink-900);
    font-variant-numeric: tabular-nums;
}

.grade-entry-auto-output strong {
    font-size: 20px;
    font-weight: 900;
    line-height: 1;
    letter-spacing: 0;
}

.grade-entry-auto-output-unit {
    color: var(--muted-500);
    font-size: 12px;
    font-weight: 800;
}

.grade-entry-auto-output.is-incomplete {
    border-style: dashed;
    background: #f7f9fc;
    color: var(--muted-500);
}

.grade-entry-auto-output.is-unsaved {
    border-color: #e5b85c;
    background: #fff9ec;
}

.grade-entry-auto-output-note {
    min-height: 22px;
    margin-top: 5px;
    color: #0f766e;
    font-size: 11px;
    font-weight: 800;
    line-height: 1.45;
}

.grade-calculation-mode-manual-criteria .grade-entry-year-point-decision > .grade-entry-decision-meta,
.grade-calculation-mode-manual-criteria .grade-entry-year-point-decision > .form-control,
.grade-calculation-mode-manual-criteria .grade-entry-year-point-decision > .grade-entry-year-preview,
.grade-calculation-mode-manual-criteria .grade-entry-final-rating-decision > .grade-entry-decision-meta,
.grade-calculation-mode-manual-criteria .grade-entry-final-rating-decision > .grade-entry-decision-select,
.grade-calculation-mode-manual-criteria .grade-entry-final-rating-decision > .grade-entry-decision-feedback,
.grade-calculation-mode-manual-criteria .grade-entry-col-year-rating > .grade-entry-year-preview {
    display: none !important;
}

.grade-calculation-mode-manual-criteria .grade-entry-year-point-decision,
.grade-calculation-mode-manual-criteria .grade-entry-final-rating-decision {
    display: block;
}

.grade-calculation-mode-manual-criteria .grade-entry-grid .form-control,
.grade-calculation-mode-manual-criteria .grade-entry-grid .grade-entry-auto-output {
    min-height: 48px;
    height: 48px;
}

@media (min-width: 721px) {
    .grade-calculation-mode-manual-criteria .grade-entry-table-shell {
        overflow: visible;
    }

    .grade-calculation-mode-manual-criteria .grade-entry-grid,
    .grade-calculation-mode-manual-criteria .grade-entry-grid > tbody {
        display: block;
        width: 100%;
    }

    .grade-calculation-mode-manual-criteria .grade-entry-grid {
        min-width: 0;
        border: 0;
        background: transparent;
        overflow: visible;
    }

    .grade-calculation-mode-manual-criteria .grade-entry-grid > tbody > tr:first-child {
        display: none;
    }

    .grade-calculation-mode-manual-criteria .grade-entry-grid > tbody > tr:not(:first-child) {
        display: grid;
        grid-template-columns: 76px minmax(180px, 1.1fr) repeat(4, minmax(128px, 1fr));
        margin-bottom: 12px;
        border: 1px solid var(--line-200);
        border-radius: var(--radius-sm);
        background: var(--surface-0);
        overflow: hidden;
    }

    .grade-calculation-mode-manual-criteria .grade-entry-grid > tbody > tr:not(:first-child) > td {
        width: auto;
        min-width: 0;
        padding: 12px 14px;
        border-right: 1px solid var(--line-200);
        border-bottom: 1px solid var(--line-200);
        vertical-align: top;
    }

    .grade-calculation-mode-manual-criteria .grade-entry-grid > tbody > tr:not(:first-child) > td::before {
        display: block;
        min-height: 18px;
        margin-bottom: 8px;
        color: var(--muted-500);
        font-size: 11px;
        font-weight: 800;
        line-height: 1.45;
        overflow-wrap: anywhere;
    }

    .grade-calculation-mode-manual-criteria .grade-entry-grid > tbody > tr:not(:first-child) > td[colspan] {
        grid-column: 1 / -1;
        border: 0;
    }

    .grade-calculation-mode-manual-criteria .grade-entry-grid > tbody > tr:not(:first-child) > td:nth-child(1) {
        grid-column: 1;
        grid-row: 1 / 3;
    }

    .grade-calculation-mode-manual-criteria .grade-entry-grid > tbody > tr:not(:first-child) > td:nth-child(1)::before {
        content: "出席番号";
    }

    .grade-calculation-mode-manual-criteria .grade-entry-grid > tbody > tr:not(:first-child) > td:nth-child(2) {
        grid-column: 2;
        grid-row: 1 / 3;
    }

    .grade-calculation-mode-manual-criteria .grade-entry-grid > tbody > tr:not(:first-child) > td:nth-child(2)::before {
        content: "氏名";
    }

    .grade-calculation-mode-manual-criteria .grade-entry-grid > tbody > tr:not(:first-child) > td:nth-child(3),
    .grade-calculation-mode-manual-criteria .grade-entry-grid > tbody > tr:not(:first-child) > td:nth-child(7) {
        display: none;
    }

    .grade-calculation-mode-manual-criteria .grade-entry-grid > tbody > tr:not(:first-child) > td:nth-child(4) {
        grid-column: 3 / 6;
        grid-row: 1;
    }

    .grade-calculation-mode-manual-criteria .grade-entry-grid > tbody > tr:not(:first-child) > td:nth-child(4)::before {
        content: "得点（前期・後期）";
    }

    .grade-calculation-mode-manual-criteria .grade-entry-grid > tbody > tr:not(:first-child) > td:nth-child(5) {
        grid-column: 6;
        grid-row: 1;
        border-right: 0;
    }

    .grade-calculation-mode-manual-criteria .grade-entry-grid > tbody > tr:not(:first-child) > td:nth-child(5)::before {
        content: "年間総合点（自動）";
    }

    .grade-calculation-mode-manual-criteria .grade-entry-grid > tbody > tr:not(:first-child) > td:nth-child(8) {
        grid-column: 3;
        grid-row: 2;
    }

    .grade-calculation-mode-manual-criteria .grade-entry-grid > tbody > tr:not(:first-child) > td:nth-child(8)::before {
        content: "知識・技能";
    }

    .grade-calculation-mode-manual-criteria .grade-entry-grid > tbody > tr:not(:first-child) > td:nth-child(9) {
        grid-column: 4;
        grid-row: 2;
    }

    .grade-calculation-mode-manual-criteria .grade-entry-grid > tbody > tr:not(:first-child) > td:nth-child(9)::before {
        content: "思考・判断・表現";
    }

    .grade-calculation-mode-manual-criteria .grade-entry-grid > tbody > tr:not(:first-child) > td:nth-child(10) {
        grid-column: 5;
        grid-row: 2;
    }

    .grade-calculation-mode-manual-criteria .grade-entry-grid > tbody > tr:not(:first-child) > td:nth-child(10)::before {
        content: "主体的態度";
    }

    .grade-calculation-mode-manual-criteria .grade-entry-grid > tbody > tr:not(:first-child) > td:nth-child(6) {
        grid-column: 6;
        grid-row: 2;
        border-right: 0;
    }

    .grade-calculation-mode-manual-criteria .grade-entry-grid > tbody > tr:not(:first-child) > td:nth-child(6)::before {
        content: "5段階評定（自動）";
    }

    .grade-calculation-mode-manual-criteria .grade-entry-grid > tbody > tr:not(:first-child) > td:nth-child(6),
    .grade-calculation-mode-manual-criteria .grade-entry-grid > tbody > tr:not(:first-child) > td:nth-child(8),
    .grade-calculation-mode-manual-criteria .grade-entry-grid > tbody > tr:not(:first-child) > td:nth-child(9),
    .grade-calculation-mode-manual-criteria .grade-entry-grid > tbody > tr:not(:first-child) > td:nth-child(10) {
        border-bottom: 0;
    }
}

@media (min-width: 721px) and (max-width: 1100px) {
    .grade-calculation-mode-manual-criteria .grade-entry-grid > tbody > tr:not(:first-child) {
        grid-template-columns: 72px minmax(160px, 1fr) repeat(2, minmax(0, 1fr));
    }

    .grade-calculation-mode-manual-criteria .grade-entry-grid > tbody > tr:not(:first-child) > td:nth-child(1),
    .grade-calculation-mode-manual-criteria .grade-entry-grid > tbody > tr:not(:first-child) > td:nth-child(2) {
        grid-row: 1 / 5;
    }

    .grade-calculation-mode-manual-criteria .grade-entry-grid > tbody > tr:not(:first-child) > td:nth-child(4) {
        grid-column: 3 / 5;
        grid-row: 1;
        border-right: 0;
    }

    .grade-calculation-mode-manual-criteria .grade-entry-grid > tbody > tr:not(:first-child) > td:nth-child(5) {
        grid-column: 3;
        grid-row: 2;
        border-right: 1px solid var(--line-200);
    }

    .grade-calculation-mode-manual-criteria .grade-entry-grid > tbody > tr:not(:first-child) > td:nth-child(6) {
        grid-column: 4;
        grid-row: 2;
        border-right: 0;
        border-bottom: 1px solid var(--line-200);
    }

    .grade-calculation-mode-manual-criteria .grade-entry-grid > tbody > tr:not(:first-child) > td:nth-child(8) {
        grid-column: 3;
        grid-row: 3;
    }

    .grade-calculation-mode-manual-criteria .grade-entry-grid > tbody > tr:not(:first-child) > td:nth-child(9) {
        grid-column: 4;
        grid-row: 3;
        border-right: 0;
    }

    .grade-calculation-mode-manual-criteria .grade-entry-grid > tbody > tr:not(:first-child) > td:nth-child(10) {
        grid-column: 3 / 5;
        grid-row: 4;
        border-right: 0;
    }
}

@media (max-width: 720px) {
    .grade-calculation-mode-manual-criteria .grade-entry-mobile > tbody > tr > td {
        box-sizing: border-box;
        width: 100% !important;
        min-width: 0;
        max-width: none;
        white-space: normal;
    }

    .grade-calculation-mode-manual-criteria .grade-entry-mobile td:nth-child(4)::before {
        content: "前期・後期素点";
    }

    .grade-calculation-mode-manual-criteria .grade-entry-mobile td:nth-child(5)::before {
        content: "年間総合点（自動）";
    }

    .grade-calculation-mode-manual-criteria .grade-entry-mobile td:nth-child(6)::before {
        content: "5段階評定（自動）";
    }

    .grade-calculation-mode-manual-criteria .grade-entry-score-list-inner {
        grid-template-columns: minmax(0, 1fr);
    }
}

