/* Botanical stationery: one visual system for every screen. */
/* Registration has a denser form than sign-in: give the form the larger column. */
.signup-page .auth-wrap{grid-template-columns:minmax(290px,.72fr) minmax(540px,1.28fr);align-items:start;gap:24px}
.signup-page .auth-story{position:sticky;top:18px;height:calc(100svh - 36px);min-height:540px;padding:32px clamp(26px,3vw,48px)}
.signup-page .story-main{padding:28px 0;margin:auto 0}.signup-page .story-main h2{font-size:clamp(2.4rem,3.5vw,3.8rem)}
.signup-page .story-art{width:min(100%,350px);margin-top:28px}
.signup-page .auth-card.wide{max-width:720px;padding:26px 34px 16px}
.signup-page .auth-logo{display:none}.signup-page .auth-card h1{font-size:1.85rem;margin:0 0 20px}
.signup-page .auth-divider{margin:18px 0}
.signup-page #signupForm{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:18px;row-gap:16px}
.signup-page #signupForm>.row,.signup-page #signupForm>.field:has(#roleLabel),.signup-page #signupForm>.field:has(#email),.signup-page #submitBtn,.signup-page #signupForm>.validation-summary{grid-column:1/-1}
.signup-page #signupForm>.row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}
.signup-page .auth-card .field{margin-bottom:0;min-width:0}.signup-page .role-pick{gap:12px}
.signup-page .role-pick label{display:flex;flex-direction:row;align-items:center;justify-content:center;gap:10px;min-height:58px;padding:12px 8px;font-size:.88rem}
.signup-page .role-pick label i{display:inline-block;margin:0;font-size:1.2rem}.signup-page .hint{font-size:.76rem}
.signup-page .auth-links{margin-top:20px;padding-top:17px}.signup-page .auth-card>p:last-child{padding:8px!important;margin:10px 0 0;font-size:.75rem!important}
@media(max-width:1000px) and (min-width:901px){.signup-page .auth-wrap{grid-template-columns:minmax(250px,.65fr) minmax(500px,1.35fr);gap:8px}.signup-page .auth-card.wide{padding:26px 20px}.signup-page .story-main h2{font-size:2.4rem}}
@media(max-width:900px){.signup-page .auth-wrap{display:block;max-width:760px;margin:auto;padding:12px}.signup-page .auth-story{position:relative;top:auto;height:auto;min-height:0;padding:20px 26px}.signup-page .story-main{margin:0;padding:16px 0 0}.signup-page .story-main h2{font-size:1.7rem;max-width:72%}.signup-page .story-art{position:absolute;width:150px;right:-15px;bottom:-45px;margin:0}.signup-page .auth-card.wide{max-width:680px;padding:26px 24px 16px}.signup-page .auth-card h1{font-size:1.6rem}}
@media(max-width:560px){.signup-page .auth-story{padding:18px 20px}.signup-page .story-main h2{font-size:1.55rem}.signup-page .story-art{width:125px;right:-20px;bottom:-36px}.signup-page .auth-card.wide{padding:24px 12px 12px}.signup-page #signupForm{grid-template-columns:1fr;gap:16px}.signup-page #signupForm>.row{gap:12px}.signup-page .role-pick label{font-size:.8rem;gap:7px}.signup-page .role-pick label i{font-size:1rem}.signup-page .auth-card h1{margin-bottom:18px}}
.name-search{position:relative}.name-suggestions{position:absolute;top:calc(100% + 7px);left:0;right:0;z-index:35;background:#fffefa;border:1px solid #cdd9c5;border-radius:15px;box-shadow:0 14px 35px #203d3426;padding:6px;max-height:310px;overflow:auto;text-align:left}.name-option{padding:11px 13px;border-radius:10px;cursor:pointer;display:flex;flex-direction:column;gap:3px;overflow-wrap:anywhere}.name-option strong{font-weight:500;font-size:.92rem}.name-option small{font-size:.75rem;color:#586b50}.name-option:hover,.name-option[aria-selected=true]{background:#e8efdc}.person-identity{display:block;font-size:.75rem;font-weight:400;color:#607053;margin:5px 0 9px;overflow-wrap:anywhere}
:root{--bg:#f5f5ee;--surface:#fffefa;--surface-2:#f4f6ef;--surface-3:#e9eee4;--border:#dce3d6;--text:#203d34;--muted:#586b60;--faint:#647468;--primary:#205d49;--primary-btn:#205d49;--primary-hover:#174b39;--primary-soft:#e6efdf;--radius:22px;--radius-sm:12px;--shadow:0 18px 50px #243e3512}
body{background:var(--bg);font-size:15px}::selection{background:#d9e8be;color:#203d34}h1,h2,h3{font-weight:600;letter-spacing:-.025em}a{text-underline-offset:4px}input,select,textarea{border:1px solid #cdd8ca;border-radius:12px;background:#fffefa;transition:border-color .2s,box-shadow .2s,background .2s}input:focus,select:focus,textarea:focus{border-color:#427b55;background:#fff;box-shadow:0 0 0 4px #6a915619;outline:none}textarea{resize:vertical}.btn{position:relative;isolation:isolate;overflow:hidden;border-radius:13px;min-height:48px;font-weight:600;transition:background .2s,box-shadow .2s,transform .2s}.btn-primary{background:var(--primary-btn);box-shadow:0 4px 0 #143d3012,0 6px 16px #205d4915}.btn-primary:hover{background:var(--primary-hover);box-shadow:0 7px 20px #205d4928}.btn:active:not(:disabled){transform:translateY(1px) scale(.985)}.btn-ghost{background:#ffffff9c;border-color:#ccd9c8}.btn-google{background:#fff;border-color:#d7dfd0}.btn:disabled{box-shadow:none}.icon-btn,.pw-toggle{border-radius:10px}.chip{border-radius:12px;border:1px solid transparent;background:#eef1e8;color:#536454;font-weight:500;transition:background .2s,box-shadow .2s}.chip.active{background:#205d49;border-color:#205d49;box-shadow:0 3px 10px #205d4915}.chip:focus-visible{outline-offset:3px}.badge{border-radius:8px;padding:5px 10px;font-weight:500}.badge-pending{background:#fff0d2;color:#805b18}.badge-approved{background:#e4efdc;color:#365c2c}.badge-rejected{background:#fbe8e1;color:#983f32}
.auth-wrap{background:#fcfcf7;grid-template-columns:1.05fr 1fr;gap:0;padding:18px;min-height:100svh}.auth-story{border-radius:28px;background:#1e4c3c;padding:36px clamp(28px,4.5vw,72px);min-height:calc(100svh - 36px);justify-content:space-between}.auth-story:before{content:"";position:absolute;width:340px;height:340px;border-radius:50%;background:#b5c9860a;top:80px;left:-240px;box-shadow:0 0 0 55px #b5c98606;pointer-events:none}.auth-story:after{right:-280px;bottom:-190px;border-color:#dce8ba20;width:500px;height:500px}.story-brand{font-size:.94rem;position:relative;z-index:1}.brand-mark{background:#c5d99c;color:#244d37;border-radius:15px;transform:rotate(-6deg)}.brand-mark i{transform:rotate(6deg)}.story-main{position:relative;z-index:1;padding:42px 0 12px;margin:auto 0}.story-main h2{font-size:clamp(2.5rem,4.2vw,4.6rem);line-height:1.25;font-weight:500;letter-spacing:-.045em}.accent-dot{color:#f1b595}.story-art{display:block;width:min(100%,450px);height:auto;margin:30px auto 0;filter:drop-shadow(0 18px 28px #0d261a25);animation:art-in .8s ease both}.story-art .paper-float{animation:paper-float 7s ease-in-out infinite;transform-origin:center}.auth-card,.auth-card.wide{width:100%;max-width:490px;padding:40px 38px}.auth-logo{background:#e8efdc;color:#345b39;border-radius:18px;width:56px;height:56px;box-shadow:inset 0 0 0 1px #dce6cf;margin-bottom:24px}.auth-card h1{font-size:2rem;margin-bottom:28px}.auth-card .field{margin-bottom:20px}.auth-links{margin-top:26px;font-size:.88rem;border-top-color:#e1e7da}.auth-divider{margin:22px 0;color:#778172}.role-pick label{border-radius:15px}.role-pick input:checked+label{background:#eaf0df;border-color:#4f7a45;box-shadow:0 0 0 2px #4f7a4510}
.app-page{background:radial-gradient(ellipse at 95% 0,#e5edda 0,transparent 45%),#f5f5ee}.sidebar{background:#234f3e;box-shadow:0 8px 28px #203d3410}.sidebar .brand{font-size:.95rem;font-weight:600;gap:12px}.sidebar .brand i{color:#d1dfa7;font-size:24px}.sidebar .profile{gap:12px}.sidebar .profile-name{font-size:1rem;margin-top:5px}.sidebar .profile-meta{font-size:.75rem}.sidebar .avatar{background:#d4dfb1;color:#294d35;border-radius:16px}.sidebar .role-tag{font-size:.68rem;border:1px solid #ffffff20;border-radius:6px;background:transparent}.sidebar .nav-item{border-radius:13px;gap:12px;font-size:.92rem;transition:background .2s,transform .2s}.sidebar .nav-item i{width:24px;text-align:center}.sidebar .nav-item.active{background:#e5edcd;color:#224d37;box-shadow:0 4px 12px #0d33261c}.sidebar .nav-item.logout{font-size:.84rem;border-radius:12px;border-top:0;color:#e5cfbd;margin-top:28px}.sidebar .count{border-radius:7px}.main{max-width:1540px;padding-top:42px}.page-intro{margin-bottom:30px;min-height:66px}.page-intro h1{font-size:clamp(1.65rem,2.6vw,2.3rem);line-height:1.4}.page-intro h1:before{content:"";display:block;width:27px;height:5px;border-radius:8px;background:#c69264;margin-bottom:12px}.page-date{font-size:.75rem;color:#65755e;display:block;margin-top:8px;letter-spacing:0}.panel{border:1px solid #dce3d6;background:#fffefa;padding:28px;box-shadow:0 6px 22px #344c3110}.panel-title{font-weight:600;margin-bottom:20px;gap:12px}.panel-title>i{background:#eaf0df;border-radius:11px;display:inline-grid;place-items:center;width:36px;height:36px;color:#467045;font-size:1rem;flex-shrink:0}.item,.leave-card{border-radius:18px;background:#fffefa;box-shadow:0 3px 12px #344c3105;transition:border-color .2s,box-shadow .2s}.list{gap:14px}.item.highlight{background:linear-gradient(105deg,#eef4e4,#fffefa 65%)}.avatar{background:#e7edd9;color:#456244;border-radius:15px}.item-sub{margin-top:3px;font-size:.8rem}.leave-card{padding:24px}.leave-card.is-pending{border-left:4px solid #d6ac60}.leave-card.is-approved{border-left:4px solid #689561}.leave-card.is-rejected{border-left:4px solid #cf8972}.leave-head{padding-bottom:12px}.leave-meta{font-size:.86rem;gap:7px}.leave-reason{background:#f5f6ef;padding:12px 16px;border-radius:12px;margin-top:14px}.leave-foot{border-top:1px solid #e8ebdf;padding-top:16px;margin-top:18px}.teacher-note{background:#edf2e5;border-radius:12px;padding:13px 16px}.stats{gap:16px;margin-bottom:28px}.stat{border-radius:20px;padding:22px;background:#fffefa;position:relative;overflow:hidden;box-shadow:0 5px 18px #344c3108}.stat:after{content:"";position:absolute;right:-18px;bottom:-30px;width:95px;height:95px;border:18px solid #aebf9620;border-radius:50%;pointer-events:none}.stat:first-child{background:#eaf0dd;border-color:#d9e2c8}.stat:nth-child(2){background:#fcf4e4;border-color:#eee1c6}.stat:nth-child(3){background:#eef3e7}.stat:nth-child(4){background:#fcf0e9}.stat-label{gap:9px;color:#5e6e55;font-size:.82rem}.stat-value{font-size:2.4rem;font-weight:600;line-height:1.3;margin-top:14px}.stat-value small{font-size:.8rem}.empty{padding:48px 20px;background:#f9faf4;border:1px dashed #c5d2bd;border-radius:20px;font-size:.92rem}.empty i{display:grid;place-items:center;width:66px;height:66px;border-radius:22px;background:#eaf0df;color:#66845a;margin:0 auto 18px;opacity:1;font-size:1.6rem}.empty small{font-size:.8rem}.notice{border-radius:14px;line-height:1.8}.notice:has(#connectionCode){background:#eef3e5;border:0;position:relative;padding:20px}.notice:has(#connectionCode)>b{font-size:.8rem;font-weight:500;color:#52664a}#connectionCode{font-size:.87rem;word-break:break-all;color:#31513c}#copyConnectionCode{font-size:.8rem;background:#fffefa;border-color:#d1ddc6;min-height:40px}.leave-summary{background:#e9efdd;border-color:#d7e1c7;border-radius:22px;box-shadow:0 10px 25px #344c3108}.leave-summary h2{padding-bottom:15px;border-bottom:1px solid #cdd9bc}.leave-summary dt{font-size:.77rem}.leave-summary dd{font-size:.95rem}.leave-summary dl>div:last-child dd{font-size:1.6rem;color:#345733}.form-section-title{margin:30px 0 22px;font-size:1rem}.form-section-title span{background:#e8eedc;color:#45623b;width:31px;height:31px;border-radius:10px;font-weight:600}.dropzone{border-radius:18px;border-color:#c4d1bb;background:#f7f9f1;padding:30px 20px;transition:background .2s,border-color .2s}.dropzone>i{color:#6b885d}.dropzone:hover,.dropzone.dragover{background:#edf3e1;border-color:#6c9453}.onboarding-banner{background:#edf2df;border-color:#d5dfc4;border-radius:18px}.modal{border-radius:24px;box-shadow:0 25px 100px #17362833;animation:modal-in .22s ease-out}.modal-backdrop{background:#18382875;backdrop-filter:blur(6px)}.toast{border-radius:15px;box-shadow:0 12px 36px #17362820;background:#fffefa}.toast-success{border-left-color:#72934e}.content-section.active{animation:section-in .32s ease-out}.topbar{background:#fbfcf6eF;backdrop-filter:blur(12px)}.utility-page{padding:28px 16px;min-height:100svh;background:radial-gradient(ellipse at top,#e5edda,transparent 65%),#f5f5ee}.utility-page>main{background:#fffefa;border:1px solid #dce3d6;border-radius:26px;box-shadow:var(--shadow);padding:32px!important}.utility-page h1{margin:28px 0}.utility-page details{border-color:#e1e7d9;padding:18px 0}.utility-page summary{list-style:none;display:flex;justify-content:space-between;gap:15px;align-items:center;font-size:.95rem;cursor:pointer}.utility-page summary:after{content:"+";font-size:1.35rem;color:#5a7c46}.utility-page details[open] summary:after{content:"−"}.utility-page details p{font-size:.88rem;color:#576b5a}.error-page .auth-wrap{justify-content:center;background:radial-gradient(circle at center,#e6edd9,transparent 65%),#f5f5ee}.error-page .auth-card{background:#fffefa;border:1px solid #dce3d6;border-radius:28px;box-shadow:var(--shadow);padding:48px 32px}.tap-wave{position:absolute;pointer-events:none;width:90px;height:90px;margin:-45px;border-radius:50%;background:currentColor;opacity:0;animation:tap-wave .5s ease-out;z-index:-1}
@media(hover:hover){.item:hover,.leave-card:hover{border-color:#bacdae;box-shadow:0 10px 24px #344c3110}.sidebar .nav-item:hover{transform:translateX(2px)}.btn:hover:not(:disabled){transform:translateY(-1px)}}
@media(min-width:901px){.sidebar{top:16px;bottom:16px;left:16px;height:calc(100svh - 32px);width:244px;border-radius:24px;overflow-y:auto}.main{margin-left:270px}.sidebar .brand{padding:28px 20px}.sidebar .profile{padding:22px 20px}}
@media(max-width:1150px) and (min-width:901px){.auth-wrap{grid-template-columns:1fr 1fr}.auth-story{padding:30px}.story-main h2{font-size:3rem}.auth-card,.auth-card.wide{padding:36px 28px}}
@media(max-width:900px){.auth-wrap{display:block;padding:12px;min-height:100svh}.auth-story{min-height:auto;border-radius:22px;padding:22px 26px}.story-main{padding:22px 0 2px;margin:0}.story-main h2{font-size:2.1rem;margin:0;max-width:72%}.story-art{position:absolute;width:175px;right:-24px;bottom:-50px;opacity:.75;transform:rotate(8deg);margin:0}.auth-story:after{display:none}.story-brand{font-size:.87rem}.brand-mark{width:36px;height:36px;border-radius:12px}.auth-card,.auth-card.wide{padding:30px 24px;max-width:520px}.auth-card h1{font-size:1.65rem}.sidebar{border-radius:0 24px 24px 0}.main{margin-left:0;padding:28px 20px 42px}.page-intro h1{font-size:1.8rem}.topbar .brand{font-size:.95rem}.stats{gap:12px}.stat{padding:18px}.stat-value{font-size:2rem}}
@media(max-width:560px){.auth-card,.auth-card.wide{padding:28px 14px 20px}.auth-story{padding:22px}.story-main h2{font-size:1.7rem}.story-art{width:138px;right:-32px;bottom:-38px;opacity:.6}.auth-card .row{flex-direction:column;gap:0}.main{padding:22px 14px 36px}.page-intro{gap:18px;margin-bottom:24px}.page-intro h1{font-size:1.65rem}.panel{padding:20px;border-radius:19px}.panel-title{font-size:.97rem}.search-row{flex-wrap:wrap}.search-row .input-icon{flex:1 1 100%}.search-row>.btn{width:100%}.stats{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.inbox-stats{grid-template-columns:repeat(3,minmax(0,1fr))}.stat{padding:17px 14px;border-radius:17px}.stat-value{font-size:1.9rem}.item,.leave-card{padding:18px 16px}.item{flex-wrap:wrap;gap:12px}.item-body{min-width:130px}.item-actions{flex-wrap:wrap;margin-left:auto}.empty{padding:36px 18px}.leave-summary{padding:22px;margin-top:2px}.leave-summary dl>div:last-child dd{font-size:1.25rem}.form-section-title{gap:9px;font-size:.94rem}.leave-workspace .row{flex-wrap:wrap}.leave-workspace .row>.field{flex-basis:calc(50% - 6px)}input[type=date]{padding:11px 9px;min-width:0;font-size:.9rem}.utility-page>main{margin:12px auto!important;padding:24px!important}.modal{padding:24px 20px}.auth-logo{display:none}}
@keyframes paper-float{0%,100%{transform:translateY(0) rotate(-5deg)}50%{transform:translateY(-9px) rotate(-3deg)}}
@media(max-width:560px){input[type=date]{font-size:16px}}
@keyframes art-in{from{opacity:0;translate:0 15px}to{opacity:1;translate:0 0}}
@keyframes section-in{from{opacity:.4;transform:translateY(7px)}to{opacity:1;transform:none}}
@keyframes modal-in{from{opacity:.5;transform:translateY(12px) scale(.98)}to{opacity:1;transform:none}}
@keyframes tap-wave{from{opacity:.12;transform:scale(0)}to{opacity:0;transform:scale(4)}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.tap-wave{display:none}}
