:root{
  --brand:#5b5ce2;
  --brand-2:#7b61ff;
  --brand-soft:#eeefff;
  --ink:#1c2033;
  --muted:#71778e;
  --line:#e7e9f2;
  --surface:#ffffff;
  --surface-2:#f7f8fc;
  --surface-3:#f0f2f8;
  --success:#20a574;
  --warning:#f0a22e;
  --danger:#e05266;
  --shadow:0 18px 50px rgba(37,43,75,.10);
  --shadow-soft:0 8px 26px rgba(37,43,75,.07);
  --radius:22px;
  --sidebar-width:286px;
  --topbar-height:74px;
  --font:"Pretendard Variable","Pretendard","Noto Sans KR","Apple SD Gothic Neo","Malgun Gothic",sans-serif;
}
*{box-sizing:border-box}
html{font-family:var(--font);color:var(--ink);background:var(--surface-2);-webkit-text-size-adjust:100%;text-rendering:optimizeLegibility}
body{margin:0;min-width:320px;min-height:100vh;background:linear-gradient(180deg,#f8f8fd 0,#f2f4fa 100%);overflow-x:hidden}
button,input,select,textarea{font:inherit}
button{cursor:pointer}
a{color:inherit;text-decoration:none}
img{max-width:100%;display:block}
[hidden]{display:none!important}
::selection{background:rgba(91,92,226,.2)}

.boot-screen{min-height:100vh;display:grid;place-items:center;align-content:center;gap:14px;color:var(--muted)}
.boot-mark,.brand-mark{width:48px;height:48px;border-radius:16px;display:grid;place-items:center;background:linear-gradient(145deg,var(--brand),var(--brand-2));color:#fff;font-weight:900;box-shadow:0 12px 28px rgba(91,92,226,.28)}

/* Login */
.login-shell{min-height:100vh;display:grid;grid-template-columns:minmax(0,1.05fr) minmax(430px,.95fr);background:#fff}
.login-visual{position:relative;overflow:hidden;padding:56px clamp(36px,6vw,92px);display:flex;flex-direction:column;justify-content:space-between;color:#fff;background:radial-gradient(circle at 18% 20%,rgba(255,255,255,.25),transparent 26%),radial-gradient(circle at 80% 68%,rgba(255,190,135,.32),transparent 24%),linear-gradient(145deg,#4e51d9 0,#785de8 50%,#3e9cb8 100%);background-size:cover;background-position:center}
.login-visual:after{content:"";position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.035) 1px,transparent 1px);background-size:32px 32px;pointer-events:none}
.login-brand{position:relative;z-index:1;display:flex;align-items:center;gap:14px;font-size:20px;font-weight:900}
.login-brand .brand-mark{background:rgba(255,255,255,.18);box-shadow:none;border:1px solid rgba(255,255,255,.25)}
.login-copy{position:relative;z-index:1;max-width:680px;margin:80px 0}
.login-eyebrow{display:inline-flex;padding:8px 12px;border:1px solid rgba(255,255,255,.3);border-radius:999px;background:rgba(255,255,255,.1);font-size:12px;font-weight:800;letter-spacing:.16em}
.login-copy h1{font-size:clamp(42px,5vw,72px);line-height:1.08;margin:24px 0 20px;letter-spacing:-.055em}
.login-copy p{font-size:18px;line-height:1.75;color:rgba(255,255,255,.84);max-width:580px;margin:0}
.login-feature-grid{position:relative;z-index:1;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.login-feature{padding:18px;border-radius:18px;background:rgba(255,255,255,.13);border:1px solid rgba(255,255,255,.16);backdrop-filter:blur(12px)}
.login-feature b{display:block;font-size:14px;margin-bottom:6px}.login-feature span{font-size:12px;color:rgba(255,255,255,.72);line-height:1.5}
.login-panel{padding:44px clamp(28px,5vw,74px);display:flex;align-items:center;justify-content:center;background:linear-gradient(180deg,#fff 0,#fbfbfe 100%)}
.login-box{width:min(100%,520px)}
.login-box h2{font-size:34px;letter-spacing:-.04em;margin:0 0 10px}.login-box>p{color:var(--muted);line-height:1.7;margin:0 0 28px}
.login-tabs{display:grid;grid-template-columns:1fr 1fr;padding:5px;background:var(--surface-3);border-radius:14px;margin-bottom:24px}
.login-tab{border:0;background:transparent;padding:12px;border-radius:10px;font-weight:800;color:var(--muted)}.login-tab.active{background:#fff;color:var(--brand);box-shadow:var(--shadow-soft)}
.sample-note{margin-top:18px;padding:14px 16px;border-radius:14px;background:#f4f5ff;border:1px solid #e2e4ff;color:#5b5f82;font-size:13px;line-height:1.65}

/* Shell */
.app-shell{min-height:100vh;display:grid;grid-template-columns:var(--sidebar-width) minmax(0,1fr);grid-template-rows:var(--topbar-height) minmax(0,1fr)}
.sidebar{grid-row:1/-1;grid-column:1;position:sticky;top:0;height:100vh;z-index:80;background:rgba(255,255,255,.96);border-right:1px solid var(--line);display:flex;flex-direction:column;min-width:0;backdrop-filter:blur(20px)}
.sidebar-head{height:var(--topbar-height);display:flex;align-items:center;gap:13px;padding:0 20px;border-bottom:1px solid var(--line);flex:0 0 auto;min-width:0}
.sidebar-head-copy{min-width:0}.sidebar-head-copy strong{display:block;font-size:18px;letter-spacing:-.03em}.sidebar-head-copy span{display:block;font-size:11px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:3px}
.sidebar-close{display:none;margin-left:auto}
.role-card{margin:14px 14px 6px;padding:13px 14px;border-radius:17px;background:linear-gradient(135deg,var(--brand-soft),#f8f5ff);border:1px solid rgba(91,92,226,.14);display:flex;align-items:center;gap:11px;min-width:0;flex:0 0 auto}
.role-dot{width:10px;height:10px;border-radius:50%;background:var(--brand);box-shadow:0 0 0 6px rgba(91,92,226,.12);flex:0 0 auto}.role-card div{min-width:0}.role-card strong{display:block;font-size:13px}.role-card span{display:block;font-size:11px;color:var(--muted);margin-top:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.nav-scroll{padding:10px 10px 18px;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;flex:1;min-height:0;scrollbar-width:thin}
.nav-group{margin-bottom:15px}.nav-caption{height:24px;display:flex;align-items:center;padding:0 12px;font-size:10px;font-weight:900;letter-spacing:.14em;color:#a1a6b8;text-transform:uppercase;white-space:nowrap}
.nav-item{width:100%;height:46px;border:0;background:transparent;border-radius:14px;padding:0 12px;display:flex;align-items:center;gap:11px;color:#5f657a;font-weight:750;text-align:left;min-width:0;position:relative;margin:2px 0;transition:.16s ease}
.nav-item:hover{background:#f5f6fb;color:var(--ink)}.nav-item.active{background:linear-gradient(135deg,var(--brand),var(--brand-2));color:#fff;box-shadow:0 10px 24px rgba(91,92,226,.24)}
.nav-icon{width:24px;height:24px;border-radius:8px;display:grid;place-items:center;flex:0 0 24px;font-size:15px;background:rgba(91,92,226,.08)}.nav-item.active .nav-icon{background:rgba(255,255,255,.16)}
.nav-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.1;min-width:0;display:block}.nav-count{margin-left:auto;min-width:20px;height:20px;padding:0 6px;border-radius:999px;background:#eeeff6;color:#686e82;display:grid;place-items:center;font-size:10px;flex:0 0 auto}.nav-item.active .nav-count{background:rgba(255,255,255,.2);color:#fff}
.sidebar-foot{padding:12px 14px 18px;border-top:1px solid var(--line);background:#fff;flex:0 0 auto;min-width:0}.mini-user{display:flex;align-items:center;gap:10px;min-width:0;margin-bottom:10px}.mini-user>div{min-width:0}.mini-user>div>strong,.mini-user>div>span{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mini-user strong{font-size:13px}.mini-user>div>span{font-size:11px;color:var(--muted);margin-top:3px}
.topbar{grid-column:2;grid-row:1;position:sticky;top:0;z-index:60;height:var(--topbar-height);display:flex;align-items:center;justify-content:space-between;padding:0 clamp(20px,3vw,42px);background:rgba(247,248,252,.9);backdrop-filter:blur(18px);border-bottom:1px solid rgba(231,233,242,.85)}
.topbar-left{display:flex;align-items:center;gap:14px;min-width:0}.menu-toggle{display:none}.page-title{min-width:0}.page-title small{display:block;color:var(--brand);font-size:10px;font-weight:900;letter-spacing:.14em}.page-title h1{font-size:22px;margin:3px 0 0;letter-spacing:-.035em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.topbar-actions{display:flex;align-items:center;gap:9px}.point-pill{height:38px;padding:0 13px;border-radius:999px;background:#fff;border:1px solid var(--line);display:flex;align-items:center;gap:7px;font-size:12px;font-weight:850;white-space:nowrap}.point-pill:before{content:"P";display:grid;place-items:center;width:22px;height:22px;border-radius:50%;background:#fff3c8;color:#936a00;font-size:11px}
.main{grid-column:2;grid-row:2;min-width:0;min-height:0}.content{width:min(1520px,100%);margin:0 auto;padding:28px clamp(18px,3vw,42px) 72px}.page-stack{display:flex;flex-direction:column;gap:22px}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:18px;min-width:0}.page-head h2{font-size:30px;margin:0 0 8px;letter-spacing:-.045em}.page-head p{margin:0;color:var(--muted);line-height:1.65;max-width:760px}.page-head-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}

/* Core UI */
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-soft);padding:22px;min-width:0}.card-flat{box-shadow:none}.card-dark{background:#23263a;color:#fff;border-color:#23263a}.card-soft{background:linear-gradient(145deg,#fff,#f7f7ff)}
.grid{display:grid;gap:16px;min-width:0}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-auto{grid-template-columns:repeat(auto-fit,minmax(250px,1fr))}.span-2{grid-column:span 2}.span-full{grid-column:1/-1}
.section-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:16px}.section-head h3{font-size:19px;margin:0 0 6px;letter-spacing:-.03em}.section-head p{margin:0;color:var(--muted);font-size:13px;line-height:1.55}.section-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.btn{border:0;height:42px;border-radius:13px;padding:0 16px;display:inline-flex;align-items:center;justify-content:center;gap:7px;font-weight:850;font-size:13px;white-space:nowrap;transition:.15s ease}.btn:hover{transform:translateY(-1px)}.btn:disabled{opacity:.45;cursor:not-allowed;transform:none}.btn-primary{background:linear-gradient(135deg,var(--brand),var(--brand-2));color:#fff;box-shadow:0 8px 20px rgba(91,92,226,.2)}.btn-soft{background:var(--brand-soft);color:var(--brand)}.btn-outline{background:#fff;border:1px solid var(--line);color:#4f556b}.btn-ghost{background:transparent;color:#656b7f}.btn-good{background:#e7f8f1;color:#157d59}.btn-warn{background:#fff3de;color:#a76c11}.btn-danger{background:#fff0f2;color:#bc3c53}.btn-dark{background:#25283d;color:#fff}.btn-sm{height:34px;border-radius:10px;padding:0 11px;font-size:11px}.btn-lg{height:50px;border-radius:15px;padding:0 21px;font-size:14px}.btn-block{width:100%}.btn.active{box-shadow:inset 0 0 0 2px currentColor}.icon-btn{width:40px;height:40px;border-radius:13px;border:1px solid var(--line);background:#fff;display:grid;place-items:center;font-size:18px;color:#52586c}.icon-btn:hover{background:#f5f6fb}
.avatar{width:40px;height:40px;border-radius:14px;background:linear-gradient(135deg,var(--brand),var(--brand-2));display:grid;place-items:center;color:#fff;font-weight:900;overflow:hidden;flex:0 0 auto}.avatar img{width:100%;height:100%;object-fit:cover}.avatar-lg{width:70px;height:70px;border-radius:22px;font-size:24px}.avatar-xl{width:92px;height:92px;border-radius:28px;font-size:32px}
.badge{display:inline-flex;align-items:center;height:26px;border-radius:999px;padding:0 9px;background:#f1f2f7;color:#646b80;font-size:10px;font-weight:900;white-space:nowrap}.badge-brand{background:var(--brand-soft);color:var(--brand)}.badge-good{background:#e7f8f1;color:#177c59}.badge-warn{background:#fff3df;color:#a56a0f}.badge-danger{background:#ffedf0;color:#bd3e55}.badge-dark{background:#303348;color:#fff}.badge-free{background:#e8fff4;color:#14815a}.badge-line{background:#fff;border:1px solid var(--line)}
.muted{color:var(--muted)}.small{font-size:12px}.tiny{font-size:10px}.strong{font-weight:900}.text-brand{color:var(--brand)}.text-good{color:var(--success)}.text-danger{color:var(--danger)}.nowrap{white-space:nowrap}.mt-1{margin-top:8px}.mt-2{margin-top:16px}.mt-3{margin-top:24px}.mb-0{margin-bottom:0}.divider{height:1px;background:var(--line);margin:18px 0}.button-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.chip-row{display:flex;gap:7px;flex-wrap:wrap}.chip{display:inline-flex;align-items:center;gap:5px;padding:7px 10px;border-radius:999px;background:#f3f4f8;color:#5f6578;font-size:11px;font-weight:800}
.stat-card{position:relative;overflow:hidden}.stat-label{font-size:12px;color:var(--muted);font-weight:750}.stat-value{font-size:30px;font-weight:950;letter-spacing:-.045em;margin:12px 0 6px}.stat-note{font-size:11px;color:#8a90a2}.stat-orb{position:absolute;right:18px;top:18px;width:44px;height:44px;border-radius:16px;background:var(--brand-soft);display:grid;place-items:center;color:var(--brand);font-size:20px}
.list{display:flex;flex-direction:column;gap:9px}.list-row{display:flex;align-items:center;gap:13px;padding:13px;border:1px solid var(--line);border-radius:15px;background:#fff;min-width:0}.list-row:hover{border-color:#d6d8e8}.list-main{min-width:0;flex:1}.list-main strong{display:block;font-size:13px;line-height:1.45}.list-main p{margin:4px 0 0;color:var(--muted);font-size:11px;line-height:1.5}.empty{padding:38px 22px;text-align:center;border:1px dashed #d7d9e5;border-radius:18px;background:#fbfbfd;color:var(--muted)}.empty-icon{font-size:34px;margin-bottom:10px}.empty strong{display:block;color:var(--ink);margin-bottom:6px}
.progress{height:9px;border-radius:999px;background:#eceef5;overflow:hidden}.progress span{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--brand),#61b5da)}.progress-meta{display:flex;justify-content:space-between;margin-top:7px;color:var(--muted);font-size:10px}.progress-meta strong{color:var(--ink)}

/* Forms */
.field{display:flex;flex-direction:column;gap:7px;min-width:0}.field>span{font-size:11px;font-weight:850;color:#565c70}.field small{font-size:10px;color:var(--muted);line-height:1.5}.input,.select,.textarea{width:100%;border:1px solid #dfe2ec;background:#fff;color:var(--ink);border-radius:13px;outline:none;transition:.15s ease}.input,.select{height:45px;padding:0 13px}.textarea{min-height:110px;padding:12px 13px;resize:vertical;line-height:1.6}.input:focus,.select:focus,.textarea:focus{border-color:var(--brand);box-shadow:0 0 0 4px rgba(91,92,226,.1)}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.form-stack{display:flex;flex-direction:column;gap:14px}.check-row{display:flex;align-items:flex-start;gap:9px;font-size:12px;line-height:1.5;color:#555b70}.check-row input{margin-top:3px;accent-color:var(--brand)}.switch-row{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:12px 0}.switch{position:relative;width:44px;height:25px;flex:0 0 auto}.switch input{opacity:0;width:0;height:0}.switch span{position:absolute;inset:0;border-radius:999px;background:#d8dbe6;transition:.2s}.switch span:after{content:"";position:absolute;width:19px;height:19px;left:3px;top:3px;border-radius:50%;background:#fff;box-shadow:0 2px 5px rgba(0,0,0,.18);transition:.2s}.switch input:checked+span{background:var(--brand)}.switch input:checked+span:after{transform:translateX(19px)}

/* Tabs */
.tabs{display:flex;gap:5px;padding:5px;background:#eceef5;border-radius:14px;overflow-x:auto;max-width:100%;scrollbar-width:none}.tabs::-webkit-scrollbar{display:none}.tab{border:0;background:transparent;color:#6e7488;height:36px;border-radius:10px;padding:0 13px;font-size:11px;font-weight:850;white-space:nowrap}.tab.active{background:#fff;color:var(--brand);box-shadow:0 4px 12px rgba(40,44,70,.08)}
.filter-bar{display:flex;align-items:center;gap:9px;flex-wrap:wrap}.search{min-width:240px;flex:1;position:relative}.search .input{padding-left:38px}.search:before{content:"⌕";position:absolute;left:13px;top:11px;color:#9297a7;z-index:1}

/* Student home */
.student-hero{position:relative;min-height:270px;border-radius:28px;overflow:hidden;padding:34px;color:#fff;display:flex;align-items:flex-end;background:radial-gradient(circle at 80% 15%,rgba(255,255,255,.26),transparent 25%),linear-gradient(135deg,#5357db,#7d5ee8 55%,#4aa6b8);background-size:cover;background-position:center;box-shadow:var(--shadow)}.student-hero:before{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(24,27,65,.72),rgba(24,27,65,.18))}.student-hero-content{position:relative;z-index:1;max-width:700px}.student-hero h2{font-size:34px;line-height:1.22;letter-spacing:-.045em;margin:12px 0}.student-hero p{font-size:15px;line-height:1.65;color:rgba(255,255,255,.84);margin:0}.student-hero-actions{position:absolute;right:22px;top:22px;z-index:2}.student-hero .btn-outline{background:rgba(255,255,255,.15);border-color:rgba(255,255,255,.28);color:#fff;backdrop-filter:blur(8px)}
.today-flow{display:flex;flex-direction:column;gap:10px}.flow-item{display:grid;grid-template-columns:72px minmax(0,1fr) auto;align-items:center;gap:12px;padding:14px;border:1px solid var(--line);border-radius:17px;background:#fff}.flow-time{height:38px;border-radius:12px;background:#f4f5fb;display:grid;place-items:center;font-size:11px;font-weight:900}.flow-item.done{border-color:#bfe8d7;background:#f8fffb}.flow-item.missed{border-color:#f4c7cf;background:#fffafb}.flow-title{min-width:0}.flow-title strong{display:block;font-size:13px}.flow-title span{display:block;font-size:11px;color:var(--muted);margin-top:4px}.flow-actions{display:flex;gap:6px}.flow-actions .btn{height:34px;padding:0 10px}
.attendance-card{background:linear-gradient(145deg,#fff9e7,#fff);border-color:#f1e2b2}.reward-rule{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.reward-rule div{padding:14px;border-radius:15px;background:#fff;border:1px solid var(--line)}.reward-rule b{display:block;font-size:18px}.reward-rule span{font-size:10px;color:var(--muted);line-height:1.5}

/* Habit DNA */
.habit-result{display:grid;grid-template-columns:170px minmax(0,1fr);gap:24px;align-items:center;background:linear-gradient(145deg,#fff,#f7f5ff)}.habit-animal{width:150px;height:150px;border-radius:42px;display:grid;place-items:center;font-size:78px;position:relative;overflow:hidden}.habit-animal:after{content:"";position:absolute;width:86px;height:18px;border-radius:50%;background:rgba(50,50,80,.08);bottom:16px;filter:blur(3px)}.habit-animal span{position:relative;z-index:1;filter:drop-shadow(0 8px 10px rgba(50,50,90,.15))}.habit-type-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.habit-type-card{padding:18px;border:1px solid var(--line);border-radius:20px;background:#fff;position:relative;overflow:hidden}.habit-type-card .animal{font-size:42px;margin-bottom:12px}.habit-type-card h4{margin:0 0 6px;font-size:15px}.habit-type-card p{margin:0;color:var(--muted);font-size:11px;line-height:1.55}.tip-rotator{padding:16px;border-radius:16px;background:var(--brand-soft);color:#4e5280;font-size:13px;line-height:1.65;min-height:74px;display:flex;align-items:center}.question-card{padding:17px;border:1px solid var(--line);border-radius:17px;background:#fff}.question-card strong{display:block;line-height:1.6;font-size:13px}.scale{display:grid;grid-template-columns:repeat(5,1fr);gap:7px;margin-top:12px}.scale label{cursor:pointer;text-align:center}.scale input{position:absolute;opacity:0}.scale span{height:38px;border:1px solid var(--line);border-radius:11px;display:grid;place-items:center;font-size:11px;font-weight:850}.scale input:checked+span{background:var(--brand);border-color:var(--brand);color:#fff}.scale-labels{display:flex;justify-content:space-between;font-size:9px;color:var(--muted);margin-top:6px}

/* Library / resources */
.resource-card{display:flex;flex-direction:column;gap:14px;min-height:230px}.resource-top{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.resource-icon{width:48px;height:48px;border-radius:16px;background:linear-gradient(135deg,#eef0ff,#f9f4ff);display:grid;place-items:center;font-size:22px}.resource-card h4{font-size:16px;margin:0;line-height:1.45}.resource-card p{font-size:11px;line-height:1.65;color:var(--muted);margin:0}.resource-meta{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:auto}.source-line{display:flex;align-items:center;gap:8px;font-size:11px;color:var(--muted)}

/* Calendar */
.calendar-shell{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:16px}.calendar-main{min-width:0}.calendar-toolbar{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:14px}.calendar-title{font-size:22px;font-weight:950;letter-spacing:-.035em}.calendar-nav{display:flex;gap:6px}.calendar-weekdays{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px;margin-bottom:6px}.calendar-weekdays span{text-align:center;padding:8px 0;font-size:10px;font-weight:900;color:#979cad}.month-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}.day-cell{min-height:112px;border:1px solid var(--line);border-radius:15px;background:#fff;padding:9px;text-align:left;position:relative;overflow:hidden}.day-cell:hover{border-color:#b8bce1;box-shadow:0 7px 18px rgba(41,46,80,.08)}.day-cell.other{opacity:.42}.day-cell.today{border-color:var(--brand);box-shadow:inset 0 0 0 1px var(--brand)}.day-number{width:27px;height:27px;border-radius:9px;display:grid;place-items:center;font-size:11px;font-weight:900}.today .day-number{background:var(--brand);color:#fff}.day-events{display:flex;flex-direction:column;gap:4px;margin-top:6px}.day-event{padding:4px 6px;border-radius:7px;background:#f0f1ff;color:#565bc1;font-size:9px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.day-check{position:absolute;right:8px;top:8px;width:21px;height:21px;border-radius:50%;background:#dff7eb;color:#11805a;display:grid;place-items:center;font-size:11px;font-weight:900}.day-dot{position:absolute;right:10px;bottom:10px;width:7px;height:7px;border-radius:50%;background:var(--brand)}
.year-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.year-month{border:1px solid var(--line);border-radius:18px;padding:13px;background:#fff}.year-month>button{width:100%;border:0;background:transparent;text-align:left;font-weight:900;margin-bottom:10px;color:var(--ink)}.mini-week,.mini-days{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}.mini-week span{text-align:center;font-size:8px;color:#a0a5b5}.mini-day{aspect-ratio:1;border:0;background:transparent;border-radius:6px;font-size:8px;display:grid;place-items:center;color:#777d91;position:relative}.mini-day.has-event{background:#eeefff;color:var(--brand);font-weight:900}.mini-day.done:after{content:"✓";position:absolute;font-size:7px;color:#14906a;right:-1px;top:-2px}.mini-day.empty-day{opacity:.28}.day-view-list{display:flex;flex-direction:column;gap:10px}.plan-toggle-list{display:flex;flex-direction:column;gap:8px}.plan-toggle{padding:12px;border:1px solid var(--line);border-radius:14px;display:flex;align-items:center;justify-content:space-between;gap:10px}.plan-color{width:9px;height:9px;border-radius:50%;background:var(--brand)}

/* Roadmaps */
.roadmap-card{position:relative;overflow:hidden}.roadmap-card:before{content:"";position:absolute;right:-50px;top:-55px;width:150px;height:150px;border-radius:50%;background:radial-gradient(circle,rgba(91,92,226,.16),transparent 70%)}.roadmap-card h4{font-size:17px;margin:0 0 8px}.roadmap-card p{font-size:11px;line-height:1.6;color:var(--muted)}.roadmap-timeline{display:flex;flex-direction:column;gap:12px}.milestone{display:grid;grid-template-columns:76px minmax(0,1fr);gap:13px}.milestone-label{height:36px;border-radius:12px;background:var(--brand-soft);color:var(--brand);display:grid;place-items:center;font-size:11px;font-weight:900}.milestone-body{padding:14px;border:1px solid var(--line);border-radius:15px}.milestone-body h5{margin:0 0 7px;font-size:14px}.milestone-body p{margin:0 0 10px;color:var(--muted);font-size:11px;line-height:1.55}.check-list{display:flex;flex-direction:column;gap:6px}.check-item{display:flex;align-items:flex-start;gap:7px;font-size:11px;line-height:1.5}.check-item:before{content:"";width:6px;height:6px;border-radius:50%;background:var(--brand);margin-top:6px;flex:0 0 auto}.roadmap-detail-tabs{margin-bottom:18px}.roadmap-plan-preview{padding:14px;border-radius:15px;background:#f7f7fb;border:1px solid var(--line)}

/* Mentor */
.mentor-featured{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.mentor-card{position:relative;overflow:hidden;display:flex;flex-direction:column;gap:14px}.mentor-card.featured{background:linear-gradient(145deg,#25283f,#484d82);color:#fff;border-color:transparent}.mentor-card.featured .muted,.mentor-card.featured p{color:rgba(255,255,255,.7)}.mentor-card.featured .badge{background:rgba(255,255,255,.14);color:#fff}.mentor-head{display:flex;align-items:center;gap:13px}.mentor-head>div{min-width:0}.mentor-head h4{margin:0 0 5px;font-size:16px}.mentor-head p{margin:0;font-size:11px;color:var(--muted)}.mentor-tags{display:flex;gap:6px;flex-wrap:wrap}.mentor-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.mentor-stats div{padding:10px;border-radius:13px;background:rgba(91,92,226,.06);text-align:center}.mentor-card.featured .mentor-stats div{background:rgba(255,255,255,.08)}.mentor-stats b{display:block;font-size:15px}.mentor-stats span{font-size:9px;color:var(--muted)}.mentor-card.featured .mentor-stats span{color:rgba(255,255,255,.65)}
.mentor-profile-hero{position:relative;padding:28px;border-radius:22px;overflow:hidden;color:#fff;background:linear-gradient(135deg,#3e426e,#6268c8);background-size:cover;background-position:center}.mentor-profile-hero:before{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(26,29,58,.83),rgba(26,29,58,.32))}.mentor-profile-content{position:relative;display:flex;align-items:flex-end;gap:18px}.mentor-profile-content h2{margin:0 0 6px}.studio-block-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.studio-block{padding:14px;border:1px solid var(--line);border-radius:15px;display:flex;align-items:center;justify-content:space-between;gap:10px}
.promo-package{position:relative;padding:20px;border:1px solid var(--line);border-radius:20px;background:#fff}.promo-package strong{font-size:17px;display:block}.promo-package .price{font-size:25px;font-weight:950;margin:14px 0 5px}.inventory-card{display:flex;align-items:center;justify-content:space-between;gap:12px}

/* Questions / community */
.post-card h4,.question-post h4{margin:0 0 8px;font-size:16px;line-height:1.45}.post-card p,.question-post>p{margin:0;color:var(--muted);font-size:12px;line-height:1.7}.post-author{display:flex;align-items:center;gap:9px;margin-bottom:13px}.post-author div{min-width:0}.post-author strong{display:block;font-size:12px}.post-author>div>span{font-size:10px;color:var(--muted)}.post-actions{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:16px}.answer-list{display:flex;flex-direction:column;gap:10px;margin-top:15px}.answer{padding:14px;border-radius:15px;background:#f7f8fc;border:1px solid var(--line)}.answer.selected{background:#f0fff8;border-color:#b7e8d4}.answer p{font-size:11px;line-height:1.65;margin:8px 0 0}.bounty{font-size:15px;font-weight:950;color:#9b6a00;background:#fff5ce;border-radius:999px;padding:7px 10px;white-space:nowrap}

/* Parent */
.child-card{display:flex;flex-direction:column;gap:14px}.status-line{display:flex;align-items:center;gap:7px;font-size:11px}.status-dot{width:8px;height:8px;border-radius:50%;background:#b2b6c3}.status-dot.online{background:#24b77e;box-shadow:0 0 0 5px rgba(36,183,126,.12)}.status-dot.study{background:#f1a62d;box-shadow:0 0 0 5px rgba(241,166,45,.12)}.location-box{padding:22px;border-radius:20px;background:linear-gradient(135deg,#eff9ff,#fff);border:1px solid #dcecf4}.location-map{height:220px;border-radius:18px;background:radial-gradient(circle at 35% 42%,rgba(91,92,226,.2) 0 8px,transparent 9px),linear-gradient(45deg,#eef2f6 25%,transparent 25%),linear-gradient(-45deg,#eef2f6 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#eef2f6 75%),linear-gradient(-45deg,transparent 75%,#eef2f6 75%);background-size:auto,38px 38px,38px 38px,38px 38px,38px 38px;background-position:center,0 0,0 19px,19px -19px,-19px 0;display:grid;place-items:center;color:#5f657b;font-weight:850}

/* Admin */
.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:18px;background:#fff}.table{width:100%;border-collapse:collapse;min-width:760px}.table th,.table td{padding:13px 14px;border-bottom:1px solid var(--line);text-align:left;font-size:11px;vertical-align:middle}.table th{background:#f7f8fb;color:#747a8e;font-weight:900;white-space:nowrap}.table tr:last-child td{border-bottom:0}.table td strong{font-size:12px}.admin-kpi{padding:20px;background:linear-gradient(145deg,#fff,#f8f8ff)}
.preview-banner{padding:12px 16px;border-radius:15px;background:#fff4d9;border:1px solid #f2d995;display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:18px;font-size:12px}

/* Modal */
.modal-backdrop{position:fixed;inset:0;z-index:200;background:rgba(22,25,42,.55);display:flex;align-items:center;justify-content:center;padding:20px;backdrop-filter:blur(7px)}
.modal{width:min(620px,100%);max-height:min(88vh,900px);background:#fff;border-radius:25px;box-shadow:0 28px 90px rgba(18,21,40,.28);display:flex;flex-direction:column;overflow:hidden}.modal-wide{width:min(1040px,100%)}.modal-xl{width:min(1280px,100%)}.modal-head{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:19px 22px;border-bottom:1px solid var(--line)}.modal-head h3{margin:0;font-size:19px}.modal-body{padding:22px;overflow:auto}.modal-foot{padding:14px 22px 20px;border-top:1px solid var(--line);display:flex;justify-content:flex-end;gap:8px;background:#fff}.modal-close{border:0;background:#f1f2f7;width:36px;height:36px;border-radius:12px;font-size:20px;color:#5c6274}

/* Focus mode */
.focus-overlay{position:fixed;inset:0;z-index:300;background:radial-gradient(circle at 20% 18%,rgba(113,106,255,.28),transparent 24%),radial-gradient(circle at 80% 80%,rgba(62,166,184,.22),transparent 25%),#111426;color:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px;overflow:hidden}.focus-overlay:before{content:"";position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,.025) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.025) 1px,transparent 1px);background-size:40px 40px}.focus-top{position:absolute;top:24px;left:24px;right:24px;display:flex;align-items:center;justify-content:space-between;z-index:2}.focus-brand{display:flex;align-items:center;gap:10px;font-weight:900}.focus-badge{padding:8px 12px;border-radius:999px;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.13);font-size:11px}.focus-center{position:relative;z-index:2;text-align:center;width:min(760px,100%)}.focus-now{font-size:14px;color:rgba(255,255,255,.62);letter-spacing:.08em}.focus-clock{font-size:clamp(74px,13vw,150px);font-weight:250;letter-spacing:-.07em;line-height:1;margin:18px 0}.focus-task{font-size:20px;font-weight:850;margin-bottom:8px}.focus-plan{font-size:12px;color:rgba(255,255,255,.58)}.focus-progress{width:min(560px,100%);height:9px;border-radius:999px;background:rgba(255,255,255,.12);overflow:hidden;margin:28px auto 0}.focus-progress span{display:block;height:100%;background:linear-gradient(90deg,#8b84ff,#76d3df);border-radius:inherit}.focus-controls{display:flex;align-items:center;justify-content:center;gap:12px;margin-top:28px;flex-wrap:wrap}.focus-controls button{height:50px;border-radius:16px;border:1px solid rgba(255,255,255,.14);padding:0 18px;background:rgba(255,255,255,.08);color:#fff;font-weight:850}.focus-controls .primary{background:#fff;color:#191c30;border-color:#fff}.focus-note{margin-top:18px;color:rgba(255,255,255,.48);font-size:11px;line-height:1.6}

/* Toast */
.toast-root{position:fixed;right:20px;bottom:20px;z-index:400;display:flex;flex-direction:column;gap:8px}.toast{min-width:260px;max-width:420px;padding:13px 15px;border-radius:14px;background:#25283a;color:#fff;box-shadow:var(--shadow);font-size:12px;line-height:1.5;animation:toast-in .22s ease}.toast.success{background:#1f7f61}.toast.error{background:#b73e54}.toast.warn{background:#9c6813}@keyframes toast-in{from{transform:translateY(12px);opacity:0}to{transform:none;opacity:1}}
.sidebar-scrim{display:none}

/* Responsive */
@media(max-width:1280px){.grid-4{grid-template-columns:repeat(2,minmax(0,1fr))}.year-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.calendar-shell{grid-template-columns:minmax(0,1fr) 270px}.habit-type-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:1100px){
  .app-shell{grid-template-columns:minmax(0,1fr)}
  .sidebar{position:fixed;left:0;top:0;width:min(88vw,300px);transform:translateX(-104%);transition:transform .22s ease;box-shadow:0 0 70px rgba(20,23,42,.24)}.sidebar.open{transform:translateX(0)}.sidebar-close{display:grid}.sidebar-scrim{display:block;position:fixed;inset:0;z-index:70;background:rgba(18,21,38,.45);backdrop-filter:blur(3px)}
  .topbar,.main{grid-column:1}.menu-toggle{display:grid}.content{padding-top:22px}
  .login-shell{grid-template-columns:1fr}.login-visual{min-height:460px}.login-feature-grid{grid-template-columns:repeat(3,1fr)}
}
@media(max-width:840px){
  .grid-3,.grid-2,.mentor-featured,.studio-block-grid{grid-template-columns:1fr}.grid-4{grid-template-columns:repeat(2,minmax(0,1fr))}.span-2{grid-column:auto}.page-head{align-items:flex-start;flex-direction:column}.page-head-actions{justify-content:flex-start;width:100%}.calendar-shell{grid-template-columns:1fr}.calendar-side{order:-1}.year-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.day-cell{min-height:90px}.day-event{display:none}.habit-result{grid-template-columns:1fr;text-align:center}.habit-animal{margin:auto}.mentor-featured{grid-template-columns:1fr}.topbar-actions .install-label{display:none}
}
@media(max-width:640px){
  :root{--radius:18px;--topbar-height:66px}.content{padding:16px 13px 56px}.topbar{padding:0 13px}.page-title h1{font-size:18px}.point-pill{height:34px;padding:0 9px}.point-pill span{display:none}.topbar-actions .btn{display:none}.card{padding:17px}.page-head h2{font-size:25px}.grid-4{grid-template-columns:1fr 1fr;gap:10px}.stat-value{font-size:24px}.student-hero{min-height:250px;padding:24px}.student-hero h2{font-size:27px}.student-hero-actions{right:14px;top:14px}.flow-item{grid-template-columns:58px minmax(0,1fr);align-items:start}.flow-actions{grid-column:1/-1;justify-content:flex-end}.form-grid{grid-template-columns:1fr}.login-panel{padding:32px 20px}.login-visual{padding:36px 22px;min-height:420px}.login-copy{margin:50px 0}.login-copy h1{font-size:40px}.login-feature-grid{grid-template-columns:1fr}.login-feature:nth-child(n+2){display:none}.habit-type-grid{grid-template-columns:1fr}.month-grid,.calendar-weekdays{gap:3px}.day-cell{min-height:64px;border-radius:10px;padding:5px}.day-number{width:24px;height:24px}.day-check{right:3px;top:3px;width:17px;height:17px;font-size:9px}.day-dot{right:6px;bottom:6px}.year-grid{grid-template-columns:1fr}.calendar-toolbar{align-items:flex-start;flex-direction:column}.calendar-toolbar .tabs{width:100%}.modal-backdrop{padding:0;align-items:flex-end}.modal,.modal-wide,.modal-xl{width:100%;max-height:92vh;border-radius:24px 24px 0 0}.modal-body{padding:18px}.resource-meta{align-items:flex-start;flex-direction:column}.mentor-profile-content{align-items:flex-start;flex-direction:column}.reward-rule{grid-template-columns:1fr}.focus-top{top:15px;left:15px;right:15px}.focus-clock{font-size:76px}.focus-task{font-size:17px}.toast-root{left:12px;right:12px;bottom:12px}.toast{min-width:0;max-width:none}.table{min-width:680px}
}

/* V4.0 completion styles */
.boot-error{min-height:100vh;display:grid;place-items:center;align-content:center;gap:12px;text-align:center;padding:24px}.boot-error h2{margin:8px 0 0}.boot-error p{color:var(--muted);margin:0 0 10px}
.small{font-size:12px}.muted{color:var(--muted)}.mt-1{margin-top:8px}.mt-2{margin-top:16px}.divider{height:1px;background:var(--line);margin:18px 0}.tall{min-height:230px}.code-input{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px;line-height:1.6}.color-input{min-height:46px;padding:6px}.text-good{color:var(--success)}.text-danger{color:var(--danger)}
.notice{padding:14px 16px;border:1px solid #e3e5f5;border-radius:15px;background:#f8f8ff}.notice strong{display:block;font-size:13px}.notice p{margin:5px 0 0;color:var(--muted);font-size:12px;line-height:1.6}.field-label{display:block;font-size:12px;font-weight:850;margin:0 0 8px;color:#51586f}
.habit-intro{display:grid;grid-template-columns:minmax(260px,.8fr) minmax(0,1.2fr);align-items:center;gap:32px;overflow:hidden;background:radial-gradient(circle at 13% 14%,#fff4db,transparent 23%),radial-gradient(circle at 75% 70%,#e9f9ff,transparent 30%),linear-gradient(145deg,#fff,#f7f6ff)}.habit-intro h2{font-size:32px;letter-spacing:-.045em;margin:14px 0 10px}.habit-intro p{color:var(--muted);line-height:1.7}.habit-mascots{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;transform:rotate(-2deg)}.habit-mini{min-height:105px;border-radius:24px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:7px;border:1px solid rgba(80,85,120,.08);box-shadow:0 10px 24px rgba(42,45,73,.07)}.habit-mini span{font-size:38px;filter:drop-shadow(0 5px 7px rgba(60,50,60,.15))}.habit-mini b{font-size:10px}.habit-mini:nth-child(even){transform:translateY(12px)}.habit-mini.big{width:74px;height:74px;min-height:74px;border-radius:22px}.habit-mini.big span{font-size:42px}.habit-type-card{position:relative;overflow:hidden;border-top:4px solid var(--habit)}.habit-type-card:after{content:"";position:absolute;width:90px;height:90px;border-radius:50%;right:-25px;top:-25px;background:var(--habit);opacity:.08}.habit-type-card h3{margin:12px 0 6px}.habit-type-card p{color:var(--muted);font-size:12px;line-height:1.65}.habit-question-form{display:flex;flex-direction:column;gap:14px}.habit-question{border:1px solid var(--line);border-radius:18px;padding:18px;margin:0}.habit-question legend{font-size:14px;font-weight:850;line-height:1.55;padding:0 6px}.habit-question legend span{display:inline-grid;place-items:center;width:29px;height:29px;border-radius:10px;background:var(--brand-soft);color:var(--brand);font-size:11px;margin-right:9px}.scale-row{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;margin-top:13px}.scale-row input{position:absolute;opacity:0}.scale-row label>span{min-height:62px;border:1px solid var(--line);border-radius:14px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;background:#fff;transition:.15s}.scale-row b{font-size:16px}.scale-row small{font-size:9px;color:var(--muted);text-align:center}.scale-row input:checked+span{background:var(--brand);border-color:var(--brand);color:#fff;box-shadow:0 8px 20px rgba(91,92,226,.2)}.scale-row input:checked+span small{color:rgba(255,255,255,.75)}
.filter-bar{display:flex;gap:8px;flex-wrap:wrap}.filter-chip{height:38px;border:1px solid var(--line);border-radius:999px;background:#fff;padding:0 12px;font-weight:800;font-size:11px;color:#656b7e}.filter-chip span{display:inline-grid;place-items:center;min-width:20px;height:20px;border-radius:999px;background:#f0f1f6;margin-left:7px;font-size:9px}.filter-chip.active{background:var(--ink);border-color:var(--ink);color:#fff}.filter-chip.active span{background:rgba(255,255,255,.15)}.resource-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(270px,1fr));gap:16px}.resource-card{display:flex;flex-direction:column;min-height:250px}.resource-card h3{margin:15px 0 7px;font-size:17px}.resource-card>p{color:var(--muted);font-size:12px;line-height:1.65;flex:1}.resource-top,.resource-meta,.resource-actions{display:flex;align-items:center}.resource-top{justify-content:space-between;gap:12px}.resource-meta{gap:7px;flex-wrap:wrap;justify-content:flex-end;color:var(--muted);font-size:10px}.resource-actions{gap:7px;flex-wrap:wrap;margin-top:16px}.resource-icon{width:42px;height:42px;flex:0 0 42px;border-radius:14px;background:var(--brand-soft);display:grid;place-items:center;font-size:20px;color:var(--brand)}
.mentor-card{position:relative;overflow:hidden}.mentor-card.featured{border-color:#d9c786;background:linear-gradient(145deg,#fffdf4,#fff)}.featured-ribbon{position:absolute;top:15px;right:-34px;transform:rotate(35deg);width:140px;text-align:center;padding:7px;background:#f4c95d;color:#624700;font-size:10px;font-weight:950}.mentor-metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:16px 0}.mentor-metrics>div,.metric-box{border:1px solid var(--line);background:#fafbfe;border-radius:14px;padding:11px;text-align:center}.mentor-metrics b,.metric-box b{display:block;font-size:13px}.mentor-metrics span,.metric-box span{display:block;font-size:9px;color:var(--muted);margin-top:3px}.mentor-price{padding:13px 15px;border-radius:15px;background:linear-gradient(135deg,var(--brand-soft),#fff);border:1px solid rgba(91,92,226,.13)}.mentor-price strong{font-size:19px}.profile-edit-head{display:flex;align-items:center;gap:14px}.verification-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.verification-grid>div{padding:12px;border:1px solid var(--line);border-radius:14px;display:flex;align-items:center;justify-content:space-between;gap:8px}.verification-grid span{font-size:11px;font-weight:800}
.weekday-picker{display:grid;grid-template-columns:repeat(7,1fr);gap:7px}.weekday-picker input{position:absolute;opacity:0}.weekday-picker span{height:42px;border:1px solid var(--line);border-radius:12px;display:grid;place-items:center;font-size:11px;font-weight:800}.weekday-picker input:checked+span{background:var(--brand);color:#fff;border-color:var(--brand)}
.content-reader{padding:20px;border-radius:18px;background:#fafafc;border:1px solid var(--line);font-size:14px;line-height:1.9;white-space:normal}.locked-content{min-height:230px;border:1px dashed #cfd3e2;border-radius:20px;background:#fafbfe;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:24px}.locked-content>span{font-size:38px}.locked-content strong{margin-top:9px}.locked-content p{max-width:420px;color:var(--muted);font-size:12px;line-height:1.6}.notification-row{width:100%;border:0;border-bottom:1px solid var(--line);background:#fff;padding:14px 4px;display:flex;align-items:center;gap:12px;text-align:left}.notification-row.read{opacity:.62}.notification-row:last-child{border-bottom:0}.notification-row small{display:block;color:var(--muted);margin-top:4px;font-size:10px}.location-consent-layout{display:flex;align-items:center;justify-content:space-between;gap:16px}.location-pin{width:16px;height:16px;border-radius:50%;background:var(--brand);box-shadow:0 0 0 7px rgba(91,92,226,.14)}
.focus-resume-bar{position:fixed;z-index:170;right:22px;bottom:22px;max-width:430px;width:calc(100% - 44px);border:1px solid rgba(255,255,255,.18);border-radius:19px;background:rgba(24,27,49,.94);backdrop-filter:blur(18px);color:#fff;box-shadow:0 18px 55px rgba(18,21,40,.28);padding:13px 15px;display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:11px;text-align:left}.focus-resume-bar span:nth-child(2){min-width:0}.focus-resume-bar strong,.focus-resume-bar small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.focus-resume-bar strong{font-size:12px}.focus-resume-bar small{font-size:9px;color:rgba(255,255,255,.6);margin-top:3px}.focus-resume-bar b{font-size:10px;color:#c8c6ff}.focus-resume-pulse{width:11px;height:11px;border-radius:50%;background:#7cd7a7;box-shadow:0 0 0 0 rgba(124,215,167,.55);animation:focus-pulse 1.8s infinite}@keyframes focus-pulse{70%{box-shadow:0 0 0 10px rgba(124,215,167,0)}100%{box-shadow:0 0 0 0 rgba(124,215,167,0)}}

/* Sidebar hardening: these rules intentionally isolate menu text from legacy styles. */
.app-shell>.sidebar .nav-scroll{display:block!important;white-space:normal!important;font-size:initial!important;line-height:normal!important}.app-shell>.sidebar .nav-group{display:block!important}.app-shell>.sidebar .nav-item{display:flex!important;writing-mode:horizontal-tb!important;text-orientation:mixed!important;word-break:keep-all!important;white-space:nowrap!important;overflow:hidden!important}.app-shell>.sidebar .nav-label{display:block!important;width:auto!important;max-width:100%!important;white-space:nowrap!important;word-break:keep-all!important;overflow:hidden!important;text-overflow:ellipsis!important}.app-shell>.sidebar .nav-icon{display:grid!important;writing-mode:horizontal-tb!important}.app-shell>.sidebar button:before,.app-shell>.sidebar button:after{max-width:none}

@media(max-width:840px){.habit-intro{grid-template-columns:1fr}.habit-mascots{max-width:520px}.location-consent-layout{align-items:flex-start;flex-direction:column}.scale-row{grid-template-columns:repeat(5,1fr)}}
@media(max-width:640px){.habit-mascots{grid-template-columns:repeat(3,1fr);gap:6px}.habit-mini{min-height:84px;border-radius:18px}.habit-mini span{font-size:31px}.habit-intro h2{font-size:25px}.scale-row{gap:4px}.scale-row label>span{min-height:55px;border-radius:10px}.scale-row small{display:none}.weekday-picker{gap:4px}.weekday-picker span{height:38px}.focus-resume-bar{right:12px;bottom:12px;width:calc(100% - 24px)}.verification-grid{grid-template-columns:1fr}.resource-grid{grid-template-columns:1fr}}

/* Nexmate V4.2 — mentor/roadmap/payment refinements */
.mentor-price{display:flex;align-items:center;justify-content:space-between;gap:18px;min-height:56px}
.mentor-price span{font-size:11px;font-weight:850;color:var(--muted);letter-spacing:.01em}
.mentor-price strong{margin-left:auto;white-space:nowrap;letter-spacing:.01em}
.mentor-service-card{display:flex;flex-direction:column;gap:10px;min-height:205px}
.service-kicker{font-size:9px;font-weight:950;letter-spacing:.16em;color:var(--brand)}
.service-price-row{display:flex;align-items:center;justify-content:space-between;gap:22px;padding:4px 0 2px}
.service-price-row b{font-size:14px}.service-price-row strong{font-size:20px;white-space:nowrap;color:var(--ink)}
.resource-category-tags{display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.resource-category-tag{display:inline-flex;align-items:center;justify-content:center;min-height:36px;padding:0 14px;border-radius:999px;border:1px solid rgba(91,92,226,.16);background:var(--brand-soft);color:var(--brand);font-size:11px;font-weight:850;line-height:1.2}
.file-field{align-self:stretch}.file-input{display:block;width:100%;min-height:46px;border:1px solid #dfe2ec;background:#fff;color:var(--ink);border-radius:13px;padding:5px 7px;font:inherit;line-height:1.2;box-sizing:border-box}
.file-input::file-selector-button{height:34px;border:0;border-radius:9px;background:#f0f1f7;color:#383e52;padding:0 13px;margin-right:10px;font-size:11px;font-weight:850;cursor:pointer}
.file-input:hover::file-selector-button{background:var(--brand-soft);color:var(--brand)}
.file-input:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 4px rgba(91,92,226,.1)}
.studio-subscription-check{min-height:46px;padding:11px 13px;border:1px solid var(--line);border-radius:13px;background:#fafbfe;align-items:center}.studio-subscription-check input{margin-top:0}
.roadmap-preview-hero{padding:22px;border-radius:20px;background:linear-gradient(135deg,#f3f4ff,#fff);border:1px solid rgba(91,92,226,.14)}
.roadmap-preview-hero h2{margin:10px 0 8px;font-size:23px}.roadmap-preview-hero p{margin:0 0 13px;color:var(--muted);font-size:12px;line-height:1.7}
.mentor-roadmap-preview{background:linear-gradient(135deg,#f5f2ff,#fffaf5)}
.mentor-roadmap-card .post-author{padding-bottom:10px;border-bottom:1px solid var(--line)}
.subscription-checkout{display:flex;flex-direction:column;gap:16px}.checkout-mentor{display:flex;align-items:center;gap:12px;padding:14px;border-radius:16px;background:#f7f7fb}.checkout-mentor>div{display:flex;flex-direction:column;gap:4px}.checkout-mentor span{font-size:10px;color:var(--muted)}
.checkout-price{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:16px 18px;border:1px solid rgba(91,92,226,.16);border-radius:16px;background:linear-gradient(135deg,var(--brand-soft),#fff)}.checkout-price span{font-size:11px;font-weight:850;color:var(--muted)}.checkout-price strong{font-size:26px;white-space:nowrap}
.checkout-benefits{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.checkout-benefits>div{padding:13px 8px;border:1px solid var(--line);border-radius:14px;text-align:center;background:#fff}.checkout-benefits b{display:block;font-size:15px}.checkout-benefits span{display:block;margin-top:4px;font-size:9px;color:var(--muted)}
.checkout-balance{display:flex;flex-direction:column;gap:8px;padding:13px 15px;border-radius:14px;background:#fafbfe}.checkout-balance>div{display:flex;align-items:center;justify-content:space-between;gap:14px;font-size:11px}.checkout-balance b{font-size:13px}
.notice.warning{background:#fff8e8;border-color:#f1d28a}
@media(max-width:680px){.service-price-row,.mentor-price,.checkout-price{gap:14px}.service-price-row strong{font-size:18px}.checkout-benefits{grid-template-columns:1fr 1fr}.resource-category-tag{min-height:34px;padding:0 12px}.file-input{min-height:48px}}


/* Nexmate V4.3 — roadmap journey + verified study-plan presentation */
.roadmap-journey-hero{position:relative;min-height:330px;border-radius:30px;overflow:hidden;background:linear-gradient(122deg,#15274a 0%,#385d9e 48%,#7eb5c4 100%);color:#fff;box-shadow:0 24px 60px rgba(30,54,96,.2);isolation:isolate}
.roadmap-journey-hero:before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 72% 20%,rgba(255,255,255,.25),transparent 24%),linear-gradient(90deg,rgba(10,20,48,.78) 0%,rgba(16,33,68,.4) 48%,rgba(16,33,68,.08) 100%);z-index:1}
.roadmap-journey-art{position:absolute;inset:0;overflow:hidden;opacity:.98}.campus-dome{position:absolute;right:12%;bottom:110px;width:110px;height:58px;border-radius:90px 90px 8px 8px;background:rgba(245,248,255,.88);box-shadow:0 12px 28px rgba(15,32,61,.18)}.campus-dome:before{content:"";position:absolute;left:48px;top:-44px;width:14px;height:48px;border-radius:8px;background:rgba(245,248,255,.9)}.campus-building{position:absolute;bottom:45px;width:210px;height:95px;border-radius:8px 8px 0 0;background:linear-gradient(180deg,rgba(250,252,255,.93),rgba(214,229,242,.9));box-shadow:0 18px 30px rgba(15,31,59,.18)}.campus-building:before{content:"";position:absolute;inset:16px 20px;background:repeating-linear-gradient(90deg,rgba(63,91,126,.24) 0 8px,transparent 8px 25px),repeating-linear-gradient(180deg,transparent 0 18px,rgba(63,91,126,.18) 18px 22px)}.campus-building.b1{right:4%}.campus-building.b2{right:29%;width:175px;height:75px;opacity:.82}.campus-path{position:absolute;right:-3%;bottom:-90px;width:58%;height:210px;background:linear-gradient(180deg,rgba(224,237,242,.72),rgba(255,255,255,.92));transform:skewX(-16deg) rotate(-6deg);border-radius:60% 0 0 0}
.roadmap-journey-content{position:relative;z-index:2;display:grid;grid-template-columns:minmax(0,1.15fr) minmax(300px,.85fr);gap:25px;padding:32px;min-height:330px;align-items:end}.roadmap-journey-copy{max-width:720px}.roadmap-journey-copy h2{font-size:31px;letter-spacing:-.045em;margin:10px 0 9px;line-height:1.25}.roadmap-journey-copy>p{margin:0;color:rgba(255,255,255,.78);font-size:13px;line-height:1.7}.roadmap-now-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;margin-top:20px}.roadmap-now-item{padding:13px 14px;border:1px solid rgba(255,255,255,.17);background:rgba(255,255,255,.11);backdrop-filter:blur(10px);border-radius:16px;min-width:0}.roadmap-now-item small{display:block;color:rgba(255,255,255,.62);font-size:9px;font-weight:850;margin-bottom:5px}.roadmap-now-item strong{display:block;font-size:12px;line-height:1.45;white-space:normal}.roadmap-quote-panel{align-self:end;padding:19px 20px;border:1px solid rgba(255,255,255,.2);background:rgba(13,26,53,.42);backdrop-filter:blur(15px);border-radius:20px}.roadmap-quote-panel .quote-mark{font-size:30px;line-height:1;color:#b9d9ff}.roadmap-quote-panel blockquote{margin:6px 0 8px;font-size:16px;font-weight:850;line-height:1.55;letter-spacing:-.025em}.roadmap-quote-panel p{margin:0 0 13px;color:rgba(255,255,255,.7);font-size:11px;line-height:1.55}.roadmap-quote-panel .btn-outline{background:rgba(255,255,255,.1);border-color:rgba(255,255,255,.25);color:#fff}
.study-guide-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:14px 0}.study-guide-summary>div{padding:15px 16px;border-radius:17px;background:linear-gradient(145deg,#f6f8ff,#fff);border:1px solid #e1e5f2}.study-guide-summary small{display:block;font-size:9px;color:var(--muted);font-weight:850}.study-guide-summary strong{display:block;font-size:20px;margin-top:4px}.study-subject-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(215px,1fr));gap:10px}.study-subject-card{padding:16px;border-radius:17px;border:1px solid var(--line);background:#fff;min-width:0}.study-subject-card strong{display:block;font-size:13px;margin-bottom:7px}.study-subject-card p{margin:0;color:var(--muted);font-size:11px;line-height:1.7;white-space:normal}.study-week-grid{display:flex;flex-direction:column;gap:8px;margin-top:12px}.study-week-row{display:grid;grid-template-columns:110px minmax(0,1fr);gap:12px;align-items:center;padding:11px 13px;border:1px solid var(--line);border-radius:14px;background:#fafbfe}.study-week-days{font-size:10px;font-weight:900;color:var(--brand)}.study-week-time{font-size:11px;font-weight:900;color:#3b4258}.study-week-main strong{display:block;font-size:11px}.study-week-main span{display:block;margin-top:3px;color:var(--muted);font-size:10px;line-height:1.5}.roadmap-source-list{display:flex;flex-wrap:wrap;gap:7px;margin-top:10px}.roadmap-source-list a{display:inline-flex;align-items:center;gap:5px;min-height:30px;padding:0 10px;border-radius:999px;background:#f4f5f9;border:1px solid var(--line);color:#596075;font-size:9px;font-weight:850;text-decoration:none}.roadmap-source-list a:hover{border-color:var(--brand);color:var(--brand)}
@media(max-width:900px){.roadmap-journey-content{grid-template-columns:1fr;align-items:end}.roadmap-quote-panel{max-width:620px}.roadmap-journey-art{opacity:.62}.roadmap-now-grid{grid-template-columns:1fr 1fr 1fr}}
@media(max-width:640px){.roadmap-journey-hero{min-height:auto;border-radius:22px}.roadmap-journey-content{padding:23px 18px;min-height:480px}.roadmap-journey-copy h2{font-size:25px}.roadmap-now-grid{grid-template-columns:1fr}.campus-building.b2{display:none}.campus-building.b1{right:-18%;opacity:.58}.campus-dome{right:16%;opacity:.55}.study-guide-summary{grid-template-columns:1fr}.study-week-row{grid-template-columns:92px minmax(0,1fr);align-items:start}.study-week-time{grid-column:1}.study-week-main{grid-column:2;grid-row:1}.study-subject-grid{grid-template-columns:1fr}}


/* Nexmate V4.4 — editable learning plans */
.plan-toggle-editable{gap:10px;align-items:stretch}.plan-edit-target{flex:1;min-width:0;border:0;background:transparent;text-align:left;padding:10px 8px 10px 10px;border-radius:13px;display:flex;align-items:center;gap:10px;color:inherit;cursor:pointer;transition:background .18s ease,transform .18s ease}.plan-edit-target:hover{background:#f6f6ff;transform:translateX(2px)}.plan-edit-target .list-main{min-width:0;display:flex;flex-direction:column;gap:4px}.plan-edit-target .list-main strong{font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.plan-edit-target .list-main span{font-size:10px;color:var(--muted)}.plan-edit-hint{margin-left:auto;flex:none;font-size:10px;font-weight:900;color:var(--brand);white-space:nowrap}.plan-apply-btn{align-self:center;flex:none}
.plan-editor-summary{padding:17px 18px;border-radius:18px;background:linear-gradient(135deg,var(--brand-soft),#fff);border:1px solid rgba(91,92,226,.14)}.plan-editor-summary h4{margin:9px 0 5px;font-size:19px}.plan-editor-summary p{margin:0;color:var(--muted);font-size:11px;line-height:1.65}.plan-editor-section-head{display:flex;align-items:center;justify-content:space-between;gap:14px}.plan-editor-section-head h4{margin:0;font-size:15px}.plan-editor-section-head p{margin:4px 0 0;color:var(--muted);font-size:10px}.plan-editor-items{display:flex;flex-direction:column;gap:12px}.plan-editor-item{padding:15px;border:1px solid var(--line);border-radius:17px;background:#fafbfe}.plan-editor-item-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:12px}.plan-editor-item-head>div{display:flex;flex-direction:column;gap:3px}.plan-editor-item-head strong{font-size:12px}.plan-editor-item-head span{font-size:9px;color:var(--muted)}
@media(max-width:640px){.plan-toggle-editable{align-items:center}.plan-edit-target{padding-left:4px}.plan-edit-hint{display:none}.plan-editor-section-head,.plan-editor-item-head{align-items:flex-start}.plan-editor-section-head{flex-direction:column}.plan-editor-section-head .btn{width:100%}.plan-editor-item-head .btn{flex:none}}

/* Nexmate V4.5 — Toss Payments point checkout */
.toss-checkout{display:grid;gap:18px;min-width:0}
.toss-checkout-summary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.toss-checkout-summary>div{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 18px;border:1px solid var(--line,#e8eaf1);border-radius:16px;background:var(--surface-soft,#f8f9fc)}
.toss-checkout-summary span{font-size:13px;color:var(--muted,#72788a)}
.toss-checkout-summary strong{font-size:20px;letter-spacing:-.02em}
.toss-widget-slot{min-height:88px;border-radius:16px;overflow:hidden;background:#fff}
.toss-widget-slot.agreement{min-height:56px}
.toss-loading{display:flex;align-items:center;justify-content:center;min-height:160px;color:var(--muted,#72788a);font-size:14px;border:1px dashed var(--line,#e8eaf1);border-radius:16px}
.payment-test-notice{border-color:#c9d7ff;background:#f5f8ff}
.payment-order-row{align-items:flex-start;gap:14px}
.payment-order-actions{display:flex;align-items:flex-end;justify-content:flex-end;gap:8px;flex-wrap:wrap;max-width:210px}
.notice.danger{border-color:#f0b8b8;background:#fff4f4;color:#9a3232}
@media (max-width:640px){.toss-checkout-summary{grid-template-columns:1fr}.payment-order-row{flex-direction:column}.payment-order-actions{max-width:none;width:100%;justify-content:flex-start}}

/* V4.6 PortOne identity signup */
.login-box-register{width:min(100%,720px)}
.register-form-v46{gap:18px}
.required-guide{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;font-size:11px;color:var(--muted);padding:10px 12px;border-radius:12px;background:#f7f8fc}
.required-guide b,.required-mark{color:#e1495b;font-weight:900}
.signup-section{border:1px solid #e7e9f1;border-radius:18px;padding:17px;background:#fff;box-shadow:0 6px 18px rgba(40,45,80,.035);display:flex;flex-direction:column;gap:13px}
.signup-section-title{display:flex;align-items:flex-start;gap:11px;padding-bottom:2px}.signup-section-title>span{display:grid;place-items:center;width:27px;height:27px;border-radius:9px;background:rgba(91,92,226,.10);color:var(--brand);font-size:12px;font-weight:900;flex:0 0 auto}.signup-section-title strong{font-size:14px}.signup-section-title p{margin:3px 0 0;color:var(--muted);font-size:11px;line-height:1.5}
.identity-status{display:flex;align-items:center;gap:12px;border-radius:14px;padding:13px 14px;border:1px solid #e5e7ef}.identity-status .identity-icon{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;font-weight:900;flex:0 0 auto}.identity-status strong{font-size:13px}.identity-status p{margin:3px 0 0;font-size:11px;color:var(--muted)}.identity-status.empty{background:#fafbfe}.identity-status.empty .identity-icon{background:#eef0f6;color:#7d8498}.identity-status.verified{background:#f3fbf7;border-color:#caead8}.identity-status.verified .identity-icon{background:#d9f3e4;color:#1a8f58}
.identity-privacy-note,.optional-verification-note{font-size:10px;color:#72798c;line-height:1.55;padding:9px 10px;background:#f8f9fc;border-radius:10px}
.input-action-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:center}.input-action-row .btn{height:45px;white-space:nowrap}
.terms-row{position:relative;padding:3px 0}.terms-row>span{flex:1}.link-button{border:0;background:transparent;color:var(--brand);font-size:11px;font-weight:800;text-decoration:underline;cursor:pointer;padding:0 0 0 8px;white-space:nowrap}
.terms-document{line-height:1.75;color:#42485a}.terms-document h4{margin:18px 0 4px;font-size:14px}.terms-document p{margin:0 0 8px;font-size:12px}
.form-error{margin:0;color:#cb3447;font-size:11px;line-height:1.5}.notice.good{background:#f3fbf7;border-color:#caead8}.signup-config{margin-bottom:0}
#register-submit:disabled{opacity:.5;cursor:not-allowed;filter:grayscale(.2)}
@media(max-width:720px){.login-box-register{width:100%}.signup-section{padding:14px}.required-guide{flex-direction:column;gap:5px}.input-action-row{grid-template-columns:1fr}.input-action-row .btn{width:100%}.terms-row{align-items:flex-start;flex-wrap:wrap}.terms-row .link-button{margin-left:25px}}

/* V5.2 release-readiness additions */
.login-legal-links{display:flex;gap:14px;flex-wrap:wrap;justify-content:center;margin-top:16px;font-size:11px}.login-legal-links a{color:var(--muted);text-decoration:none}.login-legal-links a:hover{text-decoration:underline;color:var(--brand)}
.image-upload-guide{display:flex;flex-direction:column;gap:4px;padding:11px 13px;border:1px dashed var(--line);border-radius:13px;background:#fafbfe}.image-upload-guide strong{font-size:12px}.image-upload-guide span{font-size:11px;color:var(--muted);line-height:1.5}
.image-upload-preview:empty{display:none}.image-upload-preview{display:flex;align-items:center;gap:12px;padding:10px;border:1px solid var(--line);border-radius:14px;background:#fafbfe}.image-upload-preview img{width:120px;height:72px;object-fit:cover;border-radius:10px;background:#eef0f5}.image-upload-preview[data-image-preview="avatar"] img,.image-upload-preview[data-image-preview="logo"] img{width:72px;height:72px}.image-upload-preview span{font-size:11px;color:var(--muted)}
.danger-zone{border-color:#f2c9d0;background:linear-gradient(145deg,#fff,#fff8f9)}.notice.danger{border-color:#f1c5cd;background:#fff5f6}.notice.warning{border-color:#efd7a3;background:#fffaf0}
