/* Calendar and registration components: native CSS, no runtime UI framework. */
.pla-calendar-page,.pla-schedule-note,.pla-register-page{--pc-bg:#fff;--pc-soft:#f3f7fc;--pc-text:#172638;--pc-muted:#526174;--pc-line:#d6e0ec;--pc-blue:#075bc7;--pc-link:#0756b5;color:var(--pc-text)}
[data-theme=dark] .pla-calendar-page,[data-theme=dark] .pla-schedule-note,[data-theme=dark] .pla-register-page{--pc-bg:#17202c;--pc-soft:#1e2b3b;--pc-text:#edf3fb;--pc-muted:#b8c6d8;--pc-line:#3b4a5d;--pc-link:#89c4ff}
.pla-calendar-page{max-width:1280px;margin:0 auto;padding:52px 24px 72px}.pla-calendar-page [hidden],.pla-register-page [hidden]{display:none!important}
.pla-calendar-page h1,.pla-calendar-page h2,.pla-calendar-page h3,.pla-register-page h1,.pla-register-page h2{color:var(--pc-text);font-weight:750;line-height:1.18;letter-spacing:-.025em}.pla-calendar-page p,.pla-register-page p{line-height:1.65}
.pla-calendar-intro{text-align:center;max-width:800px;margin:0 auto 36px}.pla-eyebrow{font-size:11px;font-weight:750;letter-spacing:.12em;text-transform:uppercase;color:var(--pc-link);margin:0 0 12px}.pla-calendar-intro h1{font-size:clamp(30px,4.5vw,48px);margin:10px 0 16px}.pla-calendar-intro>p:not(.pla-eyebrow){color:var(--pc-muted);font-size:17px}.pla-timezone{display:inline-flex;margin-top:16px;padding:7px 14px;background:var(--pc-soft);border:1px solid var(--pc-line);border-radius:24px;font-size:12px;font-weight:650}
.pla-calendar-course-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;margin:0 0 36px}.pla-calendar-course{padding:24px;background:var(--pc-bg);border:1px solid var(--pc-line);border-top:4px solid #075bc7;border-radius:16px;box-shadow:0 5px 20px #071a3410;display:flex;flex-direction:column;gap:14px;min-width:0}.pla-calendar-course.pla-track-python{border-top-color:#b47300}.pla-calendar-course.pla-track-documentation{border-top-color:#6e50b4}.pla-calendar-course h2{font-size:21px;min-height:2.4em;margin:0}.pla-calendar-course h2 a{color:inherit;text-decoration:none}.pla-calendar-course p{font-size:13px;margin:0}.pla-calendar-course .pla-course-start{font-size:16px;font-weight:750}.pla-calendar-course .pla-calendar-actions{margin-top:auto;padding-top:8px}.pla-calendar-muted{color:var(--pc-muted);font-size:13px}
.pla-calendar-actions{display:flex;flex-wrap:wrap;align-items:center;gap:12px 20px}.pla-calendar-actions a,.pla-calendar-bottom>a:not(.pla-button),.pla-calendar-download{color:var(--pc-link);font-size:13px;font-weight:650;text-decoration:underline;text-underline-offset:3px;min-height:44px;display:inline-flex;align-items:center}.pla-button,.pla-calendar-actions a.pla-button{display:inline-flex;align-items:center;justify-content:center;min-height:46px;padding:12px 18px;border:1px solid #075bc7;border-radius:8px;background:#075bc7;color:#fff;font-size:14px;font-weight:700;text-decoration:none;line-height:1.3;cursor:pointer}.pla-button:hover,.pla-calendar-actions a.pla-button:hover{background:#03499f}.pla-calendar-page a:focus-visible,.pla-calendar-page button:focus-visible,.pla-calendar-page select:focus-visible,.pla-register-page :is(a,input,select,button,summary):focus-visible{outline:3px solid #e69a12;outline-offset:3px}
.pla-calendar-panel{background:var(--pc-bg);border:1px solid var(--pc-line);border-radius:18px;overflow:hidden;scroll-margin-top:24px}.pla-calendar-heading{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:26px 26px 16px}.pla-calendar-heading h2{font-size:28px;margin:0}.pla-calendar-heading .pla-eyebrow{margin-bottom:6px}.pla-calendar-controls{display:flex;justify-content:space-between;gap:20px;align-items:end;padding:0 26px 16px}.pla-calendar-controls label{display:flex;flex-direction:column;font-size:12px;gap:7px;font-weight:650}.pla-calendar-controls select{background:var(--pc-soft);color:var(--pc-text);border:1px solid var(--pc-line);border-radius:8px;min-height:44px;padding:8px 36px 8px 12px;font:inherit;font-size:14px;max-width:100%}.pla-month-controls{display:flex;gap:8px;align-items:center}.pla-month-controls button{width:44px;height:44px;flex-shrink:0;border:1px solid var(--pc-line);border-radius:8px;background:var(--pc-bg);color:var(--pc-text);font-size:22px;cursor:pointer}.pla-month-controls button:disabled{opacity:.38;cursor:default}.pla-calendar-status{padding:0 26px;margin:0;font-size:13px;color:var(--pc-muted);min-height:22px}.pla-calendar-legend{display:flex;flex-wrap:wrap;gap:10px 18px;padding:16px 26px;font-size:11px;color:var(--pc-muted);border-bottom:1px solid var(--pc-line)}.pla-calendar-legend span{display:flex;align-items:center;gap:6px}.pla-calendar-legend span:before{content:'';width:8px;height:8px;border-radius:3px;background:#075bc7}.pla-calendar-legend .pla-legend-python:before{background:#b47300}.pla-calendar-legend .pla-legend-documentation:before{background:#7857c2}.pla-calendar-legend .pla-legend-capstone:before{background:#54716b}.pla-calendar-legend .pla-legend-holiday:before{background:#de5345}
.pla-calendar-month h3{font-size:20px;padding:22px 26px 14px;margin:0}.pla-month-grid{width:100%;table-layout:fixed;border-collapse:collapse}.pla-month-grid th{font-size:12px;color:var(--pc-muted);background:var(--pc-soft);padding:12px 8px;text-align:left}.pla-month-grid td{vertical-align:top;border:1px solid var(--pc-line);padding:8px;height:120px}.pla-month-grid td:first-child{border-left:0}.pla-month-grid td:last-child{border-right:0}.pla-month-grid time{display:block;font-size:12px;font-weight:750;margin:0 0 7px}.pla-month-grid .pla-empty-day{background:var(--pc-soft);opacity:.5}.pla-calendar-entry{border-left:3px solid #075bc7;background:#eaf3ff;color:#173c6b;border-radius:5px;padding:8px 7px;margin:5px 0;font-size:11px;line-height:1.45;overflow-wrap:anywhere}.pla-calendar-entry strong,.pla-calendar-entry span,.pla-calendar-entry small{display:block}.pla-calendar-entry strong{font-size:11px}.pla-calendar-entry small{font-size:10px;margin-top:3px}.pla-calendar-entry.pla-track-python{background:#fff3d8;color:#654600;border-color:#ad7400}.pla-calendar-entry.pla-track-documentation{background:#f0eaff;color:#503484;border-color:#7857c2}.pla-calendar-entry.pla-track-capstone{background:#edf3f0;color:#34594b;border-color:#54716b;border-left-style:dashed}.pla-calendar-holiday{padding:7px;border:1px dashed #d58631;border-radius:5px;color:var(--pc-text);font-size:11px;background:var(--pc-soft)}.pla-calendar-holiday strong,.pla-calendar-holiday span{display:block}.pla-calendar-holiday span{font-size:10px;color:var(--pc-muted)}
[data-theme=dark] .pla-calendar-entry{background:#173251;color:#c4e2ff}[data-theme=dark] .pla-calendar-entry.pla-track-python{background:#3a301d;color:#ffe3a6}[data-theme=dark] .pla-calendar-entry.pla-track-documentation{background:#302742;color:#dfceff}[data-theme=dark] .pla-calendar-entry.pla-track-capstone{background:#243a32;color:#c9e7d8}
.pla-calendar-agenda{display:none;list-style:none;margin:0;padding:0 18px 18px}.pla-calendar-agenda>li{display:grid;grid-template-columns:62px 1fr;gap:12px;padding:12px 0;border-bottom:1px solid var(--pc-line)}.pla-calendar-agenda time{padding-top:8px}.pla-calendar-agenda time strong{display:block;font-size:25px;line-height:1.1}.pla-calendar-agenda time span{font-size:11px;color:var(--pc-muted)}.pla-calendar-agenda .pla-calendar-entry{padding:12px;font-size:13px}.pla-calendar-agenda .pla-calendar-entry strong{font-size:14px}.pla-calendar-agenda .pla-calendar-entry small{font-size:12px}.pla-calendar-footnote{padding:20px 26px;font-size:12px;line-height:1.7;color:var(--pc-muted);background:var(--pc-soft)}.pla-calendar-footnote strong{color:var(--pc-text)}
.pla-calendar-policy{padding:32px 0}.pla-calendar-policy h2{font-size:24px;margin-bottom:12px}.pla-calendar-policy>p{font-size:14px;color:var(--pc-muted);max-width:850px}.pla-calendar-policy ul{list-style:none;margin:18px 0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.pla-calendar-policy li{border:1px solid var(--pc-line);border-radius:8px;background:var(--pc-bg);padding:12px 16px;display:flex;flex-direction:column;gap:5px;font-size:12px}.pla-calendar-policy li strong{font-size:13px}.pla-calendar-bottom{padding:30px;border-radius:16px;border:1px solid var(--pc-line);background:var(--pc-bg)}.pla-calendar-bottom h2{font-size:26px;margin:0 0 12px}.pla-calendar-bottom p{font-size:14px;color:var(--pc-muted);margin-bottom:18px}.pla-calendar-bottom>a{margin-right:20px}
.pla-schedule-note{background:var(--pc-bg);border:1px solid var(--pc-line);border-left:4px solid #075bc7;border-radius:12px;padding:22px;line-height:1.65}.pla-schedule-note p{margin-top:8px}.pla-schedule-note .pla-calendar-actions{margin-top:10px}
@media(max-width:1023px){.pla-calendar-course-grid{gap:12px}.pla-calendar-course{padding:18px}.pla-calendar-course h2{font-size:18px}.pla-month-grid td{padding:5px}.pla-calendar-entry{padding:6px 4px;font-size:10px}}
@media(max-width:767px){.pla-calendar-page{padding:32px 16px 48px}.pla-calendar-intro{margin-bottom:24px}.pla-calendar-intro>p:not(.pla-eyebrow){font-size:15px}.pla-calendar-course-grid{grid-template-columns:1fr;gap:14px}.pla-calendar-course{padding:22px;gap:10px}.pla-calendar-course h2{font-size:22px;min-height:0}.pla-calendar-course .pla-calendar-actions{padding-top:8px}.pla-calendar-heading{padding:22px 18px 16px;align-items:start;flex-wrap:wrap;gap:10px}.pla-calendar-heading h2{font-size:25px}.pla-calendar-controls{padding:0 18px 12px;flex-wrap:wrap;gap:14px}.pla-calendar-controls>label{width:100%}.pla-month-controls{width:100%}.pla-month-controls>label{flex:1;min-width:0}.pla-month-controls select{width:100%}.pla-calendar-status{padding:0 18px;font-size:12px}.pla-calendar-legend{padding:14px 18px;gap:8px 14px}.pla-calendar-month h3{padding:18px}.pla-month-grid{display:none}.pla-calendar-agenda{display:block}.pla-calendar-footnote{padding:18px}.pla-calendar-policy ul{grid-template-columns:repeat(2,minmax(0,1fr))}.pla-calendar-policy h2,.pla-calendar-bottom h2{font-size:22px}.pla-calendar-bottom{padding:22px}.pla-calendar-bottom>a{margin-right:12px}.pla-schedule-note{padding:18px}}
@media(prefers-reduced-motion:reduce){.pla-calendar-page *,.pla-register-page *{scroll-behavior:auto!important;transition:none!important;animation:none!important}}
@media print{.pla-calendar-controls,.pla-calendar-actions,.pla-calendar-bottom{display:none!important}.pla-calendar-month[hidden]{display:block!important}.pla-month-grid{display:table!important}.pla-calendar-agenda{display:none!important}.pla-calendar-page{max-width:none;padding:0}.pla-calendar-course-grid{grid-template-columns:repeat(3,1fr)}.pla-calendar-month{break-inside:avoid}.pla-calendar-page{--pc-bg:#fff;--pc-text:#111;--pc-muted:#444;--pc-line:#aaa}}
/* Registration: short required path, optional background, visible schedule. */
.pla-register-page{max-width:1160px;margin:0 auto;padding:48px 24px 72px}.pla-register-intro{max-width:760px;margin:0 auto 32px;text-align:center}.pla-register-intro h1{font-size:clamp(28px,4vw,42px);margin:8px 0 14px}.pla-register-intro>p:last-child{font-size:16px;color:var(--pc-muted)}.pla-register-grid{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);gap:24px;align-items:start}.pla-register-form-card,.pla-register-plan-card,.pla-register-next{padding:28px;background:var(--pc-bg);border:1px solid var(--pc-line);border-radius:16px;box-shadow:0 5px 20px #071a340c}.pla-register-page h2{font-size:23px;margin-bottom:10px}.pla-register-form-card>p{margin-bottom:22px}.pla-register-form-card form{display:grid;gap:18px}.pla-register-fields{display:grid;grid-template-columns:1fr 1fr;gap:16px}.pla-register-form-card label{display:block;font-size:13px;font-weight:650;color:var(--pc-text);margin-bottom:7px}.pla-register-form-card label>span,.pla-register-optional summary>span{color:var(--pc-muted);font-weight:400}.pla-register-form-card :is(input:not([type=checkbox]):not([type=hidden]),select,textarea){display:block;width:100%;max-width:100%;min-height:46px;border:1px solid var(--pc-line);border-radius:8px;background:var(--pc-bg);color:var(--pc-text);padding:11px 12px;font-size:14px;line-height:1.45}.pla-register-form-card input::placeholder,.pla-register-form-card textarea::placeholder{color:var(--pc-muted);opacity:1}.pla-register-form-card small{display:block;color:var(--pc-muted);font-size:11px;line-height:1.5;margin-top:6px}.pla-register-fee{font-size:13px;font-weight:650;margin-top:10px;color:var(--pc-link)}.pla-register-optional{border:1px solid var(--pc-line);border-radius:8px}.pla-register-optional summary{padding:13px;font-size:13px;cursor:pointer;font-weight:650;min-height:46px}.pla-register-optional>div{padding:0 14px 14px}.pla-register-optional input{margin-bottom:14px}.pla-register-form-card .pla-register-consent{display:flex;align-items:flex-start;gap:10px;font-size:12px;font-weight:400;line-height:1.65;margin:0}.pla-register-consent input{width:20px;height:20px;flex:0 0 20px;margin-top:1px;accent-color:#075bc7}.pla-register-form-card a,.pla-register-plan a{color:var(--pc-link);text-decoration:underline;text-underline-offset:3px}.pla-register-form-card .pla-button{width:100%;min-height:50px;font-size:15px}.pla-register-form-card .pla-button:disabled{opacity:.65;cursor:wait}.pla-register-disclosure{font-size:11px;color:var(--pc-muted);margin:0}.pla-register-error{padding:12px;border:1px solid #b42318;border-radius:8px;color:#b42318;background:#fff1ef;font-size:13px}.pla-register-contact{display:flex;flex-wrap:wrap;gap:12px 18px;margin-top:22px;font-size:12px}.pla-register-contact a{min-height:32px;display:inline-flex;align-items:center}.pla-register-plan{display:grid;gap:20px}.pla-register-plan h3{font-size:17px;font-weight:700;margin:18px 0 12px}.pla-register-plan-card p{font-size:14px;margin-bottom:12px}.pla-register-plan-card .pla-schedule-note{padding:16px;font-size:13px;box-shadow:none}.pla-register-plan-card .pla-schedule-note p{font-size:12px}.pla-register-plan-card .pla-calendar-actions{gap:6px 16px}.pla-register-plan-card .pla-calendar-actions a{font-size:12px;min-height:38px}.pla-register-next ol{list-style:none;counter-reset:next;display:grid;gap:20px;margin:22px 0 0;padding:0}.pla-register-next li{counter-increment:next;position:relative;padding-left:42px;font-size:13px;line-height:1.6}.pla-register-next li:before{content:counter(next);position:absolute;left:0;top:0;display:grid;place-items:center;width:28px;height:28px;background:var(--pc-soft);color:var(--pc-link);border-radius:50%;font-weight:750}.pla-register-next li strong,.pla-register-next li span{display:block}.pla-register-next li span{color:var(--pc-muted);font-size:12px}.pla-register-form-card form>.mt-4{margin-top:0}.pla-register-form-card .text-gray-600{color:var(--pc-muted)}
@media(max-width:850px){.pla-register-grid{grid-template-columns:1fr}.pla-register-page{padding:32px 16px 48px}.pla-register-form-card,.pla-register-plan-card,.pla-register-next{padding:22px}.pla-register-intro>p:last-child{font-size:14px}}@media(max-width:479px){.pla-register-fields{grid-template-columns:1fr}.pla-register-page{padding-left:12px;padding-right:12px}.pla-register-form-card,.pla-register-plan-card,.pla-register-next{padding:18px}}
.pla-register-selected-time{font-size:12px;color:var(--pc-muted);margin-top:10px;line-height:1.6}
