:root{--gs-navy:#173854;--gs-blue:#2f6f9f;--gs-sky:#eaf5fb;--gs-bg:#f5f9fc;--gs-card:#fff;--gs-text:#173854;--gs-muted:#708497;--gs-line:#e5edf3;--gs-shadow:0 14px 40px rgba(23,56,84,.10)}
*{box-sizing:border-box}html,body{margin:0;padding:0;background:var(--gs-bg);color:var(--gs-text);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans KR",sans-serif}body{min-height:100vh}a{text-decoration:none;color:inherit}button{font:inherit}
.gs-app{max-width:760px;margin:0 auto;min-height:100vh;padding:calc(env(safe-area-inset-top) + 18px) 18px calc(100px + env(safe-area-inset-bottom))}.gs-top{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:18px}.gs-brand{display:flex;align-items:center;gap:11px}.gs-logo{width:46px;height:46px;border-radius:16px;box-shadow:0 8px 22px rgba(23,56,84,.18)}.gs-brand strong{display:block;font-size:18px;letter-spacing:-.3px}.gs-brand span{display:block;color:var(--gs-muted);font-size:12px;margin-top:2px}.gs-install{border:0;background:var(--gs-navy);color:#fff;padding:10px 13px;border-radius:13px;font-weight:800;cursor:pointer}.gs-install[hidden]{display:none}
.gs-hero{background:linear-gradient(145deg,#d5edf9 0%,#e0effb 48%,#e5e2f8 100%);color:var(--gs-navy);border:1px solid rgba(114,166,205,.24);border-radius:28px;padding:26px 24px;box-shadow:0 14px 40px rgba(52,104,145,.12);position:relative;overflow:hidden}.gs-hero:after{content:"";position:absolute;width:180px;height:180px;border-radius:50%;background:rgba(255,255,255,.35);right:-55px;top:-70px}.gs-hero-kicker{font-size:13px;opacity:.78;margin:0 0 9px}.gs-hero h1{font-size:29px;line-height:1.25;letter-spacing:-1px;margin:0 0 10px}.gs-hero p{font-size:14px;line-height:1.65;opacity:.88;margin:0;max-width:500px}.gs-user-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:20px;position:relative;z-index:1}.gs-pill{display:inline-flex;align-items:center;justify-content:center;min-height:42px;padding:0 15px;border:0;border-radius:14px;background:var(--gs-navy);color:#fff;font-weight:800;font-size:14px}.gs-pill.ghost{background:rgba(255,255,255,.72);color:var(--gs-navy);border:1px solid rgba(23,56,84,.18)}
.gs-section{margin-top:24px}.gs-section-head{display:flex;align-items:end;justify-content:space-between;margin-bottom:12px}.gs-section h2{font-size:19px;letter-spacing:-.5px;margin:0}.gs-section small{color:var(--gs-muted)}.gs-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.gs-card{background:var(--gs-card);border:1px solid var(--gs-line);border-radius:21px;padding:18px;min-height:132px;box-shadow:0 7px 20px rgba(23,56,84,.05);transition:.15s ease}.gs-card:active{transform:scale(.985)}.gs-icon{width:43px;height:43px;display:grid;place-items:center;border-radius:14px;background:var(--gs-sky);font-size:23px;margin-bottom:13px}.gs-card strong{display:block;font-size:16px;letter-spacing:-.35px}.gs-card span{display:block;margin-top:6px;color:var(--gs-muted);font-size:12px;line-height:1.45}.gs-wide{grid-column:1/-1;min-height:auto;display:flex;align-items:center;gap:14px}.gs-wide .gs-icon{margin:0;flex:0 0 43px}.gs-wide .gs-card-text{min-width:0}.gs-notice{background:#fff;border:1px solid var(--gs-line);border-radius:20px;padding:16px 18px;color:var(--gs-muted);font-size:13px;line-height:1.6}
.gs-bottom{position:fixed;z-index:99;left:50%;transform:translateX(-50%);bottom:0;width:min(760px,100%);padding:10px 14px calc(10px + env(safe-area-inset-bottom));background:rgba(255,255,255,.94);backdrop-filter:blur(16px);border-top:1px solid var(--gs-line);display:grid;grid-template-columns:repeat(5,1fr)}.gs-nav{display:flex;flex-direction:column;align-items:center;gap:4px;padding:6px 2px;color:#708497;font-size:10px;font-weight:700}.gs-nav b{font-size:20px;line-height:1}.gs-nav.active{color:var(--gs-navy)}.gs-ios-tip{display:none;position:fixed;z-index:200;left:16px;right:16px;bottom:calc(86px + env(safe-area-inset-bottom));max-width:560px;margin:auto;background:#fff;border:1px solid var(--gs-line);border-radius:20px;padding:17px 48px 17px 18px;box-shadow:0 18px 50px rgba(23,56,84,.18);font-size:13px;line-height:1.55}.gs-ios-tip.show{display:block}.gs-tip-close{position:absolute;right:12px;top:10px;border:0;background:none;font-size:24px;color:var(--gs-muted)}
@media (min-width:620px){.gs-app{padding-left:28px;padding-right:28px}.gs-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.gs-wide{grid-column:span 3}}

.doit-native-body{margin:0;background:#f5f9fc;color:#173854;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}.doit-native{min-height:100vh}.doit-native__head{height:72px;display:flex;align-items:center;gap:12px;padding:0 18px;background:#fff;border-bottom:1px solid #e6eef4;position:sticky;top:0;z-index:10}.doit-native__head img{width:42px;height:42px;border-radius:12px}.doit-native__head div{display:flex;flex-direction:column}.doit-native__head strong{font-size:16px}.doit-native__head span{font-size:12px;color:#71869a}.doit-native__head button{margin-left:auto;border:0;border-radius:12px;background:#173854;color:#fff;padding:9px 12px;font-weight:700}.doit-native main{max-width:760px;margin:0 auto;padding:24px 16px 70px}.eyebrow{font-size:12px;font-weight:800;letter-spacing:.12em;color:#4b779b}.doit-login{min-height:calc(100vh - 120px);display:grid;place-items:center}.doit-login[hidden],.doit-dashboard[hidden]{display:none!important}.doit-login__card,.doit-panel,.doit-welcome{background:#fff;border-radius:24px;padding:24px;box-shadow:0 10px 35px rgba(23,56,84,.08)}.doit-login__card{width:min(100%,420px);box-sizing:border-box}.doit-login h1,.doit-welcome h1{margin:6px 0 10px;font-size:28px}.doit-login p,.doit-welcome p{color:#6b8092;line-height:1.6}.doit-login label{display:block;font-size:13px;font-weight:700;margin:14px 0}.doit-login input{display:block;width:100%;box-sizing:border-box;margin-top:7px;padding:14px;border:1px solid #d6e1e9;border-radius:13px;font-size:16px}.doit-login form>button{width:100%;padding:14px;border:0;border-radius:14px;background:#173854;color:#fff;font-size:16px;font-weight:800}.doit-status{min-height:20px;font-size:13px!important;color:#c04444!important}.doit-dashboard{display:grid;gap:16px}.doit-welcome button{border:0;background:#edf3f7;color:#173854;padding:9px 12px;border-radius:11px;font-weight:700}
.doit-panel__head{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.doit-panel__head h2{margin:0;font-size:20px}.doit-panel__head span{font-size:12px;color:#7890a4}.doit-course{padding:16px 0;border-top:1px solid #edf2f5}.doit-course:first-child{border-top:0}.doit-course__top{display:flex;justify-content:space-between;gap:14px}.doit-course__top strong{font-size:15px}.doit-course__top span{font-size:13px;font-weight:800}.doit-progress{height:8px;background:#edf2f5;border-radius:999px;overflow:hidden;margin:10px 0 7px}.doit-progress i{display:block;height:100%;background:#173854;border-radius:999px}.doit-course small,.doit-empty{font-size:12px;color:#71869a}.doit-modules{display:grid;grid-template-columns:1fr 1fr;gap:10px}.doit-modules button{padding:16px;border:1px solid #e1e9ef;border-radius:16px;background:#f8fafc;text-align:left;color:#173854;font-weight:800}.doit-modules small{display:block;margin-top:5px;color:#8a9baa;font-weight:500}.doit-modules button:disabled{opacity:.72}@media(max-width:520px){.doit-native main{padding-top:16px}.doit-login__card,.doit-panel,.doit-welcome{border-radius:20px;padding:20px}.doit-modules{grid-template-columns:1fr}.doit-login h1,.doit-welcome h1{font-size:24px}}

/* v1.2 independent app polish */
.doit-dashboard[hidden],.doit-login[hidden],.gs-bottom[hidden]{display:none!important}.doit-dashboard{padding-bottom:12px}.doit-hero{margin-top:4px}.doit-hero .gs-pill{border:0;cursor:pointer}.doit-hero .gs-pill.ghost{border:1px solid rgba(23,56,84,.18)}
.doit-hero-title__name,.doit-hero-title__message{display:block}.doit-hero-title__name{font-size:.82em;margin-bottom:13px}.doit-hero-title__message{font-size:.78em;line-height:1.55;letter-spacing:-.6px}
.doit-login{min-height:calc(100vh - 100px);display:grid;place-items:center;padding:30px 0 70px}.doit-login__card{width:min(100%,430px);background:#fff;border:1px solid var(--gs-line);border-radius:28px;padding:28px;box-shadow:var(--gs-shadow)}.doit-login__mark img{width:58px;height:58px;border-radius:18px;box-shadow:0 10px 24px rgba(23,56,84,.15)}.eyebrow{margin:18px 0 5px;font-size:11px;font-weight:900;letter-spacing:.14em;color:var(--gs-blue)}.doit-login h1{margin:0;font-size:28px;letter-spacing:-1px}.doit-login>div>p:not(.eyebrow){color:var(--gs-muted);font-size:14px;line-height:1.65}.doit-login label{display:block;margin-top:15px;font-size:13px;font-weight:800}.doit-login input{display:block;width:100%;margin-top:7px;border:1px solid #dbe6ed;background:#f9fbfc;border-radius:14px;padding:14px 15px;font-size:16px;outline:0}.doit-login input:focus{border-color:var(--gs-blue);background:#fff}.doit-login form>button{width:100%;margin-top:18px;border:0;border-radius:14px;padding:14px;background:var(--gs-navy);color:#fff;font-weight:900;font-size:15px}.doit-status{min-height:18px;margin:10px 0 0;color:#b94747;font-size:12px}
.doit-course-grid{display:grid;gap:12px}.doit-course{background:#fff;border:1px solid var(--gs-line);border-radius:20px;padding:17px 18px;box-shadow:0 7px 20px rgba(23,56,84,.05)}.doit-course__top{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.doit-course__top strong{font-size:15px;line-height:1.45}.doit-course__top span{flex:0 0 auto;font-size:13px;font-weight:900;color:var(--gs-blue)}.doit-progress{height:8px;margin:12px 0 8px;border-radius:999px;background:#eaf0f4;overflow:hidden}.doit-progress i{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,var(--gs-blue),var(--gs-navy));transition:width .35s ease}.doit-course small,.doit-empty{color:var(--gs-muted);font-size:12px}.doit-empty{background:#fff;border:1px solid var(--gs-line);border-radius:18px;padding:18px;text-align:center}.doit-skeleton{height:105px;border-radius:20px;background:linear-gradient(90deg,#edf2f5 25%,#f8fafb 45%,#edf2f5 65%);background-size:300% 100%;animation:doitShimmer 1.2s infinite}@keyframes doitShimmer{to{background-position:-150% 0}}
.app-module{font-family:inherit;text-align:left;color:var(--gs-text);cursor:pointer}.app-module:disabled{cursor:default}.doit-toast{position:fixed;z-index:150;left:50%;bottom:calc(92px + env(safe-area-inset-bottom));transform:translate(-50%,12px);background:#173854;color:#fff;border-radius:14px;padding:11px 16px;font-size:13px;box-shadow:0 12px 30px rgba(23,56,84,.25);opacity:0;transition:.2s}.doit-toast.show{opacity:1;transform:translate(-50%,0)}.gs-bottom button{border:0;background:transparent;font-family:inherit}.gs-nav{cursor:pointer}
@media(max-width:520px){.gs-app{padding-left:16px;padding-right:16px}.gs-hero{padding:24px 21px}.gs-hero h1{font-size:27px}.doit-login__card{padding:23px;border-radius:24px}.gs-card{padding:16px;min-height:128px}.gs-card span{font-size:11.5px}}

/* login visual v1.3 */
.doit-login{margin:0 -18px -100px;min-height:100vh;padding:32px 18px 0;background:radial-gradient(circle at 5% 16%,rgba(66,145,255,.09) 0 90px,transparent 91px),radial-gradient(circle at 96% 22%,rgba(66,145,255,.07) 0 75px,transparent 76px),linear-gradient(180deg,#f9fcff 0%,#f3f8fd 70%,#fff 100%);display:flex;flex-direction:column;align-items:center}.login-brand{text-align:center;margin:4px 0 26px}.login-dmark{width:72px;height:72px;margin:0 auto 10px;border-radius:18px 34px 18px 18px;background:linear-gradient(145deg,#378cff,#0869e8);color:#fff;font-size:46px;font-weight:1000;line-height:72px;box-shadow:0 12px 28px rgba(28,112,226,.22)}.login-brand strong{display:block;font-size:28px;letter-spacing:-1.5px;color:#102f4d}.login-brand span{display:block;margin-top:2px;font-size:11px;font-weight:900;letter-spacing:.34em;color:#24496c}.login-brand p{margin:18px 0 0;color:#647b90;font-size:15px;line-height:1.55}.doit-login__card{width:min(100%,500px);padding:25px 24px 22px;border:1px solid rgba(221,233,243,.9);border-radius:27px;box-shadow:0 16px 45px rgba(36,82,119,.09);background:rgba(255,255,255,.96)}.doit-login__card .eyebrow{margin:0 0 5px;color:#24496c}.doit-login__card h1{font-size:30px;letter-spacing:-1.3px;color:#102f4d}.doit-login__card h1 em{font-style:normal;color:#1475e8}.doit-login__card>p:not(.eyebrow){margin:12px 0 19px;color:#62788c;line-height:1.55;font-size:14px}.doit-login__card form>label{margin:11px 0 0}.doit-login__card form>label>span{display:none}.login-field{height:55px;display:flex;align-items:center;border:1px solid #dbe5ed;border-radius:14px;background:#fff;box-shadow:0 4px 12px rgba(31,69,101,.04);overflow:hidden}.login-field b{width:48px;text-align:center;color:#8294a4;font-size:20px}.doit-login .login-field input{height:100%;margin:0;padding:0 14px 0 0;border:0!important;background:transparent!important;box-shadow:none!important;flex:1;font-size:15px}.login-options{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:13px 2px 15px;font-size:12px;color:#294c6c}.login-options label{display:flex!important;align-items:center;gap:6px;margin:0!important;font-weight:700!important}.login-options input{width:17px!important;height:17px!important;margin:0!important;accent-color:#1475e8}.login-options a{font-weight:700;color:#294c6c;white-space:nowrap}.doit-login form>button{height:55px;margin:0;border-radius:28px;background:linear-gradient(100deg,#1682f5,#0759bf);box-shadow:0 10px 22px rgba(16,111,221,.2);font-size:17px}.doit-login form>button b{font-size:25px;vertical-align:-2px;margin-left:5px}.login-divider{display:flex;align-items:center;gap:12px;margin:14px 0;color:#91a1af;font-size:11px}.login-divider:before,.login-divider:after{content:"";height:1px;background:#e1e8ee;flex:1}.login-join{height:45px;border:1px solid #8cbdf3;border-radius:23px;display:flex;align-items:center;justify-content:center;color:#126bcf;font-size:14px;font-weight:900}.login-features{display:grid;grid-template-columns:repeat(4,1fr);gap:5px;margin-top:20px;text-align:center}.login-features div{min-width:0}.login-features i{width:42px;height:42px;margin:0 auto 7px;border-radius:50%;display:grid;place-items:center;background:#e8f2ff;color:#1675df;font-style:normal;font-size:19px}.login-features div:nth-child(2) i{background:#e8f8ed;color:#13a64c}.login-features div:nth-child(3) i{background:#f0ebff;color:#7452dd}.login-features div:nth-child(4) i{background:#fff1e5;color:#ed7b18}.login-features b{display:block;font-size:11px;color:#173854;white-space:nowrap}.login-wave{width:calc(100% + 36px);min-height:150px;margin:18px -18px 0;padding:42px 20px calc(28px + env(safe-area-inset-bottom));text-align:center;color:#fff;background:linear-gradient(135deg,#62a2ff,#2477df);border-radius:50% 50% 0 0/28% 28% 0 0}.login-wave strong{display:block;font-size:13px;font-weight:600}.login-wave span{display:block;margin-top:19px;font-size:10px;letter-spacing:.3em}.doit-login[hidden]{display:none!important}
@media(max-width:520px){.gs-app:has(.doit-login:not([hidden])){padding-top:calc(env(safe-area-inset-top) + 10px)}.gs-app:has(.doit-login:not([hidden])) .gs-top{margin-bottom:0}.doit-login{margin-left:-16px;margin-right:-16px;padding:24px 16px 0}.login-brand{margin-bottom:20px}.login-dmark{width:62px;height:62px;line-height:62px;font-size:40px}.login-brand strong{font-size:25px}.login-brand p{margin-top:13px;font-size:14px}.doit-login__card{padding:22px 19px 19px;border-radius:24px}.doit-login__card h1{font-size:27px}.login-field{height:52px}.login-features i{width:39px;height:39px}.login-wave{width:calc(100% + 32px);margin-left:-16px;margin-right:-16px;min-height:135px}}

/* final login details + compact footer */
.doit-login form>button{display:flex;align-items:center;justify-content:center;gap:10px}.login-key{width:22px;height:22px;fill:none;stroke:#fff;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}.login-join{gap:4px}.login-wave{min-height:98px!important;padding:26px 20px calc(14px + env(safe-area-inset-bottom))!important;margin-bottom:0!important;border-radius:50% 50% 0 0/22% 22% 0 0!important}.login-wave__slogan{display:flex;align-items:center;justify-content:center;gap:12px}.login-wave__slogan strong{margin:0!important}.paper-plane{width:58px;height:34px;fill:none;stroke:rgba(255,255,255,.9);stroke-width:2;stroke-linecap:round;stroke-linejoin:round;flex:0 0 auto}.login-wave>span{margin-top:10px!important}.doit-login{padding-bottom:0!important}.gs-app:has(.doit-login:not([hidden])){padding-bottom:0!important}.gs-app:has(.doit-login:not([hidden]))+ .gs-bottom{display:none!important}body:has(.doit-login:not([hidden])){padding-bottom:0!important}
@media(max-width:520px){.login-wave{min-height:90px!important;padding-top:22px!important}.paper-plane{width:52px;height:31px}.login-wave__slogan{gap:9px}}

/* Prevent iOS Safari from zooming when a login field receives focus. */
@media(max-width:520px){.doit-login .login-field input{font-size:16px!important}}

/* v1.3.4 login icon refinements */
.gs-logo-d{display:grid;place-items:center;background:linear-gradient(145deg,#378cff,#0869e8);color:#fff;font-size:27px;font-weight:1000;line-height:1;border-radius:13px 23px 13px 13px}
.login-field b{display:grid;place-items:center}.login-field b svg{width:21px;height:21px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.login-user{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}

/* v1.3.5 light slogan artwork and hero readability */
@font-face{font-family:'Doit Pen';src:url('/wp-content/plugins/gsedu-pwa/assets/fonts/NanumPenScript-doit.woff2') format('woff2');font-weight:400;font-style:normal;font-display:swap}
.doit-hero-title{position:relative;z-index:1}
.login-wave{min-height:190px!important;padding:27px 20px calc(22px + env(safe-area-inset-bottom))!important;background:radial-gradient(ellipse at -8% 2%,rgba(255,255,255,.94) 0 43%,transparent 44%),linear-gradient(135deg,#f8fcff 0%,#e5f3ff 55%,#e7edff 100%)!important;color:#3e92d0!important;border-radius:0!important}
.login-wave__slogan{display:grid!important;grid-template-columns:minmax(0,1fr) 128px;align-items:center!important;gap:2px!important;width:min(100%,500px);margin:0 auto;text-align:center}
.login-wave__slogan strong{font-family:'Doit Pen','Nanum Pen Script',cursive!important;font-size:31px!important;line-height:1.34!important;font-weight:400!important;color:#3e92d0;transform:rotate(-2deg)}
.paper-plane{width:128px!important;height:auto!important;stroke:#58a7da!important;stroke-width:3!important;overflow:visible}
.paper-plane__trail{stroke-dasharray:6 8;stroke-width:2.5}.paper-plane__body,.paper-plane__fold{stroke-width:3.2}
@media(max-width:520px){.login-wave{min-height:176px!important;padding-top:24px!important}.login-wave__slogan{grid-template-columns:minmax(0,1fr) 105px}.login-wave__slogan strong{font-size:27px!important}.paper-plane{width:105px!important}}

/* v1.3.7 dashboard welcome layout */
.doit-hero-head{display:flex;align-items:center;justify-content:space-between;gap:12px;position:relative;z-index:1}.doit-hero-head .doit-hero-title{min-width:0;margin:0;font-size:23px;line-height:1.35}.doit-hero-message{position:relative;z-index:1;margin-top:20px!important;font-size:19px!important;line-height:1.55!important;font-weight:700;letter-spacing:-.55px;opacity:1!important}.doit-logout{flex:0 0 auto;min-height:38px!important;padding:0 12px!important;font-size:13px!important}.doit-hero .gs-user-actions{justify-content:center}.doit-continue{width:min(260px,100%);min-height:48px!important}
@media(max-width:520px){.doit-hero-head .doit-hero-title{font-size:21px}.doit-hero-message{font-size:19px!important}.doit-logout{padding:0 10px!important}.doit-continue{width:min(260px,100%)}}

/* v1.3.8 centered join label and full-height login footer */
.login-join{position:relative;display:grid;place-items:center;text-align:center}.login-join .login-user{position:absolute;right:calc(50% + 36px)}
.login-wave{margin-top:0!important}

/* v1.3.11 remove space below login slogan */
.login-wave{min-height:0!important;padding-bottom:27px!important}
@media(max-width:520px){.login-wave{padding-bottom:24px!important}}

/* v1.3.12 one continuous login background with no trailing layout gap */
.gs-app:has(.doit-login:not([hidden])){min-height:0!important}
.doit-login{min-height:0!important;background:radial-gradient(circle at 5% 16%,rgba(66,145,255,.09) 0 90px,transparent 91px),radial-gradient(circle at 96% 22%,rgba(66,145,255,.07) 0 75px,transparent 76px),linear-gradient(180deg,#f9fcff 0%,#eef8ff 58%,#e7edff 100%)!important}
.login-wave{background:transparent!important}
/* Classroom v1.5 */
.doit-classroom[hidden],.doit-dashboard[hidden]{display:none!important}
.doit-back,.doit-refresh{border:0;background:transparent;color:#35638b;cursor:pointer;min-height:44px;padding:8px 0;font-weight:700}
.doit-classroom-head{display:flex;justify-content:space-between;align-items:center;gap:20px;margin:12px 0 20px}.doit-classroom-head .eyebrow{margin:0 0 8px;font-size:11px;letter-spacing:2px}.doit-classroom-head h1{margin:0;font-size:32px;letter-spacing:-1px}.doit-classroom-head p:last-child{margin:10px 0 0;color:#657d92;font-size:14px}.doit-book-icon{display:grid;place-items:center;width:64px;height:64px;border-radius:22px;background:#e0effa;color:#276eab;font-size:34px;flex-shrink:0}
.doit-learning-note{padding:12px 15px;background:#eaf2f8;border-radius:12px;color:#496780;font-size:12px;line-height:1.65;margin-bottom:22px}.doit-course-search span{display:block;font-size:13px;font-weight:700;margin-bottom:8px}.doit-course-search input{width:100%;min-height:50px;padding:12px 16px;background:white;border:1px solid #d9e5ee;border-radius:14px;font-size:16px;color:#173854}.doit-course-search input:focus{outline:2px solid #3077b6;outline-offset:2px}
.doit-course-filters{display:flex;gap:8px;flex-wrap:wrap;margin:16px 0 4px}.doit-course-filters button{padding:10px 14px;min-height:44px;border:1px solid #d9e5ee;border-radius:24px;background:#fff;color:#496780;font-size:13px;cursor:pointer;white-space:nowrap}.doit-course-filters button[aria-pressed=true]{background:#173854;border-color:#173854;color:white}.doit-course-toolbar{display:flex;align-items:center;justify-content:space-between;color:#657d92;font-size:12px;margin:8px 0}.doit-refresh{font-size:12px}
.doit-classroom .doit-course-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.doit-classroom .doit-course{display:flex;flex-direction:column;padding:22px;min-width:0}.doit-course__meta{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:11px}.doit-course-tag{background:#eaf4fc;color:#276eab;border-radius:7px;padding:5px 8px;font-weight:700}.doit-course-state{color:#708497}.doit-course-name{font-size:17px;line-height:1.5;letter-spacing:-.4px;margin:16px 0 10px;overflow-wrap:anywhere}.doit-course-detail{font-size:12px;color:#708497;margin:0 0 20px;line-height:1.6}.doit-course-open{display:block;margin-top:auto;text-align:center;min-height:44px;padding:12px;background:#eef5fa;color:#205983;border-radius:11px;font-size:13px;font-weight:800}.doit-course-open:hover{background:#dcecf8}.doit-classroom .doit-empty{grid-column:1/-1;padding:34px 20px;line-height:1.7}.doit-classroom button:focus-visible,.doit-course-open:focus-visible{outline:3px solid #4688c2;outline-offset:3px}
@media(max-width:520px){.doit-classroom .doit-course-grid{grid-template-columns:1fr}.doit-classroom-head h1{font-size:28px}.doit-classroom .doit-course{padding:20px}.doit-course-filters{gap:6px}.doit-course-filters button{padding:10px 12px;font-size:12px}}
@media(prefers-reduced-motion:reduce){.doit-skeleton{animation:none}}

.gs-card.app-module:not(.gs-wide){display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start}.gs-card.app-module:not(.gs-wide) .gs-icon{flex-shrink:0}

/* Compact welcome typography. */
.doit-hero-head .doit-hero-title{font-size:19px;line-height:1.4;word-break:keep-all;overflow-wrap:break-word}.doit-hero-message{font-size:15px!important;line-height:1.6!important;font-weight:500;margin-top:14px!important;word-break:keep-all;overflow-wrap:break-word}@media(max-width:520px){.doit-hero-head .doit-hero-title{font-size:17px}.doit-hero-message{font-size:14px!important}}

/* Classroom installation banner, separate from the course list. */
.doit-install-card{margin:0 0 20px;padding:20px;border:1px solid #b9d9fb;border-radius:24px;background:linear-gradient(115deg,#f0f8ff,#eaf3ff);color:#173854}
.doit-install-card[hidden]{display:none!important}
.doit-install-card-head{display:flex;align-items:center;gap:16px;margin-bottom:16px}
.doit-install-mark{display:grid;place-items:center;flex:0 0 58px;height:58px;border-radius:19px;background:linear-gradient(140deg,#398eff,#1769e8);color:white;font-size:38px;font-weight:900;box-shadow:0 6px 14px #1f70cf20}
.doit-install-card h2{margin:0;font-size:18px;line-height:1.45;word-break:keep-all}
.doit-install-card p{margin:5px 0 0;font-size:14px;line-height:1.55;color:#65829b;word-break:keep-all}
.doit-install-card button{width:100%;min-height:48px;padding:12px 16px;border:0;border-radius:14px;background:#173854;color:white;font:inherit;font-size:15px;font-weight:700;cursor:pointer}
.doit-install-card button span{margin-left:8px}
.doit-install-card button:focus-visible{outline:3px solid #348ded;outline-offset:3px}
@media(max-width:420px){.doit-install-card{padding:16px}.doit-install-card-head{gap:12px}.doit-install-mark{flex-basis:48px;height:48px;font-size:32px;border-radius:16px}.doit-install-card h2{font-size:16px}.doit-install-card p{font-size:13px}}

/* Persistent app menu surfaces. */
.doit-tab-screen[hidden],.doit-tab-loading[hidden]{display:none!important}
body.doit-tab-open{overflow:hidden}
body.doit-tab-open .gs-top{display:none}
.doit-tab-screen{position:fixed;inset:0 0 calc(80px + env(safe-area-inset-bottom,0px));background:#f5f9fc;z-index:100}
.doit-tab-frames,.doit-tab-frames iframe{width:100%;height:100%;border:0;display:block;background:#f5f9fc}
.doit-tab-frames iframe[hidden]{display:none!important}
.doit-tab-loading{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;gap:10px;background:#f5f9fc;color:#355570;z-index:1;font-size:15px;pointer-events:none}
.doit-tab-loading span{width:18px;height:18px;border:2px solid #cbdff0;border-top-color:#2478bf;border-radius:50%;animation:doit-tab-spin .8s linear infinite}
@keyframes doit-tab-spin{to{transform:rotate(360deg)}}
body.doit-tab-open .gs-bottom{z-index:200}
