:root{font-family:Inter,"Segoe UI",Arial,sans-serif;color:#15304a;background:#f5f9fb;font-synthesis:none}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;min-height:100vh;display:flex;flex-direction:column}
button,input,select,textarea{font:inherit}
button,a,input,select,textarea,summary{-webkit-tap-highlight-color:transparent}
a{color:#086e9d}
button{cursor:pointer}
:focus-visible{outline:3px solid #f2a929;outline-offset:3px}
.site-header{height:92px;padding:12px max(24px,calc((100vw - 1180px)/2));background:#fff;display:flex;align-items:center;justify-content:space-between;gap:24px;border-bottom:1px solid #e6eef1;position:relative;z-index:2}
.brand{display:inline-flex;align-items:center;flex:none}
.brand img{display:block;width:176px;height:auto}
.header-label{font-size:.72rem;font-weight:850;letter-spacing:.13em;color:#087daf;text-transform:uppercase;display:flex;align-items:center;gap:10px}
.header-label-dot{width:8px;height:8px;border-radius:50%;background:#49af62;box-shadow:0 0 0 5px #e6f7ec}
nav{display:flex;align-items:center;gap:20px;flex-wrap:wrap}
nav a{color:#155470;text-decoration:none;font-size:.9rem;font-weight:750}
nav a:hover{text-decoration:underline}
nav form{margin:0}
.user-name{font-size:.88rem;color:#3d596b}
.site-main{width:min(1180px,100%);margin:0 auto;padding:38px 24px 72px;flex:1}
.site-main>h1{font-size:clamp(1.8rem,3.6vw,2.5rem);line-height:1.1;letter-spacing:-.035em;margin:0 0 24px}
.site-footer{border-top:1px solid #e4edf0;padding:20px max(24px,calc((100vw - 1180px)/2));color:#4e6572;font-size:.78rem;display:flex;justify-content:space-between;gap:16px;background:#fff}
.auth-shell{background:radial-gradient(circle at 15% 8%,#e8f8ed 0,transparent 28%),radial-gradient(circle at 84% 26%,#e8f5fb 0,transparent 30%),#f7fbfc}
.auth-main{width:min(1220px,100%);padding:18px 24px 54px;display:flex;align-items:center}
.auth-layout{width:100%;display:grid;grid-template-columns:minmax(0,1.08fr) minmax(365px,.92fr);gap:clamp(32px,6vw,92px);align-items:center;min-height:610px}
.auth-intro{position:relative;padding:34px 0 24px;min-width:0}
.eyebrow,.section-kicker,.card-kicker{font-size:.73rem;letter-spacing:.18em;font-weight:850;color:#0781b4;text-transform:uppercase;margin:0 0 20px}
.eyebrow{display:flex;align-items:center;gap:13px}
.eyebrow>span{width:30px;height:3px;border-radius:3px;background:#44ae64}
.auth-intro h1{font-size:clamp(3.15rem,5.4vw,5.1rem);line-height:1.03;letter-spacing:-.065em;color:#10344d;max-width:680px;margin:0 0 23px;font-weight:850}
.auth-intro h1 em{font-style:normal;color:#0785bb;position:relative}
.auth-intro h1 em:after{content:"";position:absolute;left:0;right:0;bottom:-7px;height:7px;border-radius:100%;background:#75c98a;transform:rotate(-2deg);opacity:.8}
.intro-copy{font-size:1.09rem;line-height:1.65;color:#416174;max-width:550px;margin:0 0 27px}
.intro-tags{display:flex;flex-wrap:wrap;gap:9px}
.intro-tags span{font-size:.76rem;color:#1c6575;background:#fff;border:1px solid #d8ebeb;border-radius:999px;padding:8px 14px;font-weight:800;box-shadow:0 5px 18px #153d5007}
.learning-art{height:224px;position:relative;margin-top:22px;overflow:hidden}
.art-orbit{position:absolute;border:1px solid #bee2e6;border-radius:50%;transform:rotate(-22deg)}
.art-orbit-one{width:350px;height:120px;left:9%;top:52px}
.art-orbit-two{width:310px;height:166px;left:18%;top:20px;transform:rotate(24deg)}
.art-disc{position:absolute;border-radius:50%;display:grid;place-items:center;font-weight:800;box-shadow:0 18px 30px #1d648a16}
.art-disc-one{width:71px;height:71px;top:7px;left:6%;background:#fbc860;color:#0d6785;font-size:2.1rem;transform:rotate(-16deg)}
.art-disc-two{width:52px;height:52px;right:12%;top:34px;background:#57b976;color:#fff;font-size:2rem;transform:rotate(15deg)}
.art-card{position:absolute;left:19%;top:55px;width:min(310px,66%);min-height:146px;padding:23px 26px;background:linear-gradient(135deg,#087caf,#0c5e99);color:#fff;border-radius:23px;box-shadow:0 26px 50px #0a61863a;transform:rotate(-5deg);display:flex;flex-direction:column;justify-content:center;gap:10px}
.art-card-label{font-size:.65rem;letter-spacing:.15em;font-weight:800;color:#c7f0ff}
.art-card strong{font-size:1.5rem;line-height:1.13;letter-spacing:-.035em;max-width:220px}
.art-period{color:#82d99b}
.art-card-line{width:66px;height:5px;background:#73d08c;border-radius:5px}
.art-pill{position:absolute;left:40%;bottom:8px;background:#fff;color:#146379;padding:13px 20px;border-radius:999px;font-size:.76rem;font-weight:850;box-shadow:0 12px 24px #0a618626;transform:rotate(5deg)}
.auth-card-wrap{max-width:490px;width:100%;justify-self:end}
.auth-card{background:#fff;border:1px solid #deebed;border-radius:27px;padding:clamp(26px,3.5vw,45px);box-shadow:0 27px 75px #0a51621e,0 4px 14px #11496a0b;position:relative;overflow:hidden}
.auth-card:before{content:"";position:absolute;top:0;left:0;right:0;height:7px;background:linear-gradient(90deg,#49b365 0 34%,#0786bd 34% 80%,#f2bf49 80%)}
.card-kicker{margin:0 0 11px;color:#1591aa}
.auth-card h2{font-size:clamp(1.85rem,3vw,2.25rem);line-height:1.1;letter-spacing:-.04em;margin:0 0 12px;color:#12364d}
.card-intro{color:#547181;line-height:1.5;margin:0 0 28px;font-size:.95rem}
.auth-form label{display:block;font-size:.85rem;font-weight:800;color:#294b5f;margin:0 0 8px}
.auth-form input{width:100%;height:54px;border:1.5px solid #c9dce3;border-radius:12px;padding:0 16px;background:#fbfdfd;color:#12354c;outline:none;font-size:1rem}
.auth-form input:focus{border-color:#078ac0;box-shadow:0 0 0 4px #dff5fc}
.auth-form input::placeholder{color:#899fa9}
.button-primary,.button-secondary,.button-danger,.button-quiet,.button-link{display:inline-flex;align-items:center;justify-content:center;gap:14px;border-radius:11px;border:0;font-weight:800;text-decoration:none;transition:transform .16s ease,box-shadow .16s ease,background .16s ease}
.button-primary{background:#087eaf;color:#fff;padding:14px 20px;min-height:50px;box-shadow:0 9px 18px #087eaf2d}
.button-primary:hover{background:#08698f;transform:translateY(-2px);box-shadow:0 14px 25px #087eaf38}
.button-secondary,.button-link{background:#e9f5f8;color:#086d96;padding:12px 17px;min-height:44px}
.button-secondary:hover,.button-link:hover{background:#d8eef4}
.button-danger{background:#b9333e;color:#fff;padding:12px 18px;min-height:44px}
.button-danger:hover{background:#982933}
.button-quiet{background:#f3f8f9;color:#0b6389;padding:9px 14px}
.auth-form .button-primary,.auth-form .button-secondary{width:100%;margin-top:18px;justify-content:space-between}
.form-help{color:#637d89;font-size:.8rem;line-height:1.5;margin:13px 0 0}
.auth-divider{display:flex;align-items:center;gap:13px;color:#718996;font-size:.76rem;margin:26px 0 11px}
.auth-divider:before,.auth-divider:after{content:"";height:1px;background:#dce9ed;flex:1}
.password-option summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;align-items:center;padding:10px 3px;color:#096b94;font-size:.88rem;font-weight:800}
.password-option summary::-webkit-details-marker{display:none}
.password-option summary span{font-size:1.2rem;transition:transform .2s}
.password-option[open] summary span{transform:rotate(180deg)}
.password-form{padding-top:16px}
.password-form label:not(:first-of-type){margin-top:15px}
.access-note{font-size:.77rem;color:#65808a;line-height:1.55;margin:20px 0 0}
.auth-aside{text-align:center;color:#5c7886;font-size:.79rem;margin:14px 0 0}
.code-input{font-size:1.9rem!important;letter-spacing:.34em;text-align:center;font-weight:850}
.error{background:#fff1f1;color:#8b202c;border:1px solid #f6cdcd;border-left:4px solid #dc5961;border-radius:10px;padding:13px 15px;line-height:1.45}
.notice{background:#eaf6f9;color:#275f76;border-left:4px solid #28a4be;border-radius:9px;padding:13px 16px;line-height:1.5}
.dashboard-hero,.admin-hero{background:linear-gradient(115deg,#0b6395,#087eae 58%,#0aa4a8);color:#fff;border-radius:28px;padding:clamp(28px,5vw,55px);display:flex;justify-content:space-between;gap:24px;position:relative;overflow:hidden}
.dashboard-hero:before,.admin-hero:before{content:"";position:absolute;width:450px;height:450px;border-radius:50%;border:1px solid #ffffff38;right:-100px;top:-220px;box-shadow:0 0 0 70px #ffffff0b,0 0 0 140px #ffffff08}
.dashboard-hero h2,.admin-hero h2{font-size:clamp(2.1rem,4.4vw,3.8rem);line-height:1.04;letter-spacing:-.055em;margin:0 0 14px;position:relative}
.dashboard-hero p:not(.eyebrow),.admin-hero p:not(.eyebrow){font-size:1.02rem;line-height:1.5;color:#e5f8ff;margin:0;position:relative;max-width:580px}
.eyebrow.light{color:#cbf3e2;position:relative}
.eyebrow.light>span{background:#a6e387}
.hero-spark{color:#b8eb90;font-size:.65em;margin-left:12px}
.hero-motif{width:230px;flex:none;position:relative;display:flex;align-items:center;justify-content:center;font-size:5rem;color:#b5eaf7}
.hero-motif span:nth-child(2){position:absolute;font-size:3rem;color:#b0ec8e;right:0;top:-15px}
.hero-motif span:nth-child(3){position:absolute;font-size:7rem;color:#ffffff45;bottom:-100px;left:-30px}
.dashboard-section{margin:44px 0}
.section-heading,.panel-heading{display:flex;align-items:end;justify-content:space-between;gap:20px;margin-bottom:20px}
.section-kicker{margin:0 0 8px;color:#0785a7}
.section-heading h2,.panel-heading h2,.page-lead h2{font-size:clamp(1.5rem,3vw,2rem);margin:0;line-height:1.15;letter-spacing:-.035em}
.count-badge,.user-status{border-radius:999px;background:#e4f5ec;color:#247845;padding:8px 12px;font-size:.76rem;font-weight:850;white-space:nowrap}
.app-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:18px}
.app-tile{display:flex;align-items:center;gap:15px;background:#fff;border:1px solid #deecef;border-radius:21px;padding:24px;text-decoration:none;color:#173c50;min-height:120px;box-shadow:0 12px 25px #1247630b;transition:transform .16s,box-shadow .16s}
.app-tile:hover{transform:translateY(-4px);box-shadow:0 19px 32px #12476320}
.app-tile-mark{display:grid;place-items:center;flex:none;width:55px;height:55px;border-radius:15px;background:linear-gradient(135deg,#d5f5df,#d7f1fd);color:#0879aa;font-size:1.4rem;font-weight:900}
.app-tile-copy{display:flex;flex-direction:column;gap:5px;min-width:0}.app-tile-copy strong{font-size:1.03rem}.app-tile-copy small{color:#5c7986}.app-tile-arrow{margin-left:auto;font-size:1.4rem;color:#0789aa}
.empty-apps{display:flex;align-items:center;gap:25px;background:#fff;border:1px dashed #b7dce2;border-radius:22px;padding:34px;min-height:170px}
.empty-icon{display:grid;place-items:center;width:72px;height:72px;flex:none;border-radius:21px;background:#e8f7ed;color:#43ad65;font-size:2.5rem}
.empty-apps h3{margin:0 0 7px;font-size:1.25rem}.empty-apps p{margin:0;color:#557582;line-height:1.45}
.admin-hero{padding:36px 42px}.admin-hero h2{font-size:clamp(2rem,4vw,3.1rem);max-width:680px}.admin-hero-icon{font-size:6rem;color:#c1edb4;line-height:1;position:relative;align-self:center}
.stat-grid,.admin-action-grid,.summary-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:17px;margin:20px 0}
.stat-card,.action-card,.admin-panel{background:#fff;border:1px solid #dcebf0;border-radius:20px;box-shadow:0 9px 24px #1449620a}
.stat-card{padding:20px 25px;display:flex;align-items:baseline;gap:12px}.stat-card strong{font-size:2.2rem;color:#087fa9;line-height:1}.stat-card span{color:#496977;font-size:.86rem;font-weight:650}
.action-card{position:relative;padding:26px;display:flex;flex-direction:column;gap:7px;text-decoration:none;color:#14394b}.action-card:hover{box-shadow:0 16px 30px #1449621c;transform:translateY(-2px)}.action-card strong{font-size:1.1rem}.action-card small{color:#587786;font-size:.83rem}.action-icon{display:grid;place-items:center;width:44px;height:44px;border-radius:14px;background:#e7f5fa;color:#0784b0;font-size:1.35rem;margin-bottom:8px}.action-icon.green{background:#e9f8ed;color:#3fa867}.action-arrow{position:absolute;right:25px;top:26px;color:#0784a9;font-size:1.35rem}
.admin-panel{padding:clamp(22px,3vw,34px);margin:22px 0}.admin-panel>p{color:#567380;line-height:1.6;margin-top:0}.panel-heading a,.back-link a{font-size:.84rem;font-weight:800;text-decoration:none}
.mini-app-grid{display:grid;gap:10px}.mini-app{display:flex;justify-content:space-between;align-items:center;gap:15px;background:#f6fafb;border-radius:13px;padding:13px 16px}.mini-app strong,.mini-app small{display:block}.mini-app small{color:#5f7987;margin-top:4px}
.inline-details{border-top:1px solid #e2edf0;margin-top:22px;padding-top:17px}.inline-details summary{color:#0875a1;font-weight:800;cursor:pointer}.inline-details form{margin-top:18px}
.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:15px}.form-grid button{align-self:end}.profile-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.profile-grid .wide{grid-column:1/-1}.optional{font-size:.78rem;color:#6b8490;font-weight:500}
label{display:block;font-weight:750;color:#2a4a5b;font-size:.85rem;margin:12px 0}
input,select,textarea{display:block;width:100%;margin-top:7px;border:1.5px solid #c9dbe2;border-radius:10px;background:#fbfdfd;color:#183a4d;padding:12px 14px;min-height:46px;outline:none}
input:focus,select:focus,textarea:focus{border-color:#0987b5;box-shadow:0 0 0 4px #e1f5fa}
textarea{min-height:140px;resize:vertical;line-height:1.5}
.inline-search>div{display:flex;gap:10px}.inline-search input{margin:0}.inline-search button{flex:none}
.selected-user{display:flex;gap:12px;align-items:center;margin:18px 0;background:#f2f8fa;padding:15px;border-radius:12px}.selected-user span{color:#5c7986}
.page-lead{margin:0 0 24px}.page-lead h2{font-size:clamp(2rem,4vw,3rem)}.page-lead p:last-child{color:#577482;line-height:1.55;max-width:780px}
.user-list{margin-top:22px;border-top:1px solid #e4eef1}.user-row{display:flex;gap:14px;align-items:center;padding:14px 3px;border-bottom:1px solid #e4eef1;text-decoration:none;color:#1b3e50}.user-row:hover{background:#f8fbfc}.user-avatar{display:grid;place-items:center;flex:none;width:42px;height:42px;border-radius:12px;background:#e3f6eb;color:#287c4e;font-weight:850}.user-row-main{display:flex;flex-direction:column;gap:3px;min-width:0;flex:1}.user-row-main small{color:#657e89;overflow:hidden;text-overflow:ellipsis}.user-course{font-weight:800;font-size:.78rem;color:#0879a3}.user-status.inactive{background:#f5eeee;color:#9b4c52}
.back-link{margin-bottom:20px}.danger-panel{border-color:#f2d7db;background:#fffafa}.danger-panel .inline-details{border:0;margin:0;padding:0}.danger-panel summary{color:#a42f3a}.danger-panel p{color:#79535a}.danger-panel form{max-width:510px}
.csv-steps{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:20px 0}.csv-steps>div{background:#edf7f9;border:1px solid #d6ecf0;border-radius:14px;padding:15px;display:flex;gap:12px;align-items:center}.csv-steps b{color:#0584ad;font-size:1.2rem}.csv-steps span{font-size:.78rem;font-weight:800;color:#3b6273}
code{background:#edf4f6;border-radius:5px;padding:2px 4px;color:#115c77}.download-actions{display:flex;align-items:center;flex-wrap:wrap;gap:18px;margin-top:24px}.text-link{font-size:.86rem;font-weight:800}
.summary-grid{grid-template-columns:repeat(4,1fr);margin:20px 0}.summary-grid>div{background:#f3f9fa;border-radius:12px;padding:15px;display:flex;flex-direction:column}.summary-grid strong{font-size:1.6rem;color:#087fa7}.summary-grid span{color:#587583;font-size:.78rem;font-weight:700}
.table-scroll{overflow:auto;max-height:470px;border:1px solid #dbe8ec;border-radius:12px}table{border-collapse:collapse;width:100%;min-width:800px;font-size:.8rem}th,td{padding:11px 13px;border-bottom:1px solid #e7eff1;text-align:left;vertical-align:top}th{position:sticky;top:0;background:#edf6f8;color:#2b5366;z-index:1}td{color:#365867}.row-status{font-weight:800;color:#087fa7}.apply-form{margin-top:22px}.result-panel{text-align:center;padding:50px 25px}.result-panel h2{font-size:2rem}.result-icon{display:inline-grid;place-items:center;width:70px;height:70px;border-radius:50%;background:#dff6e7;color:#269555;font-size:2.3rem;margin-bottom:18px}
@media(max-width:900px){.auth-layout{grid-template-columns:1fr;gap:20px;min-height:0}.auth-main{display:block;padding-top:34px}.auth-intro{padding:0}.auth-intro h1{font-size:clamp(2.5rem,7vw,4rem);max-width:760px}.auth-card-wrap{justify-self:start;max-width:680px}.learning-art{display:none}.intro-copy{margin-bottom:18px}.auth-aside{text-align:left}.site-header{height:78px}.brand img{width:150px}.hero-motif{width:120px;font-size:3.5rem}}
@media(max-width:620px){.site-main{padding:23px 16px 56px}.auth-main{padding:24px 16px 45px}.site-header{height:auto;min-height:72px;padding:10px 16px}.brand img{width:141px}.header-label{font-size:.62rem;letter-spacing:.08em}.auth-intro h1{font-size:clamp(2.22rem,9vw,3rem);line-height:1.06;margin-bottom:16px}.intro-copy{font-size:.94rem}.intro-tags{gap:7px}.intro-tags span{padding:7px 11px;font-size:.7rem}.auth-card{border-radius:20px;padding:27px 22px}.auth-card h2{font-size:1.8rem}.site-footer{padding:18px 16px;display:block;line-height:1.8}.site-footer span+span{display:none}nav{gap:9px;justify-content:flex-end}nav .user-name{width:100%;text-align:right}nav a{font-size:.76rem}.dashboard-hero,.admin-hero{padding:25px 22px;border-radius:20px}.dashboard-hero h2,.admin-hero h2{font-size:2rem}.hero-motif,.admin-hero-icon{display:none}.dashboard-section{margin:31px 0}.empty-apps{padding:24px;align-items:flex-start;gap:15px}.empty-icon{width:48px;height:48px;border-radius:14px;font-size:1.8rem}.empty-apps h3{font-size:1.06rem}.stat-grid,.admin-action-grid{gap:10px}.stat-card{padding:16px;display:block}.stat-card strong{display:block}.action-card{padding:18px}.profile-grid{grid-template-columns:1fr}.profile-grid .wide{grid-column:auto}.csv-steps{grid-template-columns:1fr}.summary-grid{grid-template-columns:repeat(2,1fr)}.user-course,.user-status{display:none}.inline-search>div{display:block}.inline-search button{margin-top:10px}.mini-app{display:block}.mini-app form{margin-top:10px}.selected-user{display:block}.selected-user span{display:block;margin-top:5px}}
@media(max-width:380px){.header-label{display:none}.auth-intro h1{font-size:2.18rem}.auth-card{padding:24px 18px}.app-tile{padding:18px}.stat-grid,.admin-action-grid{grid-template-columns:1fr}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{transition:none!important;animation:none!important}}
