@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@400;500;600;700;800&display=swap');
:root{--teal:#087e70;--ink:#183c39;--muted:#788683;--line:#e4eae6;--bg:#f5f7f4;--white:#fff;--mint:#e6f2ec}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:14px 'Noto Sans SC','Microsoft YaHei',sans-serif;line-height:1.65}button,input,select,textarea{font:inherit}button,a,input,select,textarea{touch-action:manipulation}button,a{ -webkit-tap-highlight-color:transparent}button{cursor:pointer}a{color:var(--teal);text-decoration:none}a:hover{text-decoration:underline}button{border:0;background:transparent;color:inherit}button:focus-visible,a:focus-visible{outline:3px solid #e2af54;outline-offset:3px}input:focus,textarea:focus,select:focus{outline:2px solid #55ac9b;outline-offset:1px}.sidebar{position:fixed;inset:0 auto 0 0;width:228px;background:#102e2d;color:#b8ceca;padding:34px 22px;display:flex;flex-direction:column;z-index:10}.brand{display:flex;align-items:center;gap:12px;color:#fff;font-size:23px;font-weight:700;letter-spacing:2px;margin:0 12px 42px}.brand:hover{text-decoration:none}.brandmark{display:grid;place-items:center;background:#bfe3c4;color:#143d32;border-radius:12px;width:41px;height:43px;font-size:26px}.brand-en{display:block;font-size:9px;letter-spacing:2px;font-weight:400;color:#91b4aa;line-height:1.6}.side-label{font-size:10px;letter-spacing:2px;color:#6c9690;margin:0 14px 14px}nav{display:grid;gap:7px}.navbtn{display:flex;align-items:center;text-align:left;gap:13px;padding:12px 15px;border-radius:7px;color:#a7c2bd;font-weight:500}.navbtn .navicon{font-size:19px;width:21px}.navbtn.active{background:#245047;color:#def3dc}.navbtn.active:after{content:'';height:5px;width:5px;background:#c5e0a7;margin-left:auto;border-radius:50%}.navbtn:hover{background:#1c423d}.side-bottom{margin-top:auto;padding:38px 12px 0}.small-chip{font-size:10px;color:#c7dcae;letter-spacing:1px}.side-bottom p{font-size:13px;color:#8eafa7;margin:16px 0 30px;line-height:2}.save-status{display:flex;align-items:center;gap:6px;font-size:10px;color:#8eb2a6}.save-status i{width:5px;height:5px;background:#7bbb8d;border-radius:50%}.side-export{margin:13px 0 0;padding:0;font-size:11px;color:#c6d8cc}.shell{margin-left:228px}.topbar{height:77px;display:flex;align-items:center;justify-content:space-between;padding:0 42px;border-bottom:1px solid var(--line);background:#ffffff9c}.breadcrumb{font-size:11px;color:#89958e}.breadcrumb span{padding:0 13px;color:#bac2bb}.breadcrumb b{font-weight:500;color:#475f56}.topright{display:flex;gap:20px;align-items:center}.timezone{font-size:11px;color:#78887f}.avatar{background:#e5eee0;border:1px solid #d6e1cf;border-radius:50%;height:32px;width:32px;font-size:11px}main{padding:34px 42px 24px;max-width:1600px;margin:auto}.eyebrow{font-size:10px;color:#71897d;letter-spacing:2px;font-weight:600;text-transform:uppercase}.page-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:26px}h1{font-size:29px;letter-spacing:-.9px;line-height:1.4;margin:6px 0 9px;font-weight:700}h2{font-size:17px;margin:0;font-weight:600}h3{font-size:15px;margin:0 0 8px}p{margin:6px 0 0}.subtitle{font-size:12px;color:#7b8980}.btn{padding:10px 16px;border-radius:6px;font-size:12px;border:1px solid #dce5dd;background:#fff;display:inline-flex;align-items:center;justify-content:center;gap:9px;font-weight:500}.btn:hover{background:#edf3ed;text-decoration:none}.btn.primary{background:#0f7568;border-color:#0f7568;color:#fff}.btn.primary:hover{background:#07594f}.btn.small{padding:6px 11px;font-size:11px}.actions{display:flex;align-items:center;gap:9px;flex-wrap:wrap}.hero{position:relative;overflow:hidden;background:#e6eee0;border:1px solid #dce6d4;border-radius:11px;padding:27px 30px;display:flex;justify-content:space-between;align-items:center;min-height:168px;margin-bottom:22px}.hero .eyebrow{color:#61825d;font-size:9px}.hero h2{font-size:24px;letter-spacing:-.7px;margin:7px 0}.hero p{font-size:12px;color:#6f8368;max-width:510px}.hero .btn{margin-top:17px;background:#1c5747;color:#fff;border:0;padding:8px 15px}.hero-art{width:240px;height:115px;position:relative;flex-shrink:0;background:radial-gradient(circle at 50% 50%,#cedfc3 1px,transparent 1px);background-size:14px 14px}.art-line{position:absolute;left:24px;right:18px;top:60px;border-top:1px dashed #8cac7c;transform:rotate(-16deg)}.art-node{position:absolute;display:grid;place-items:center;width:49px;height:49px;border:1px solid #c6d6b9;border-radius:12px;background:#f5f8ef;box-shadow:0 6px 12px #7f9a6c0b;color:#5d7f54;font-size:20px}.art-node:nth-of-type(2){left:15px;top:61px;transform:rotate(-9deg)}.art-node:nth-of-type(3){left:95px;top:26px}.art-node:nth-of-type(4){right:12px;top:2px;transform:rotate(9deg)}.art-caption{position:absolute;right:17px;bottom:0;font-size:8px;letter-spacing:2px;color:#91a485}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:15px;margin-bottom:30px}.stat{border:1px solid var(--line);border-radius:9px;background:#fff;padding:17px 20px}.stat-top{display:flex;justify-content:space-between;font-size:11px;color:#7e8b82}.stat-top span:last-child{font-size:15px;color:#7a9a85}.stat-number{font-size:27px;font-weight:600;line-height:1.4;margin:7px 0 3px;letter-spacing:-1px}.stat-number small{font-size:11px;font-weight:400;letter-spacing:0;color:#9aa49e;margin-left:5px}.stat-note{font-size:10px;color:#92a094}.progress{height:4px;border-radius:5px;background:#edf0eb;overflow:hidden;margin:13px 0 6px}.progress span{display:block;height:100%;background:#54a58a;border-radius:5px;transition:width .3s}.main-grid{display:grid;grid-template-columns:minmax(0,1fr) 295px;gap:24px}.section-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.section-head p{font-size:10px;color:#87968b;margin:3px 0 0}.text-link{font-size:11px;color:var(--teal);padding:0}.roadmap-tabs{display:flex;gap:7px;margin-bottom:18px;flex-wrap:wrap}.pill{font-size:10px;border-radius:5px;padding:5px 10px;color:#8b978d;border:1px solid transparent}.pill.active{background:#fff;border-color:#dce5da;color:#35634b}.stage-list{display:grid;gap:12px}.stage-card{display:grid;grid-template-columns:45px 1fr auto;gap:14px;align-items:center;border:1px solid var(--line);background:white;border-radius:9px;padding:19px 20px;position:relative}.stage-card:first-child{border-color:#a9c8b5}.stage-icon{height:42px;width:42px;display:grid;place-items:center;background:color-mix(in srgb,var(--accent) 10%,white);border:1px solid color-mix(in srgb,var(--accent) 18%,white);border-radius:9px;color:var(--accent);font-size:18px;font-family:monospace;font-weight:bold}.stage-meta{font-size:9px;color:#99a297;letter-spacing:.7px;margin-bottom:4px}.stage-card h3{font-size:14px;margin:0 0 4px}.stage-card p{font-size:10px;color:#8a958a;margin:0}.stage-right{text-align:right;min-width:85px}.tag{display:inline-block;padding:3px 7px;border-radius:4px;background:#eef3ed;color:#6c866e;font-size:9px;white-space:nowrap}.tag.amber{background:#fbf3df;color:#ab8b45}.tag.blue{background:#eef2fb;color:#758eb1}.stage-right .progress{width:85px;margin-top:10px}.stage-bottom{font-size:9px;color:#8f9d8e}.stage-open{font-size:11px;color:#4c8060;margin-top:5px;padding:0}.panel{background:white;border:1px solid var(--line);border-radius:9px;padding:20px;margin-bottom:17px}.panel-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.panel-header h3{font-size:13px;margin:0}.tiny{font-size:10px;color:#8c9a90}.focus-date{font-size:10px;color:#8a9c89}.week-focus{font-size:15px;font-weight:600;line-height:1.8;margin:12px 0}.check-row{display:flex;gap:10px;align-items:flex-start;padding:10px 0;border-bottom:1px solid #f0f3ee;font-size:11px;color:#6a7d70}.check-row:last-child{border-bottom:0}.check-row input{accent-color:var(--teal);margin:5px 0 0;width:14px;height:14px;flex-shrink:0}.check-row label{cursor:pointer}.check-row:has(input:checked) label{text-decoration:line-through;color:#9cab9d}.soft-note{background:#f3f6ef;color:#7d9078;border-radius:6px;font-size:10px;padding:11px;line-height:1.9;margin-top:15px}.job-mini{padding:12px 0;border-bottom:1px solid #edf1eb}.job-mini h4{font-size:11px;margin:0 0 4px}.job-mini p{font-size:9px;color:#98a393;margin:0 0 7px}.job-mini .tag{margin-right:4px}.quote-panel{background:#edf1e7;border-color:#e0e7d7}.quote-panel p{font-size:12px;line-height:2;color:#6c8164}.quote-panel .tiny{display:block;margin-top:10px}footer{max-width:1600px;margin:0 auto;padding:10px 42px 25px;color:#9aa598;font-size:9px;display:flex;justify-content:space-between;gap:14px}footer a{color:#84937e}.filters{background:#fff;padding:16px;border:1px solid var(--line);border-radius:8px;display:flex;gap:12px;align-items:end;flex-wrap:wrap;margin-bottom:22px}.field{display:grid;gap:5px;flex:1;min-width:115px;font-size:10px;color:#809080}select,input,textarea{border:1px solid #dce4da;border-radius:5px;background:#fff;color:#385b4b;padding:9px 10px;min-width:0;font-size:12px}textarea{resize:vertical;min-height:94px;width:100%;line-height:1.8}.empty{padding:32px;text-align:center;color:#879585;border:1px dashed #cfdbcb;border-radius:8px;background:#ffffff7d}.learning-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.learning-card{padding:23px;background:#fff;border:1px solid var(--line);border-radius:10px}.learning-card-top{display:flex;gap:15px;align-items:center;margin-bottom:15px}.learning-card p{font-size:11px;color:#7a8e7a}.learning-card .actions{margin-top:18px;justify-content:space-between}.prereq{margin:12px 0;font-size:10px;color:#8c9987}.heading-divider{margin-top:27px;margin-bottom:16px}.job-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.job-card{background:#fff;border:1px solid var(--line);border-radius:9px;padding:23px}.job-card h3{font-size:15px;line-height:1.7;margin-bottom:4px}.job-company{color:#8e9d8a;font-size:11px;margin-bottom:14px}.tag-row{display:flex;flex-wrap:wrap;gap:6px;margin:12px 0}.job-details{font-size:11px;color:#788b74;display:grid;grid-template-columns:55px 1fr;gap:7px 10px;margin:17px 0}.job-details dt{color:#9aa492}.job-details dd{margin:0}.job-card .actions{margin-top:17px;padding-top:15px;border-top:1px solid #eef1eb}.job-card .actions .btn:last-child{margin-left:auto}.info-banner{border:1px solid #e8dfca;background:#fbf7ee;padding:15px 19px;border-radius:7px;color:#9d8b62;font-size:11px;margin-bottom:22px;line-height:1.9}.info-banner a{color:#7e7858;text-decoration:underline}.week-control{display:flex;align-items:center;gap:12px}.week-label{font-size:13px}.weekly-layout{display:grid;grid-template-columns:1fr 310px;gap:24px}.week-task{background:#fff;border:1px solid var(--line);border-radius:8px;padding:17px 20px;margin-bottom:12px;display:flex;gap:15px;align-items:center}.week-task input[type=checkbox]{accent-color:var(--teal);height:17px;width:17px}.week-task .task-info{flex:1}.week-task h3{font-size:13px;margin:0 0 3px}.week-task p{font-size:10px;color:#93a08d}.week-task input[type=date]{font-size:10px;width:126px}.form-stack{display:grid;gap:14px}.form-stack label{display:grid;gap:7px;font-size:11px;color:#7b8c75}.form-stack .btn{justify-self:start}.subhead{font-size:12px;color:#82907d;margin-bottom:18px}.review-row{border-bottom:1px solid #edf1e9;padding:14px 0;display:flex;justify-content:space-between;align-items:center;gap:15px}.review-row p{font-size:11px;color:#8c9985}.portfolio-card{background:#fff;border:1px solid var(--line);border-radius:9px;padding:24px}.portfolio-card h3{margin-bottom:10px}.portfolio-card p{font-size:11px;color:#82907b}.portfolio-card label{display:grid;gap:7px;font-size:11px;color:#7c8e72;margin-top:18px}.portfolio-card input{width:100%}.source-list{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}.source-card{background:#fff;border:1px solid var(--line);padding:22px;border-radius:8px}.source-card h3{font-size:14px}.source-card p{font-size:11px;color:#7f8f79;margin:7px 0 15px;line-height:1.9}.source-card a{font-size:11px}.settings-grid{display:grid;grid-template-columns:1fr 1fr;gap:22px}.settings-grid .panel{padding:25px}.settings-grid p{font-size:12px;color:#819076;line-height:2}.data-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:20px}dialog{border:0;border-radius:13px;padding:0;width:min(770px,calc(100% - 32px));max-height:89vh;color:var(--ink);box-shadow:0 25px 100px #153c3833;background:#f9fbf6}dialog::backdrop{background:#0e292b77;backdrop-filter:blur(3px)}.dialog-head{display:flex;align-items:flex-start;justify-content:space-between;padding:26px 29px 20px;border-bottom:1px solid #e3eadd;background:white}.dialog-head h2{font-size:21px;margin:4px 0}.close-btn{border-radius:50%;font-size:24px;width:30px;height:30px;line-height:1;color:#7d8b77}.dialog-body{padding:24px 29px}.dialog-task{padding:17px;background:white;border:1px solid #e1e8dc;border-radius:7px;margin-bottom:11px}.dialog-task-head{display:flex;gap:12px;align-items:center;justify-content:space-between}.dialog-task h3{font-size:13px;margin:0}.dialog-task p{font-size:11px;color:#83917b;margin:9px 0 13px}.dialog-task .actions{justify-content:space-between}.dialog-task select{padding:5px 8px;font-size:11px}.dialog-task input{font-size:10px;padding:5px 7px;width:135px}.task-date{display:flex;align-items:center;gap:8px;font-size:10px;color:#86957c}.modal-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.modal-grid label{display:grid;gap:5px;font-size:11px;color:#85917d}.modal-grid .wide{grid-column:1/-1}.toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%) translateY(100px);background:#183e32;color:#eff8e9;padding:12px 22px;border-radius:8px;font-size:12px;z-index:100;transition:transform .25s;max-width:90vw}.toast.show{transform:translateX(-50%) translateY(0)}.cert-input{display:flex;gap:10px;align-items:center;font-size:11px;color:#7d9073}.cert-input input{accent-color:var(--teal)}.mini-map{font-family:monospace;color:#83987d;letter-spacing:.2px;line-height:2.2;font-size:11px;padding:15px 0}.legend{font-size:10px;color:#8d9d84;margin-bottom:14px}.after-list{margin-top:18px;font-size:10px;color:#95a18b}.inline-form{display:flex;gap:9px;margin-bottom:20px}.inline-form input{flex:1}.search{min-width:180px}.full{width:100%}.notice{font-size:11px;color:#85957c;line-height:1.9}.overdue{color:#b47c47}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
@media(min-width:1500px){main{padding-top:42px}.hero{min-height:190px}.hero h2{font-size:28px}.stage-card{padding:22px}.stats{gap:20px}.main-grid{grid-template-columns:minmax(0,1fr) 330px}}
@media(max-width:1150px){.sidebar{width:197px;padding:30px 15px}.shell{margin-left:197px}main{padding:28px}.topbar{padding:0 28px}.main-grid{grid-template-columns:minmax(0,1fr) 255px;gap:18px}.hero-art{width:175px}.stat{padding:15px}.stage-card{padding:16px;gap:10px}.stage-card p{max-width:250px}.weekly-layout{grid-template-columns:1fr 270px}footer{padding:15px 28px}.hero{padding:24px}.hero h2{font-size:22px}}
@media(max-width:900px){.sidebar{width:176px;padding:25px 12px}.brand{margin:0 8px 34px}.brand-en{font-size:8px}.shell{margin-left:176px}.main-grid{grid-template-columns:1fr}.aside-panels{display:grid;grid-template-columns:1fr 1fr;gap:16px}.aside-panels .panel:last-child{display:none}.stats{grid-template-columns:repeat(2,1fr)}.hero-art{display:none}.weekly-layout{grid-template-columns:1fr}.job-grid,.source-list,.settings-grid{grid-template-columns:1fr}.page-head{align-items:start;gap:10px}.page-head .actions{justify-content:end}.timezone{display:none}footer{flex-direction:column}}
@media(max-width:640px){.sidebar{position:relative;width:100%;padding:16px 18px 10px}.brand{margin:0 0 16px;font-size:19px}.brandmark{width:33px;height:33px;font-size:22px}.brand-en{font-size:8px}.side-label,.side-bottom{display:none}nav{display:flex;gap:3px;overflow-x:auto}.navbtn{padding:8px 10px;white-space:nowrap;font-size:11px;gap:6px}.navbtn .navicon{font-size:14px}.navbtn.active:after{display:none}.shell{margin-left:0}.topbar{height:48px;padding:0 20px}.breadcrumb{font-size:10px}main{padding:23px 18px}.page-head{display:block}h1{font-size:25px}.page-head>.actions{margin-top:17px;justify-content:start}.hero{padding:22px;min-height:185px}.hero h2{font-size:22px}.hero p{font-size:11px}.stats{gap:10px;margin-bottom:25px}.stat{padding:14px}.stat-number{font-size:25px}.stage-card{grid-template-columns:36px 1fr auto;padding:14px 12px;gap:10px}.stage-icon{width:35px;height:35px;font-size:16px}.stage-card h3{font-size:12px}.stage-card p{font-size:9px;max-width:180px}.stage-meta{font-size:8px}.stage-right{min-width:63px}.stage-right .progress{width:63px}.stage-right .tag{font-size:8px;padding:2px 4px}.aside-panels{grid-template-columns:1fr}.learning-grid{grid-template-columns:1fr}.week-task{flex-wrap:wrap;padding:15px;gap:10px}.week-task .task-info{min-width:180px}.week-control{flex-wrap:wrap;margin-top:16px}.modal-grid{grid-template-columns:1fr}.modal-grid .wide{grid-column:auto}.dialog-body{padding:20px}.dialog-head{padding:22px}.dialog-task-head{align-items:start}.task-date{flex-wrap:wrap}.topright{gap:10px}.filters{gap:10px}.field{min-width:120px}.review-row{flex-wrap:wrap}.info-banner{font-size:10px}.subtitle{font-size:11px}.job-card{padding:20px}.inline-form{flex-wrap:wrap}.inline-form input{min-width:190px}}
