:root{--page:#ffffff;--ink:#1a1a1a;--ink-soft:#444;--grid-line:#c7c7c7;--band-a:#ffffff;--band-b:#eef6e9;--arrow:#3f7fc4;--arrow-co:#8a8a8a;--ready-ring:#2f9e44;--col-min:70px;--col-collapsed:30px}*{box-sizing:border-box}html,body{margin:0;padding:0;background:#f2f2ee;font-family:Arial,Helvetica,sans-serif;color:var(--ink)}body{padding:16px}.sheet{max-width:1500px;margin:0 auto;background:var(--page);border:1px solid #b9c9ae;box-shadow:0 1px 3px #0000001f}.banner{background:linear-gradient(to right,#8fc26f,#a9cf8e 15%,#c3dfb0,#ddeccf,#f2f8ec,#fff 95%);border-bottom:2px solid #7fa663;padding:9px 18px;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:6px}.banner .t1,.banner .t2{font-style:italic;font-weight:700;color:#1f3a14;font-size:14px}.banner-left{display:flex;align-items:center;gap:9px}.banner .t-short{display:none}.icon-btn{background:#fff;border:1px solid #7fa663;border-radius:7px;width:27px;height:27px;flex:none;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;font-size:14px;padding:0}.icon-btn:hover{background:#eef6e6}.icon-btn.active{background:#dcecd2;border-color:#4a7a3a}.toolbar{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:10px;padding:8px 18px;border-bottom:1px solid var(--grid-line);background:#fafaf7}.progress-wrap{display:flex;align-items:center;gap:10px;font-size:11.5px;color:var(--ink-soft)}.progress-bar-outer{width:160px;height:7px;background:#e3e3dd;border:1px solid #c9c9c0;border-radius:4px;overflow:hidden}.progress-bar-inner{height:100%;background:#5a9c56;width:0%}.progress-num{font-weight:700;color:#2c5a2a}.reset-btn{background:#fff;border:1px solid #b9b9b0;color:var(--ink-soft);font-size:11px;padding:4px 9px;border-radius:4px;cursor:pointer;font-family:Arial,sans-serif}.reset-btn:hover{background:#f0f0ea}.reset-btn.active{background:#e6f0e4;border-color:#7fa663;color:#2c5a2a}.start-term-label{display:flex;align-items:center;gap:5px;font-size:11px;color:var(--ink-soft)}.start-term-label select{font-size:11px;padding:3px 6px;border:1px solid #b9b9b0;border-radius:4px;font-family:Arial,sans-serif;background:#fff;color:var(--ink-soft)}.legend{display:flex;flex-wrap:wrap;gap:8px 14px;font-size:10.5px;color:var(--ink-soft);align-items:center}.legend-item{display:flex;align-items:center;gap:4px}.legend-sw{width:10px;height:10px;border:1px solid #999;flex:none}.legend-line{display:inline-flex;align-items:center;gap:4px}.legend-line .ln{width:16px;height:0;border-top:2px solid var(--arrow)}.legend-line .ln.co{border-top:2px dashed var(--arrow-co)}.hint{padding:5px 18px;font-size:10.5px;color:#777;border-bottom:1px solid var(--grid-line);background:#fafaf7}.ms-overall{margin-bottom:16px}.ms-overall-top{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:6px}.ms-overall-num{font-size:22px;font-weight:700;color:#2c5a2a}.ms-overall-sub{font-size:12px;color:#666}.ms-overall-bar-outer{height:9px;background:#eee;border:1px solid #ccc;border-radius:5px;overflow:hidden}.ms-overall-bar-inner{height:100%;background:#5a9c56;width:0%;transition:width .4s ease}.ms-cats{display:flex;flex-direction:column;gap:9px;margin-bottom:16px}.ms-cat-top{display:flex;justify-content:space-between;font-size:11.5px;color:#333;margin-bottom:3px}.ms-cat-bar-outer{height:6px;background:#eee;border-radius:4px;overflow:hidden}.ms-cat-bar-inner{height:100%;border-radius:4px;transition:width .4s ease}.ms-divider{border-top:1px solid #ddd;margin:14px 0}.ms-cat-row{cursor:pointer;padding:6px;margin:-6px;border-radius:6px}.ms-cat-row:hover{background:#f2f2ee}.ms-course-list{display:flex;flex-direction:column;gap:6px;max-height:380px;overflow-y:auto;margin-bottom:4px}.ms-course-row{display:flex;align-items:center;gap:9px;border:1px solid #ddd;border-radius:6px;padding:7px 10px;font-size:12px;background:#fafaf7}.ms-course-row.done{background:#eaf5e9;border-color:#9ecf9a}.ms-course-dot{width:9px;height:9px;border-radius:50%;background:#bbb;flex:none}.ms-course-row.done .ms-course-dot{background:#2c5a2a}.ms-course-code{font-weight:700;color:#222;flex:none}.ms-course-name{color:#555;flex:1}.ms-course-credits{color:#888;font-size:10.5px;flex:none}.ms-back-btn{margin-bottom:12px}.ms-planner-title{font-size:13.5px;font-weight:700;color:#222;margin-bottom:9px}.ms-planner-row{display:flex;gap:12px;margin-bottom:9px;flex-wrap:wrap}.ms-planner-row label{flex:1;font-size:11.5px;color:#444;display:flex;flex-direction:column;gap:4px;min-width:140px}.ms-planner-row input,.ms-planner-row select{padding:6px 8px;border:1px solid #ccc;border-radius:5px;font-size:12.5px;font-family:Arial,sans-serif}.ms-planner-help{font-size:11px;color:#777;margin:-2px 0 10px;line-height:1.4}.ms-planner-result{margin-top:10px;font-size:12.5px;color:#222;line-height:1.55;background:#f5f5f2;border:1px solid #ddd;border-radius:6px;padding:9px 11px;min-height:16px}.gp-fields{display:grid;grid-template-columns:1fr 1fr 1.5fr;gap:10px;margin-bottom:10px}.gp-fields label,.gp-from{display:flex;flex-direction:column;gap:4px;font-size:11px;color:#555;min-width:0}.gp-fields input,.gp-fields select{padding:6px 8px;border:1px solid #ccc;border-radius:5px;font-size:12.5px;font-family:Arial,sans-serif;width:100%;min-width:0}.gp-term{display:flex;gap:6px}.gp-term select{flex:1}.gp-term input{width:74px;flex:none}.gp-result{border:1px solid #cfe0c3;background:#f4f9ef;border-radius:8px;padding:11px 13px}.gp-result.error{background:#fbeaea;border-color:#e3b3b3;color:#a33;font-size:12px;line-height:1.5}.gp-eyebrow{font-size:11px;color:#5a7550;text-transform:uppercase;letter-spacing:.05em;font-weight:700}.gp-date{font-size:21px;font-weight:700;color:#1f3a14;margin:2px 0 6px}.gp-line{font-size:12.5px;color:#2d3a26;line-height:1.5}.gp-detail{font-size:11px;color:#777;line-height:1.45;margin-top:7px;padding-top:7px;border-top:1px dashed #cfe0c3}.gp-start{margin-top:10px;font-size:12px;color:#555}.gp-start-summary{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.gp-muted{color:#999;font-size:11px}.gp-link{border:none;background:none;color:#3f7fc4;font:inherit;font-size:12px;cursor:pointer;padding:0;text-decoration:underline}.gp-danger{color:#a33}.gp-start-editor{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:7px}.gp-start-editor select,.gp-start-editor input{padding:5px 7px;border:1px solid #ccc;border-radius:5px;font-size:12px;font-family:Arial,sans-serif}.gp-start-editor input{width:74px}.gp-start-editor .btn{flex:none;padding:6px 14px}.gp-start-msg{font-size:11.5px;line-height:1.45;margin-top:5px}.gp-start-msg:empty{display:none}.gp-start-msg.warn{color:#8a6412}.gp-start-msg.error{color:#a33}.ms-planner-result.error{color:#a33;background:#fbeaea;border-color:#e3b3b3}.tech-list{display:flex;flex-direction:column;gap:7px;max-height:380px;overflow-y:auto;margin-bottom:10px;padding-right:2px}.tech-row{border:1px solid #ccc;border-radius:7px;padding:8px 10px;cursor:pointer;background:#f7f7f4}.tech-row.ready{background:#e9f7ea;border-color:#7fbf7f}.tech-row.ready:hover{background:#dcf3dd}.tech-row.locked{opacity:.6}.tech-row.locked:hover{opacity:.85}.tech-row-top{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}.tech-row-code{font-weight:700;font-size:12px;color:#222}.tech-row-name{font-size:11.5px;color:#444;flex:1;min-width:120px}.tech-row-credits{font-size:10.5px;color:#888}.tech-row-note{font-size:10.5px;color:#a33;margin-top:4px;font-style:italic}.tech-row-reqs{display:none;margin-top:8px;padding-top:8px;border-top:1px dashed #ccc}.tech-row.expanded .tech-row-reqs{display:block}.board-scroll{overflow-x:auto;scrollbar-width:none;-ms-overflow-style:none}.focus-board{display:none;padding:16px 18px 20px}.focus-board.show{display:block}.focus-section-title{font-size:12.5px;font-weight:700;color:#2a2a2a;margin-bottom:10px}.focus-divider{border-top:1px solid var(--grid-line);margin:18px 0}.focus-group{display:flex;align-items:flex-start;gap:12px;flex-wrap:wrap;margin-bottom:12px}.focus-arrow{font-size:18px;color:#3f7fc4;font-weight:700;padding-top:14px;flex:none}.focus-deps{display:flex;flex-direction:column;gap:8px}.focus-open-grid{display:flex;flex-wrap:wrap;gap:8px}.focus-mini-box{min-width:160px;cursor:pointer}.focus-mini-current{box-shadow:0 0 0 2px #b9861f}.focus-mini-soon{box-shadow:0 0 0 2px #3f7fc4}.focus-mini-open{box-shadow:0 0 0 2px var(--ready-ring)}.plan-board{display:none;padding:16px 18px 20px}.plan-board.show{display:block}.plan-columns{display:flex;gap:16px;flex-wrap:wrap}.plan-backpack{flex:1;min-width:240px;background:#fafaf7;border:1px solid var(--grid-line);border-radius:8px;padding:10px 12px;min-height:80px}.plan-backpack.drag-over{outline:2px dashed #3f7fc4;outline-offset:-2px}.plan-backpack-title{font-size:11.5px;font-weight:700;color:#333;margin-bottom:9px}.plan-backpack-list{display:flex;flex-wrap:wrap;gap:7px}.plan-card{min-width:140px;border-radius:6px;border:1px solid var(--box-border,#999);background:linear-gradient(to bottom,var(--box-top,#eee),var(--box-bottom,#ddd));padding:6px 8px;text-align:left;cursor:grab;position:relative}.plan-card .mb-code{font-size:11px;font-weight:700;color:var(--box-text,#222)}.plan-card .mb-name{font-size:9.5px;color:var(--box-text,#222);margin-top:2px;line-height:1.2}.plan-card-note{font-size:8.5px;color:#8a5a12;background:#ffffff8c;border-radius:4px;padding:3px 5px;margin-top:5px;line-height:1.3;font-style:italic}.plan-card.locked{cursor:default;opacity:.65;position:relative}.plan-card.locked[data-tooltip]:hover{opacity:1;z-index:20}.plan-card.locked[data-tooltip]:hover:after{content:attr(data-tooltip);position:absolute;left:0;top:100%;margin-top:6px;z-index:50;background:#222;color:#fff;font-size:10.5px;line-height:1.4;font-weight:400;padding:7px 9px;border-radius:6px;width:200px;white-space:normal;box-shadow:0 4px 10px #0000004d}.plan-card.locked[data-tooltip]:hover:before{content:"";position:absolute;left:14px;top:100%;margin-top:1px;z-index:51;border:5px solid transparent;border-bottom-color:#222}.plan-schedule-wrap{margin-top:4px}.plan-schedule-header{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:10px}.plan-schedule-credits{font-size:11.5px;color:#666;font-weight:700}.plan-schedule-zone{min-height:90px;border:2px dashed #b9c9ae;border-radius:8px;padding:12px;display:flex;flex-wrap:wrap;gap:8px;align-content:flex-start;background:#fbfcf9}.plan-schedule-zone.drag-over{border-color:#3f7fc4;background:#eef3fb}.plan-schedule-zone:empty:before{content:'Drag courses here from "Available to take next semester" to build your plan.';color:#999;font-size:11.5px;font-style:italic}.plan-card .plan-remove{position:absolute;top:2px;right:2px;width:14px;height:14px;border-radius:50%;border:1px solid rgba(0,0,0,.3);background:#fffc;color:#a33;font-size:9px;line-height:1;display:flex;align-items:center;justify-content:center;cursor:pointer}.board-scroll::-webkit-scrollbar{display:none;height:0}.board{position:relative;display:grid;grid-template-columns:var(--gc1,minmax(var(--col-min),1fr)) var(--gc2,minmax(var(--col-min),1fr)) var(--gc3,minmax(var(--col-min),1fr)) var(--gc4,minmax(var(--col-min),1fr)) var(--gc5,minmax(var(--col-min),1fr)) var(--gc6,minmax(var(--col-min),1fr)) var(--gc7,minmax(var(--col-min),1fr)) var(--gc8,minmax(var(--col-min),1fr)) var(--gc9,minmax(var(--col-min),1fr)) var(--gc10,minmax(var(--col-min),1fr)) var(--gc11,minmax(var(--col-min),1fr)) var(--gc12,minmax(var(--col-min),1fr));grid-template-rows:auto auto;column-gap:14px;min-width:960px}.col-content{grid-row:2;display:flex;flex-direction:column;min-height:20px;height:100%}.board.editing .card{cursor:grab}.board.editing .card:active{cursor:grabbing}.drag-hover{box-shadow:0 0 0 3px #3f7fc4!important;background-color:#3f7fc41f!important;transition:box-shadow .1s ease,background-color .1s ease}.ghost-slot{min-height:44px;margin:7px 6px;border:2px dashed #c7c7bd;border-radius:6px;background:#00000004;flex:none}.gap-slot{min-height:44px;margin:7px 6px;border:2px dashed transparent;border-radius:6px;background:transparent;flex:none}.board.editing .gap-slot{border-color:#c7c7bd;background:#00000004}.col-header .yr{cursor:pointer}.col-header .yr:hover{text-decoration:underline}.hidden-years-bar{display:none;flex-wrap:wrap;align-items:center;gap:7px;padding:8px 18px;border-bottom:1px solid var(--grid-line);background:#fafaf7}.hidden-years-bar.show{display:flex}.hy-label{font-size:10.5px;font-weight:700;color:#7a8a70;text-transform:uppercase;letter-spacing:.06em;margin-right:3px}.hidden-year-chip{display:inline-flex;align-items:center;gap:7px;padding:3px 4px 3px 11px;background:repeating-linear-gradient(135deg,#f4f7f0 0 6px,#eef3e8 6px 12px);border:1px solid #b9c9ae;border-radius:14px;font:700 11px Arial,sans-serif;color:#3a5a2e;cursor:pointer;transition:border-color .15s ease,background-color .15s ease}.hidden-year-chip .hy-plus{width:17px;height:17px;border-radius:50%;background:#fff;border:1px solid #7fa663;color:#3a5a2e;display:inline-flex;align-items:center;justify-content:center;font-size:12px;line-height:1}.hy-showall{border:none;background:none;color:#4a7a3a;font:700 11px Arial,sans-serif;cursor:pointer;padding:4px 6px;text-decoration:underline}@media(hover:hover){.hidden-year-chip:hover{border-color:#4a7a3a;background:#e3eedb}.hidden-year-chip:hover .hy-plus{background:#eef6e6}}.col-band{grid-row:2;border-right:1px solid var(--grid-line)}.col-header.collapsed{padding:0;min-height:100%;cursor:pointer}.col-header.collapsed>*{display:none!important}.col-header.collapsed:after{content:"+";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:20px;height:20px;border-radius:50%;border:1px solid #7fa663;background:#fff;color:#3a5a2e;font-size:14px;font-weight:700;line-height:18px;text-align:center}.col-band.collapsed{cursor:pointer;display:flex;justify-content:center;padding-top:14px;background:repeating-linear-gradient(135deg,#f4f7f0 0 6px,#eef3e8 6px 12px)!important;transition:background-color .15s ease}.col-band.collapsed{flex-direction:column;align-items:center;justify-content:flex-start;gap:10px}.tuck-btn{width:20px;height:20px;border-radius:50%;border:1px solid #9aa890;background:#fff;color:#5a6a50;font:700 14px/1 Arial,sans-serif;display:flex;align-items:center;justify-content:center;padding:0;cursor:pointer;opacity:0;transition:opacity .15s ease,background-color .15s ease}@media(hover:hover){.col-band.collapsed:hover .tuck-btn{opacity:1}.tuck-btn:hover{background:#f0f0ea;border-color:#5a6a50}}@media(hover:none){.tuck-btn{opacity:1;width:26px;height:26px;font-size:16px}}.col-band.collapsed .collapsed-label{writing-mode:vertical-rl;font-size:11px;font-weight:700;color:#5a7550;white-space:nowrap}@media(hover:hover){.col-header.collapsed:hover:after{background:#eef6e6}.col-band.collapsed:hover{background:#e3eedb!important}}.col-band:last-child{border-right:none}.col-header{grid-row:1;padding:6px 3px 7px;text-align:center;position:relative;border-right:1px solid var(--grid-line);border-bottom:1px solid #9fb98d;background:linear-gradient(to bottom,#eef6e6,#dcecd2)}.col-header:last-child{border-right:none}.col-header .yr{font-size:9.5px;color:#3a5a2e;font-weight:700;line-height:1.3}.col-header .term{font-size:10.5px;color:#1f3a14;font-weight:700;line-height:1.3}.col-header .cr{font-size:8.5px;color:#5a7550;margin-top:2px}.col-header-extra{border-top:2px dashed #7fa663}.col-trash{position:absolute;top:3px;right:3px;width:16px;height:16px;padding:0;border:1px solid #c98a8a;border-radius:4px;background:#fff;color:#a33;font-size:9px;line-height:1;cursor:pointer;opacity:0;transition:opacity .15s ease;display:flex;align-items:center;justify-content:center}.col-header-extra:hover .col-trash{opacity:1}.col-trash:hover{background:#fbeaea}.col-add{position:absolute;top:3px;left:3px;width:16px;height:16px;padding:0;border:1px solid #7fa663;border-radius:4px;background:#fff;color:#3a5a2e;font-size:11px;font-weight:700;line-height:1;cursor:pointer;opacity:0;transition:opacity .15s ease;display:flex;align-items:center;justify-content:center}.col-header:hover .col-add{opacity:1}.col-add:hover{background:#eef6e6}.lines-svg{position:absolute;top:0;left:0;pointer-events:none;overflow:visible;z-index:1}.card{position:relative;z-index:2;margin:7px 6px;border-radius:4px;border:1px solid var(--box-border);background:linear-gradient(to bottom,var(--box-top),var(--box-bottom));padding:6px 6px 5px;text-align:center;cursor:pointer;min-height:46px;transition:opacity .2s ease,box-shadow .15s ease}@media(hover:hover){.card:hover{box-shadow:0 0 0 1px #333}}.card .ccode{font-size:10.5px;font-weight:700;color:var(--box-text);line-height:1.3}.card .cname{font-size:9px;color:var(--box-text);line-height:1.25;margin-top:2px}.card .ccredit{font-size:8px;color:var(--box-text);opacity:.75;margin-top:2px}.check{position:absolute;top:2px;right:2px;width:11px;height:11px;border-radius:50%;border:1px solid rgba(0,0,0,.3);background:#fff9;display:flex;align-items:center;justify-content:center;font-size:8px;color:transparent}.inprog{position:absolute;top:2px;left:2px;width:11px;height:11px;border-radius:50%;border:1px solid rgba(0,0,0,.3);background:#fff9;display:flex;align-items:center;justify-content:center;font-size:9px;line-height:1;color:transparent;opacity:0;transition:opacity .15s ease}.card.inprogress .inprog{opacity:1}@media(hover:hover){.card:hover .inprog{opacity:1}}.card.done{box-shadow:inset 0 0 0 2px #2c5a2a;position:relative}.card.done .ccode,.card.done .cname,.card.done .ccredit{opacity:.4}.card.done:after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;z-index:4;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100' preserveAspectRatio='none'><line x1='0' y1='65' x2='65' y2='0' stroke='rgba(40,50,40,0.5)' stroke-width='4'/><line x1='0' y1='100' x2='100' y2='0' stroke='rgba(40,50,40,0.5)' stroke-width='4'/><line x1='35' y1='100' x2='100' y2='35' stroke='rgba(40,50,40,0.5)' stroke-width='4'/></svg>")}.card.done .check{background:#2c5a2a;border-color:#2c5a2a;color:#fff;z-index:5}.card.inprogress{box-shadow:inset 0 0 0 2px #b9861f;position:relative}.card.inprogress:after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;z-index:4;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100' preserveAspectRatio='none'><line x1='0' y1='100' x2='100' y2='0' stroke='rgba(185,134,31,0.6)' stroke-width='5'/></svg>")}.card.inprogress .inprog{background:#b9861f;border-color:#b9861f;color:#fff;z-index:5}.card.ready:not(.done):not(.inprogress){box-shadow:0 0 0 2px var(--ready-ring)}.card.dim-course{opacity:.25}.card.dim-course:hover{box-shadow:none;transform:none}.card.hl-course{box-shadow:0 0 0 2px #3f7fc4;z-index:3}.card.dim{opacity:.15}.card.dim:hover{box-shadow:none}.card.hl-target{box-shadow:0 0 0 2px var(--ready-ring)}.card.hl-pre{box-shadow:0 0 0 2px var(--arrow)}.card.hl-co{box-shadow:0 0 0 2px var(--arrow-co)}.line-edge{fill:none;stroke:var(--arrow);stroke-width:2;opacity:.85}.line-edge.co{stroke:var(--arrow-co);stroke-dasharray:5 3;stroke-width:2}.line-edge.dim{opacity:0}.line-edge.hl{opacity:1;stroke-width:2.6}.note{padding:6px 18px;font-size:9.5px;font-style:italic;color:#555;border-top:1px solid var(--grid-line);background:#fafaf7}.overlay{position:fixed;inset:0;background:#0006;display:none;align-items:center;justify-content:center;z-index:50;padding:16px}.overlay.show{display:flex}.modal{background:#fff;border:1px solid #ccc;border-radius:6px;max-width:400px;width:100%;padding:18px 18px 14px;box-shadow:0 4px 20px #0003}.modal .m-top{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}.modal .m-code{font-size:16px;font-weight:700}.modal .m-name{font-size:13px;color:#444;margin-top:3px}.modal .m-close{background:none;border:none;color:#888;font-size:18px;cursor:pointer;line-height:1}.modal .m-close:hover{color:#000}.modal .m-badges{display:flex;gap:6px;margin-top:10px;flex-wrap:wrap}.badge{font-size:10px;padding:2px 8px;border-radius:3px;border:1px solid #ccc;color:#444;background:#f5f5f2}.modal .m-desc{font-size:12.5px;line-height:1.55;color:#333;margin-top:12px}.modal .m-sec{margin-top:12px}.modal .m-sec-label{font-size:10.5px;color:#777;margin-bottom:5px;font-weight:700}.req-chip{display:inline-flex;align-items:center;gap:5px;font-size:11px;border:1px solid #ccc;border-radius:4px;padding:3px 7px;margin:0 5px 5px 0;color:#444}.req-chip .dot{width:6px;height:6px;border-radius:50%;background:#aaa;flex:none}.req-chip.done .dot{background:#2c5a2a}.req-chip.done{color:#2c5a2a;border-color:#8fbb8a}.none-txt{font-size:11.5px;color:#999;font-style:italic}.m-actions{display:flex;gap:8px;margin-top:16px}.m-top-actions{display:flex;align-items:center;gap:6px}.m-drive{width:28px;height:28px;border-radius:6px;border:1px solid #ccc;background:#f7f9f4;color:#3a5a2e;display:flex;align-items:center;justify-content:center;text-decoration:none}.m-drive:hover{background:#e8f2df;border-color:#7fa663}button.m-drive{padding:0;cursor:pointer;font:inherit}.unlock-panel.gc-panel{max-width:560px;width:100%;text-align:left}.gc-panel input::-webkit-outer-spin-button,.gc-panel input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.gc-panel input[type=number]{-moz-appearance:textfield}.gc-title{font-size:18px;font-weight:700;color:#1f3a14}.gc-sub{font-size:12.5px;color:#5a7550;margin-top:2px}.gc-summary{margin:14px 0 4px;border:1px solid #cfe0c3;background:#f4f9ef;border-radius:10px;padding:12px 14px}.gc-eyebrow{font-size:11px;font-weight:700;color:#5a7550;text-transform:uppercase;letter-spacing:.05em}.gc-big{font-size:26px;font-weight:700;color:#1f3a14;margin:2px 0 4px;display:flex;align-items:baseline;gap:10px}.gc-big.empty{font-size:15px;color:#666;font-weight:400}.gc-letter{font-size:15px;background:#3a8a4a;color:#fff;border-radius:6px;padding:2px 9px}.gc-meta{font-size:12px;color:#555;line-height:1.45}.gc-cat{margin-top:12px;border:1px solid #e2e6dc;border-radius:10px;padding:10px 12px}.gc-cat-head{display:flex;justify-content:space-between;align-items:baseline;font-weight:700;font-size:13.5px;color:#1f3a14}.gc-w{font-size:12px;color:#5a7550}.gc-note{font-size:11.5px;color:#777;margin:3px 0 6px;line-height:1.4}.gc-row{display:grid;grid-template-columns:minmax(70px,1fr) 64px 10px 64px 58px 64px;align-items:center;gap:6px;padding:4px 0}.gc-row+.gc-row{border-top:1px dashed #eceee8}.gc-label{font-size:12.5px;color:#333}.gc-row input{width:100%;padding:5px 6px;border:1px solid #ccc;border-radius:5px;font:12.5px Arial,sans-serif;text-align:center}.gc-row input:focus{outline:2px solid #7fa663;outline-offset:0;border-color:#7fa663}.gc-slash{color:#999;text-align:center;font-size:12px}.gc-pct{font-size:12px;color:#333;text-align:right;font-variant-numeric:tabular-nums}.gc-tag{font-size:10.5px;font-weight:700;border-radius:10px;padding:2px 7px;text-align:center;justify-self:end}.gc-tag.counted{background:#e3f0da;color:#2c5a2a}.gc-tag.dropped{background:#f3e7c9;color:#8a6412}.gc-row.dropped .gc-label,.gc-row.dropped .gc-pct{color:#aaa;text-decoration:line-through}.gc-need-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:6px;margin-top:6px}.gc-chip{border:1px solid #e2e6dc;border-radius:8px;padding:6px 8px;display:flex;justify-content:space-between;align-items:baseline;gap:6px}.gc-chip b{font-size:12.5px;color:#1f3a14}.gc-chip span{font-size:12px;color:#333;font-variant-numeric:tabular-nums}.gc-chip.secured{background:#eef6e6;border-color:#cfe0c3}.gc-chip.secured span{color:#2c5a2a}.gc-chip.reach span{color:#aaa}.gc-foot{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-top:12px;font-size:11px;color:#888;line-height:1.4}.gc-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.gc-mode-btn{flex:none;border:1px solid #9fc285;background:#fff;color:#2c5a2a;border-radius:16px;padding:6px 13px;font:700 12px Arial,sans-serif;cursor:pointer}.gc-mode-btn:hover{background:#eef6e6;border-color:#4a7a3a}.gc-mode-btn.on{background:#3a8a4a;border-color:#2f7a3d;color:#fff}.gc-warn{margin-top:10px;font-size:12px;color:#8a6412;background:#fdf6e3;border:1px solid #f0dca8;border-radius:8px;padding:8px 10px}.gc-edit-intro{margin-top:10px}.gc-total{font-size:12px;border-radius:8px;padding:7px 10px;margin-top:4px}.gc-total.ok{background:#eef6e6;color:#2c5a2a}.gc-total.warn{background:#fdf6e3;color:#8a6412;border:1px solid #f0dca8}.gc-edit-head{display:flex;align-items:center;gap:8px}.gc-text{flex:1;min-width:0;padding:6px 8px;border:1px solid #ccc;border-radius:6px;font:12.5px Arial,sans-serif;color:#222}.gc-sec-name{font-weight:700;font-size:13.5px;color:#1f3a14}.gc-num{width:64px;padding:6px;border:1px solid #ccc;border-radius:6px;font:12.5px Arial,sans-serif;text-align:center}.gc-text:focus,.gc-num:focus,.gc-keep select:focus{outline:2px solid #7fa663;outline-offset:0;border-color:#7fa663}.gc-weight-wrap{display:flex;align-items:center;gap:3px;font-size:12px;color:#5a7550;flex:none}.gc-keep{display:flex;align-items:center;gap:6px;flex-wrap:wrap;font-size:12px;color:#555;margin-top:8px}.gc-keep select{padding:4px 6px;border:1px solid #ccc;border-radius:6px;font:12px Arial,sans-serif}.gc-keep-note{font-size:11px;color:#8a6412;background:#fdf6e3;border-radius:10px;padding:2px 8px}.gc-edit-items{margin-top:8px;display:flex;flex-direction:column;gap:6px}.gc-edit-item{display:flex;align-items:center;gap:6px}.gc-outof-label{font-size:11px;color:#888;flex:none}.gc-icon-btn{flex:none;width:28px;height:28px;border-radius:6px;border:1px solid #ddd;background:#fff;color:#777;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;font-size:16px;line-height:1;padding:0}.gc-icon-btn:hover:not(:disabled){border-color:#c99;color:#a33;background:#fbf1f1}.gc-icon-btn:disabled{opacity:.35;cursor:not-allowed}.gc-add{margin-top:8px;width:100%;border:1px dashed #b9c9ae;background:#fafcf7;color:#3a5a2e;border-radius:8px;padding:7px;font:700 12px Arial,sans-serif;cursor:pointer}.gc-add:hover:not(:disabled){background:#eef6e6;border-color:#4a7a3a}.gc-add:disabled{opacity:.45;cursor:not-allowed}.gc-add-sec{margin-top:12px;padding:10px}@media(min-width:761px){#gradeOverlay{align-items:flex-start}#gradeOverlay .gc-panel{margin:auto 0}.gc-panel .gc-head{position:sticky;top:-50px;z-index:5;background:#fff;margin:-26px -20px 0;padding:22px 20px 10px;border-radius:10px 10px 0 0;box-shadow:0 1px #eceee8}}.gc-edit-compact .gc-cat{margin-top:8px;padding:8px 10px}.gc-edit-compact .gc-keep{margin-top:6px}.gc-edit-compact .gc-edit-items{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px 10px;margin-top:6px}.gc-edit-compact .gc-edit-item{gap:4px}.gc-edit-compact .gc-edit-item .gc-text{padding:5px 7px}.gc-edit-compact .gc-edit-item .gc-num{width:52px;padding:5px 4px}.gc-edit-compact .gc-outof-label{font-size:0}.gc-edit-compact .gc-outof-label:after{content:"/";font-size:12px;color:#999}.gc-edit-compact .gc-edit-item .gc-icon-btn{width:26px;height:26px}.gc-edit-compact .gc-add{width:auto;justify-self:start;align-self:center;margin-top:0;padding:4px 10px;font-size:11.5px}.gc-edit-compact .gc-edit-item .gc-icon-btn:disabled{visibility:hidden}@media(max-width:760px){.gc-edit-compact .gc-edit-items{grid-template-columns:1fr;gap:5px}.gc-edit-compact .gc-edit-item .gc-num{width:56px}.gc-edit-compact .gc-edit-item .gc-icon-btn{width:30px;height:30px}}.gc-tiles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;margin-top:6px}.gc-tiles .gc-row{display:flex;align-items:center;gap:4px;padding:4px 6px;border:1px solid #eceee8;border-radius:7px}.gc-tiles .gc-row+.gc-row{border-top:1px solid #eceee8}.gc-tiles .gc-label{flex:none;width:22px;font-weight:700;color:#5a7550}.gc-tiles .gc-row input{min-width:0;flex:1;padding:4px 2px}.gc-tiles .gc-pct,.gc-tiles .gc-tag{display:none}.gc-tiles .gc-row.dropped{opacity:.5}.gc-single .gc-row{grid-template-columns:minmax(70px,1fr) 64px 10px 64px 58px}.gc-single .gc-tag{display:none}.gc-single .gc-label .gc-w{margin-left:6px}@media(max-width:760px){.gc-tiles{grid-template-columns:repeat(2,minmax(0,1fr))}.gc-single .gc-row{grid-template-columns:minmax(58px,1fr) 58px 8px 58px 50px}}.gc-foot .btn.primary.gc-done{flex:none;padding:7px 18px;background:#3a8a4a;border-color:#2f7a3d;color:#fff}.gc-foot .btn.primary.gc-done:hover{background:#347a40}@media(max-width:760px){.gc-num{width:58px}.gc-icon-btn{width:34px;height:34px}.gc-mode-btn{padding:8px 13px}}@media(max-width:760px){.gc-row{grid-template-columns:minmax(58px,1fr) 58px 8px 58px 50px 58px;gap:5px}.gc-big{font-size:24px}}.btn{flex:1;text-align:center;padding:8px 10px;border-radius:4px;font-size:12.5px;font-weight:700;cursor:pointer;border:1px solid #ccc;background:#f5f5f2;color:#222}.btn.primary{background:#3f7fc4;border-color:#3f7fc4;color:#fff}.btn:hover{filter:brightness(1.05)}.btn.locate{flex:none;padding:8px 12px;font-weight:400}.unlock-overlay{position:fixed;inset:0;z-index:70;display:none;align-items:center;justify-content:center;padding:50px 16px 40px;overflow-y:auto;background:#e6e6e000;transition:background .3s ease}.unlock-overlay.show{display:flex;background:#e6e6e0f0}.unlock-close{position:fixed;top:16px;right:22px;background:#fff;border:1px solid #c9c9c0;color:#444;font-size:20px;width:34px;height:34px;border-radius:50%;cursor:pointer;line-height:1;z-index:71;box-shadow:0 2px 6px #0000001f}.unlock-close:hover{background:#f0f0ea}.unlock-panel{max-width:920px;width:100%;text-align:center;background:#fff;border:1px solid #d7d7cc;border-radius:10px;padding:26px 20px 22px;box-shadow:0 8px 30px #00000024}.unlock-card-big{display:inline-block;min-width:190px;border-radius:9px;border:2px solid var(--box-border,#999);background:linear-gradient(to bottom,var(--box-top,#eee),var(--box-bottom,#ddd));padding:14px 20px;opacity:0;box-shadow:0 4px 14px #0000002e;flex:none}.unlock-card-big.pop{animation:popIn .55s cubic-bezier(.34,1.56,.64,1) forwards}@keyframes popIn{0%{opacity:0;transform:scale(.25) translateY(30px) rotate(-5deg)}55%{opacity:1;transform:scale(1.1) translateY(-6px) rotate(1.5deg)}78%{transform:scale(.95) rotate(-.5deg)}to{opacity:1;transform:scale(1) translateY(0) rotate(0)}}.unlock-card-big .uc-code{font-size:19px;font-weight:700;color:var(--box-text,#222)}.unlock-card-big .uc-name{font-size:12.5px;color:var(--box-text,#222);margin-top:5px}.unlock-card-big .uc-credit{font-size:10.5px;color:var(--box-text,#222);opacity:.75;margin-top:5px}.unlock-stage{display:flex;align-items:flex-start;justify-content:center;gap:4px;flex-wrap:wrap;margin-bottom:18px}.chain-col{display:flex;flex-direction:column;gap:9px;min-width:170px;max-width:210px;opacity:0;padding-top:34px}.chain-col.pre{align-items:flex-end}.chain-col.unlock{align-items:flex-start}@keyframes colFromLeft{0%{opacity:0;transform:translate(-18px)}to{opacity:1;transform:translate(0)}}@keyframes colFromRight{0%{opacity:0;transform:translate(18px)}to{opacity:1;transform:translate(0)}}.chain-arrow-wrap{display:flex;flex-direction:column;align-items:center;justify-content:flex-start;padding-top:36px;opacity:0;flex:none}.chain-arrow-wrap.show{animation:fadeIn .3s ease forwards}@keyframes fadeIn{to{opacity:1}}.chain-arrow-label{font-size:10.5px;color:#333;margin-bottom:4px;white-space:nowrap;font-weight:700}.chain-arrow-svg{width:56px;height:18px;overflow:visible}.chain-arrow-svg path{stroke:#3f7fc4;stroke-width:2.6;fill:none;stroke-dasharray:56;stroke-dashoffset:56;transition:stroke-dashoffset .45s ease}.chain-arrow-svg.draw path{stroke-dashoffset:0}.chain-node{display:flex;flex-direction:column;gap:6px}.mini-box{position:relative;border-radius:6px;border:1px solid var(--box-border,#999);background:linear-gradient(to bottom,var(--box-top,#eee),var(--box-bottom,#ddd));padding:7px 26px 7px 10px;min-width:150px;text-align:left;cursor:pointer}.mini-box:hover{box-shadow:0 0 0 1px #333}.variant-columns{display:flex;gap:6px}.variant-column{flex:1;min-width:0;display:flex;flex-direction:column;gap:5px;border:1px solid #ddd;border-radius:7px;padding:6px;background:#fafaf7}.variant-column-head{display:flex;flex-direction:column;font-size:10px;font-weight:700;color:#333;margin-bottom:1px}.variant-column-boxes{display:flex;flex-direction:column;gap:4px;flex:1}.variant-box{min-width:0;cursor:default;padding:4px 6px}.variant-box:hover{box-shadow:none}.variant-box .mb-code{font-size:9.5px}.variant-box .mb-name{font-size:8px}.implied-elective-box{cursor:pointer;border-style:dashed}.implied-elective-box:hover{box-shadow:0 0 0 1px #b9861f}.implied-elective-box .plan-card-note{cursor:pointer}.choose-variant-btn{width:100%;margin-top:8px;padding:7px 8px;font-size:11px;font-weight:700;border-radius:5px;border:1px solid #2f7a3d;background:#3a8a4a;color:#fff;cursor:pointer;font-family:Arial,sans-serif}.choose-variant-btn:hover{background:#347a40}.mini-box .mb-code{font-size:11.5px;font-weight:700;color:var(--box-text,#222)}.mini-box .mb-name{font-size:10px;color:var(--box-text,#222);margin-top:2px;line-height:1.25}.chain-toggle{position:absolute;right:4px;top:50%;transform:translateY(-50%);width:18px;height:18px;border-radius:4px;border:1px solid rgba(0,0,0,.25);background:#fff9;color:#333;font-size:9px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:transform .2s ease}.chain-toggle.open{transform:translateY(-50%) rotate(180deg)}.chain-nested{display:none;flex-direction:column;gap:6px;margin-top:6px;margin-left:14px;padding-left:10px;border-left:2px dashed #bbb}.unlock-none-inline{color:#888;font-size:11px;font-style:italic;opacity:.9;max-width:170px}.coreq-row-wrap{text-align:center;margin-top:2px;opacity:0}.coreq-row-wrap.show{animation:fadeIn .3s ease forwards}.coreq-label{font-size:10.5px;color:#333;margin-bottom:7px;font-weight:700}.chain-row{display:flex;gap:8px;justify-content:center;flex-wrap:wrap}:root{box-sizing:border-box;padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px)}html{scroll-padding-top:env(safe-area-inset-top,0px);touch-action:manipulation;-webkit-text-size-adjust:100%;text-size-adjust:100%}.card,.plan-card,.icon-btn,.reset-btn,.btn,.col-header,.mini-box,.tech-row,.hidden-year-chip,.year-jump button{-webkit-tap-highlight-color:transparent}.tb-break,.year-jump,.plan-add{display:none}.touch-drag-ghost{position:fixed!important;left:0;top:0;z-index:300;pointer-events:none;margin:0!important;box-shadow:0 12px 28px #00000047!important;opacity:.96;will-change:transform}.drag-source{opacity:.3!important}@media(hover:none){.card,.plan-card{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}.card{margin:9px 8px}.check,.inprog{width:20px;height:20px;font-size:11px;top:-7px}.check{right:-7px}.inprog{left:-7px}.check:before,.inprog:before{content:"";position:absolute;inset:-9px}.card:not(.is-selected):not(.inprogress) .inprog{pointer-events:none}.card.is-selected .inprog{opacity:1}.card:active{filter:brightness(.97)}.col-add,.col-trash{opacity:1;width:24px;height:24px;font-size:14px}.icon-btn{width:38px;height:38px;border-radius:9px}.icon-btn svg{transform:scale(1.2)}.icon-btn:active,.reset-btn:active,.btn:active{filter:brightness(.94)}.reset-btn{min-height:36px;padding:7px 12px;font-size:12.5px}.plan-card{cursor:default}.plan-card.has-action{padding-right:42px}.plan-card .plan-remove{width:28px;height:28px;font-size:16px;top:50%;right:7px;transform:translateY(-50%);background:#fff}.plan-add{display:flex;position:absolute;top:50%;right:7px;transform:translateY(-50%);width:28px;height:28px;border-radius:50%;border:1px solid #2f7a3d;background:#3a8a4a;color:#fff;font-size:17px;font-weight:700;line-height:1;align-items:center;justify-content:center;padding:0;cursor:pointer;z-index:3}.plan-card.locked[data-tooltip]:hover:not(.tip-open):after,.plan-card.locked[data-tooltip]:hover:not(.tip-open):before{display:none}.plan-card.locked.tip-open{opacity:1;z-index:20}.plan-card.locked.tip-open:after{content:attr(data-tooltip);position:absolute;left:0;top:100%;margin-top:6px;z-index:50;background:#222;color:#fff;font-size:12px;line-height:1.45;font-weight:400;padding:8px 10px;border-radius:7px;width:220px;max-width:calc(100vw - 40px);white-space:normal;box-shadow:0 4px 10px #0000004d}.plan-card.locked.tip-open:before{content:"";position:absolute;left:14px;top:100%;margin-top:1px;z-index:51;border:5px solid transparent;border-bottom-color:#222}.plan-schedule-zone:empty:before{content:"Tap + on a course above, or press and hold one and drag it here."}}@media(max-width:760px){:root{--col-min:128px;--col-collapsed:36px}body{padding:0}.sheet{border:none;box-shadow:none}.banner{padding:12px;gap:10px;flex-wrap:nowrap}.banner-left{flex:1;min-width:0;gap:11px}.banner .t-full{display:none}.banner .t-short{display:block}.banner .t1{font-style:normal;font-size:16px;line-height:1.2;letter-spacing:-.01em}.banner .t1 small{display:block;font-size:12px;font-weight:400;color:#3a5a2e;margin-top:3px;letter-spacing:0}.banner .t2{flex:none;font-style:normal}.banner .t2 .t-short{background:#fffc;border:1px solid #9fc285;border-radius:14px;padding:5px 10px;font-size:12px;color:#2c5a2a;white-space:nowrap}.toolbar{padding:10px 12px;gap:10px}.progress-wrap{flex-wrap:wrap;width:100%;gap:8px 8px;font-size:12px}.progress-bar-outer{flex:1;width:auto;min-width:60px;height:8px}.tb-break{display:block;flex-basis:100%;height:0}.start-term-label{font-size:12.5px}.legend{flex-wrap:nowrap;overflow-x:auto;width:100%;gap:12px;font-size:11.5px;scrollbar-width:none;padding-bottom:2px}.legend::-webkit-scrollbar{display:none}.legend-item,.legend-line{white-space:nowrap;flex:none}.hint{padding:8px 12px;font-size:11.5px;line-height:1.45}.hidden-years-bar{padding:8px 12px}.hidden-year-chip{padding:5px 5px 5px 12px;font-size:12px}.hidden-year-chip .hy-plus{width:22px;height:22px;font-size:14px}.hy-showall{font-size:12px;padding:6px}.year-jump{display:flex;gap:6px;padding:8px 12px;border-bottom:1px solid var(--grid-line);background:#fafaf7;overflow-x:auto;scrollbar-width:none}.year-jump::-webkit-scrollbar{display:none}.year-jump button{flex:none;border:1px solid #b9c9ae;background:#fff;color:#3a5a2e;border-radius:16px;padding:7px 14px;font-size:12.5px;font-family:Arial,sans-serif;font-weight:700;cursor:pointer}.year-jump button.on{background:#dcecd2;border-color:#4a7a3a;color:#1f3a14}.board-scroll{scroll-snap-type:x proximity;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch}.col-header{scroll-snap-align:start;padding:8px 4px}.col-header .yr{font-size:10.5px}.col-header .term{font-size:12.5px}.col-header .cr{font-size:10px}.card{padding:7px 7px 6px;min-height:52px}.card .ccode{font-size:12px}.card .cname{font-size:10.5px;line-height:1.3}.card .ccredit{font-size:9.5px}.ghost-slot,.gap-slot{min-height:52px}.note{padding:8px 12px 14px;font-size:10.5px}.focus-board,.plan-board{padding:14px 12px 18px}.focus-section-title{font-size:13.5px}.focus-mini-box{min-width:0;flex:1 1 calc(50% - 4px)}.mini-box{min-width:0}.mini-box .mb-code{font-size:12.5px}.mini-box .mb-name{font-size:11px}.chain-toggle{width:26px;height:26px;font-size:11px}.plan-backpack{min-width:100%}.plan-board.show{display:flex;flex-direction:column}.plan-board .plan-columns{display:contents}.plan-board>.focus-section{order:1}.plan-board>.focus-divider:nth-child(2){order:2}#planAvailableZone{order:3}.plan-board>.focus-divider:nth-child(4){order:4}.plan-board>.plan-schedule-wrap{order:5}#planUnavailableZone{order:6;margin-top:18px}.plan-card{min-width:0;flex:1 1 calc(50% - 7px);padding:8px 9px}.plan-card .mb-code{font-size:12px}.plan-card .mb-name{font-size:10.5px}.plan-card-note{font-size:10px}.overlay{align-items:flex-end;padding:0}.modal{max-width:none;border:none;border-radius:16px 16px 0 0;max-height:88vh;max-height:88dvh;overflow-y:auto;overscroll-behavior:contain;padding:10px 16px calc(16px + env(safe-area-inset-bottom,0px));animation:sheetUp .28s cubic-bezier(.2,.8,.2,1)}.modal:before{content:"";display:block;width:40px;height:4px;border-radius:2px;background:#d0d0c8;margin:0 auto 12px}.modal .m-code{font-size:18px}.modal .m-name{font-size:14px}.modal .m-close{font-size:28px;padding:0 6px}.m-drive{width:36px;height:36px}.badge{font-size:11px;padding:3px 8px}.modal .m-desc{font-size:14px}.modal .m-sec-label{font-size:11.5px}.req-chip{font-size:12px;padding:5px 8px}.m-actions{flex-wrap:wrap}.m-actions .btn{min-height:44px;font-size:13.5px}.m-actions .btn.locate{flex:1 1 100%}.unlock-overlay{align-items:flex-start;padding:calc(60px + env(safe-area-inset-top,0px)) 10px calc(24px + env(safe-area-inset-bottom,0px))}.unlock-close{top:calc(10px + env(safe-area-inset-top,0px));right:12px;width:40px;height:40px;font-size:22px}.unlock-panel{padding:18px 14px 16px;border-radius:12px}.unlock-stage{flex-direction:column;align-items:center;flex-wrap:nowrap;gap:4px}.chain-col{padding-top:0;min-width:0;max-width:none;width:100%}.chain-col.pre,.chain-col.unlock{align-items:center}.chain-arrow-wrap{padding-top:6px}.chain-arrow-svg{transform:rotate(90deg);margin:19px 0}.unlock-card-big{min-width:0;width:100%;max-width:300px}.chain-col .chain-node,.chain-col .mini-box{width:100%;max-width:300px}.tech-list,.ms-course-list{max-height:none}.tech-row{padding:11px 12px}.tech-row-code{font-size:13px}.tech-row-name{font-size:12.5px}.tech-row-note{font-size:11.5px}.btn{min-height:42px}.choose-variant-btn{min-height:44px;font-size:13px}.ms-cat-row{padding:9px 6px}.ms-course-row{padding:10px 11px;font-size:13px}input,select,textarea{font-size:16px!important}.ms-planner-row input,.ms-planner-row select{padding:9px 10px}.ms-planner-row label{justify-content:space-between}.gp-fields{grid-template-columns:1fr 1fr}.gp-from{grid-column:1 / -1}.gp-term input,.gp-start-editor input{width:96px}.gp-start-editor .btn{min-height:40px}.gp-link{font-size:13px;padding:6px 2px}}#touchDialog{z-index:400}.touch-dialog .td-msg{font-size:15px;line-height:1.5;color:#222;margin:2px 0 4px}.touch-dialog .m-actions .btn{min-height:46px}@keyframes sheetUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}@media(prefers-reduced-motion:reduce){.modal{animation:none!important}.board-scroll{scroll-behavior:auto}}.cfm-toggles{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-bottom:12px}.cfm-toggles-label{font-size:11.5px;color:#555;margin-right:2px}.cfm-tog{display:inline-flex;align-items:center;gap:6px;border:1px solid #cfd8c5;background:#fff;color:#666;border-radius:999px;padding:5px 11px;font-size:11.5px;font-family:inherit;cursor:pointer;transition:background .15s ease,border-color .15s ease,color .15s ease}.cfm-tog .cfm-dot{width:8px;height:8px;border-radius:50%;border:1.5px solid #b9b9b0;box-sizing:border-box;transition:background .15s ease,border-color .15s ease}.cfm-tog.on{background:#eaf3e2;border-color:#4a7a3a;color:#1f3a14}.cfm-tog.on .cfm-dot{background:#4a7a3a;border-color:#4a7a3a}.cfm-tog:focus-visible{outline:2px solid #4a7a3a;outline-offset:2px}:root{--tr-blue:#0066cc;--tr-blue-focus:#0071e3;--tr-sky:#2997ff;--tr-ink:#1d1d1f;--tr-muted:#7a7a7a;--tr-hair:#e0e0e0;--tr-parch:#f5f5f7;--tr-tile:#272729;--tr-on-dark-muted:#cccccc;--tr-font:-apple-system, BlinkMacSystemFont, "SF Pro Text", "SF Pro Display", system-ui, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--tr-ease:cubic-bezier(.22,1,.36,1);--tr-glide:cubic-bezier(.77,0,.18,1)}.tr-pill{font-family:var(--tr-font);font-size:17px;letter-spacing:-.022em;line-height:1;border-radius:9999px;padding:12px 22px;border:1px solid transparent;cursor:pointer;transition:transform .15s ease}.tr-pill:active{transform:scale(.95)}.tr-pill:focus-visible,.tr-link:focus-visible,.tr-ctl:focus-visible{outline:2px solid var(--tr-blue-focus);outline-offset:2px}.tr-pill.primary{background:var(--tr-blue);color:#fff}.tr-pill.ghost{background:transparent;color:var(--tr-blue);border-color:var(--tr-blue)}.tr-pill.ghost.on-dark{color:var(--tr-sky);border-color:var(--tr-sky)}.tr-link{background:none;border:none;padding:6px 4px;color:var(--tr-blue);font-family:var(--tr-font);font-size:15px;letter-spacing:-.016em;cursor:pointer}.tr-sheet-wrap{position:fixed;inset:0;z-index:360;display:none;align-items:center;justify-content:center;padding:20px;background:#f5f5f7d1;-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px)}.tr-sheet-wrap.show{display:flex;animation:trFade .35s ease both}.tr-sheet{position:relative;width:100%;max-width:440px;background:#fff;border:1px solid rgba(0,0,0,.08);border-radius:18px;padding:40px 36px 30px;text-align:center;font-family:var(--tr-font);color:var(--tr-ink);animation:trRise .6s var(--tr-ease) both}.tr-sheet .tr-mark{width:56px;height:56px;margin:0 auto 18px;border-radius:14px;background:var(--tr-parch);display:flex;align-items:center;justify-content:center}.tr-sheet h2{font-size:34px;font-weight:600;line-height:1.1;letter-spacing:-.02em;margin:0 0 12px}.tr-sheet p{font-size:17px;line-height:1.47;letter-spacing:-.022em;color:#333;margin:0 auto 26px;max-width:34ch}.tr-sheet .tr-actions{display:flex;flex-direction:column;align-items:center;gap:10px}.tr-sheet .tr-actions>*{animation:trRise .6s var(--tr-ease) both}.tr-sheet .tr-actions>*:nth-child(2){animation-delay:.08s}.tr-sheet .tr-actions>*:nth-child(3){animation-delay:.16s}.tr-sheet .tr-fine{font-size:12px;color:var(--tr-muted);letter-spacing:-.01em;margin-top:18px;line-height:1.4}.tr-sheet-x{position:absolute;top:12px;right:12px;width:32px;height:32px;border-radius:50%;border:none;background:#d2d2d7a3;color:var(--tr-ink);font-size:18px;line-height:1;cursor:pointer}.tr-avatar{width:64px;height:64px;border-radius:50%;margin:0 auto 14px;background:var(--tr-parch);display:flex;align-items:center;justify-content:center;font-size:26px;font-weight:600;color:var(--tr-ink);overflow:hidden}.tr-avatar img{width:100%;height:100%;object-fit:cover}.tr-acc-name{font-size:21px;font-weight:600;letter-spacing:.01em;margin:0 0 4px}.tr-acc-mail{font-size:14px;color:var(--tr-muted);margin:0 0 24px}.tr-gsi{min-height:44px;display:flex;justify-content:center}.tr-gbtn{display:inline-flex;align-items:center;gap:10px;background:var(--tr-ink);color:#fff}.tr-gbtn[disabled]{opacity:.45;cursor:not-allowed}.tr-gbtn[disabled]:active{transform:none}.tr-msg{font-size:13px;color:#b3261e;margin-top:12px;min-height:1em}.tr-invite{position:fixed;left:50%;bottom:24px;z-index:340;display:none;align-items:center;gap:6px;padding:7px 7px 7px 20px;border-radius:9999px;font-family:var(--tr-font);color:var(--tr-ink);background:#f5f5f7db;-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);border:1px solid rgba(0,0,0,.08);transform:translate(-50%);max-width:calc(100vw - 24px)}.tr-invite.show{display:flex;animation:trInvIn .7s cubic-bezier(.16,1,.3,1) both}.tr-invite.hide{animation:trInvOut .28s ease-in both}.tr-inv-text{margin:0 10px 0 0;font-size:15px;letter-spacing:-.016em;line-height:1.3;white-space:nowrap}.tr-inv-text b{font-weight:600}.tr-inv-text span{color:#333}.tr-inv-play{display:inline-flex;align-items:center;gap:6px;height:38px;padding:0 16px 0 13px;border:none;border-radius:9999px;background:var(--tr-blue);color:#fff;font-family:var(--tr-font);font-size:15px;letter-spacing:-.016em;cursor:pointer;transition:transform .15s ease}.tr-inv-play svg{width:15px;height:15px}.tr-inv-x{width:38px;height:38px;border:none;border-radius:50%;background:transparent;color:var(--tr-muted);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:transform .15s ease}.tr-inv-x svg{width:15px;height:15px}.tr-inv-play:active,.tr-inv-x:active{transform:scale(.95)}.tr-inv-play:focus-visible,.tr-inv-x:focus-visible{outline:2px solid var(--tr-blue-focus);outline-offset:2px}@keyframes trInvIn{0%{opacity:0;transform:translate(-50%) translateY(26px) scale(.96)}to{opacity:1;transform:translate(-50%)}}@keyframes trInvOut{to{opacity:0;transform:translate(-50%) translateY(14px) scale(.98)}}@media(max-width:760px){.tr-invite{bottom:calc(14px + env(safe-area-inset-bottom,0px));width:calc(100vw - 24px);padding:7px 7px 7px 18px}.tr-inv-text{flex:1;font-size:15px}.tr-inv-text span{display:none}}.banner-right{display:flex;align-items:center;gap:10px}.icon-btn.account-btn{overflow:hidden}.icon-btn.account-btn img{width:100%;height:100%;object-fit:cover}.icon-btn.account-btn.signed{border-radius:50%}.icon-btn .acc-initial{font-family:var(--tr-font);font-weight:600;font-size:13px;color:#1f3a14}#tour{position:fixed;inset:0;z-index:350;display:none;font-family:var(--tr-font);-webkit-font-smoothing:antialiased;touch-action:none}#tour.on{display:block}.tr-spot{position:fixed;left:0;top:0;width:0;height:0;border-radius:14px;pointer-events:none;will-change:transform;box-shadow:0 0 0 200vmax #000000a8;transition:box-shadow .5s ease}.tr-spot.instant{transition:none}.tr-spot.deep{box-shadow:0 0 0 200vmax #0a0a0c}.tr-spot:after{content:"";position:absolute;inset:-4px;border-radius:inherit;border:2px solid var(--tr-sky);opacity:0}.tr-spot.ring:after{animation:trRing 1.8s var(--tr-ease) infinite}#tour.paused .tr-spot.ring:after{animation-play-state:paused}.tr-hero{position:fixed;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:24px;pointer-events:none;color:#fff}.tr-hero h1{font-size:56px;font-weight:600;line-height:1.07;letter-spacing:-.025em;margin:0;max-width:14ch}.tr-hero p{font-size:21px;font-weight:400;color:var(--tr-on-dark-muted);letter-spacing:.01em;margin:16px 0 0}.tr-w{display:inline-block;opacity:0;transform:translateY(.5em) scale(.96)}.tr-w.in{animation:trWord .46s var(--tr-ease) forwards}.tr-hero.out{animation:trHeroOut .6s var(--tr-glide) forwards}.tr-cap{position:fixed;left:50%;bottom:76px;width:min(920px,calc(100vw - 40px));transform:translate(-50%);text-align:center;color:#fff;pointer-events:none;transition:opacity .3s ease;opacity:0}.tr-cap.show{opacity:1}.tr-cap.top{bottom:auto;top:30px}.tr-cap.bottom{top:auto}.tr-title{font-size:46px;font-weight:600;line-height:1.08;letter-spacing:-.028em;margin:0;min-height:1.08em;text-shadow:0 2px 28px rgba(0,0,0,.55)}.tr-body{font-size:21px;line-height:1.36;letter-spacing:-.012em;color:#d2d2d7;margin:10px auto 0;max-width:42ch;text-shadow:0 1px 18px rgba(0,0,0,.6)}.tr-body b{color:#fff;font-weight:600}.tr-extra{margin-top:18px;display:flex;align-items:center;justify-content:center;gap:12px;flex-wrap:wrap;pointer-events:auto}.tr-extra:empty{display:none}.tr-count{display:inline-flex;align-items:center;gap:8px;font-size:15px;color:#d2d2d7;letter-spacing:-.016em}.tr-count svg{width:16px;height:16px;transform:rotate(-90deg)}.tr-count circle{fill:none;stroke-width:2.5}.tr-dock{position:fixed;left:50%;bottom:18px;transform:translate(-50%);display:flex;align-items:center;gap:14px;width:min(520px,calc(100vw - 32px))}.tr-segs{display:flex;gap:3px;flex:1}.tr-seg{flex:1;height:3px;border-radius:2px;background:#fff3;overflow:hidden}.tr-seg i{display:block;height:100%;background:#fff;transform-origin:left center;transform:scaleX(0)}.tr-seg.done i{transform:scaleX(1)}.tr-ctls{display:flex;gap:6px}.tr-ctl{width:30px;height:30px;border-radius:50%;border:none;background:#d2d2d72e;color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;transition:transform .15s ease}.tr-ctl:active{transform:scale(.92)}.tr-ctl svg{width:13px;height:13px}.tr-fade-out{animation:trTextOut .16s ease forwards}.tr-cursor{position:fixed;left:0;top:0;width:26px;height:26px;pointer-events:none;opacity:0;will-change:transform;filter:drop-shadow(0 2px 4px rgba(0,0,0,.45));transition:opacity .35s ease}.tr-cursor.show{opacity:1}.tr-cursor svg{width:100%;height:100%;display:block;transform-origin:4px 3px}.tr-cursor:not(.touch){margin:-3px 0 0 -5px}.tr-cursor .tr-dot{display:none;position:absolute;left:-15px;top:-15px;width:30px;height:30px;border-radius:50%;background:#ffffff80;border:2px solid #fff;box-sizing:border-box}.tr-cursor.touch svg{display:none}.tr-cursor.touch .tr-dot{display:block}.tr-ripple{position:fixed;left:0;top:0;width:44px;height:44px;margin:-22px 0 0 -22px;border-radius:50%;border:2px solid var(--tr-sky);background:#2997ff38;pointer-events:none;opacity:0}.tr-menu-wrap{position:fixed;left:0;top:0;transform-origin:0 0;pointer-events:auto}.tr-menu{position:relative;min-width:150px;background:#fff;border-radius:12px;padding:6px;border:1px solid rgba(0,0,0,.08);box-shadow:#00000038 3px 5px 30px;transform-origin:top left;opacity:0;transform:scale(.92) translateY(-6px);transition:opacity .25s ease,transform .35s var(--tr-ease);pointer-events:auto}.tr-menu.show{opacity:1;transform:none}.tr-menu button{display:flex;align-items:center;justify-content:space-between;gap:18px;width:100%;border:none;background:none;border-radius:8px;padding:11px 12px;font-family:var(--tr-font);font-size:17px;letter-spacing:-.022em;color:var(--tr-ink);cursor:pointer;text-align:left}.tr-menu button.hot{background:var(--tr-blue);color:#fff}.tr-menu button .ck{opacity:0;font-size:15px}.tr-menu button.cur .ck{opacity:1}.card.tr-wave{animation:trWave .7s var(--tr-ease) both;animation-delay:var(--trd,0ms)}.legend-item.tr-pop,.legend-line.tr-pop{display:inline-flex;animation:trPop .7s var(--tr-ease) both;animation-delay:var(--trd,0ms)}body.tr-paused .card.tr-wave,body.tr-paused .tr-pop{animation-play-state:paused}#trStage.cam{overflow:clip}body.tr-touring .unlock-overlay.show,body.tr-touring #overlay.show{background:transparent!important}@supports not (overflow:clip){#trStage.cam{overflow:hidden}}.tr-hero-actions{display:flex;gap:12px;justify-content:center;flex-wrap:wrap;margin-top:28px;pointer-events:auto}.tr-hero-actions:empty{display:none}.tr-hero-actions>*{animation:trRise .6s var(--tr-ease) both;animation-delay:.35s}.tr-hero-actions>*:nth-child(2){animation-delay:.45s}.tr-ring{position:fixed;left:0;top:0;width:0;height:0;box-sizing:border-box;border:2px solid var(--tr-sky);border-radius:10px;pointer-events:none;opacity:0;transition:opacity .25s ease;will-change:transform}.tr-ring.show{opacity:1}.tr-ring:after{content:"";position:absolute;inset:-3px;border-radius:inherit;border:2px solid var(--tr-sky);opacity:0}.tr-ring.show:after{animation:trRing 1.6s var(--tr-ease) infinite}#tour.paused .tr-ring:after{animation-play-state:paused}.card.tr-fade{opacity:.07!important;transition:opacity .35s ease}.tr-ghost{position:fixed;z-index:351;pointer-events:none;margin:0!important;box-shadow:#00000038 3px 5px 30px;will-change:transform}@keyframes trFade{0%{opacity:0}to{opacity:1}}@keyframes trRise{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}@keyframes trWord{to{opacity:1;transform:none}}@keyframes trHeroOut{to{opacity:0;transform:translateY(-24px) scale(.96)}}@keyframes trTextOut{to{opacity:0;transform:translateY(-6px)}}@keyframes trRing{0%{opacity:.95;transform:scale(1)}70%{opacity:0;transform:scale(1.08)}to{opacity:0;transform:scale(1.08)}}@keyframes trWave{0%{transform:none}35%{transform:translateY(-6px) scale(1.06)}to{transform:none}}@keyframes trPop{0%{transform:none}40%{transform:translateY(-4px) scale(1.12)}to{transform:none}}@media(max-width:760px){.tr-sheet{padding:34px 22px 24px}.tr-sheet h2{font-size:28px}.tr-hero h1{font-size:34px}.tr-hero p{font-size:17px}.tr-cap{bottom:calc(62px + env(safe-area-inset-bottom,0px));width:calc(100vw - 32px)}.tr-cap.top{top:calc(18px + env(safe-area-inset-top,0px))}.tr-title{font-size:29px;line-height:1.1}.tr-body{font-size:16px;line-height:1.4;margin-top:8px}.tr-extra .tr-pill{font-size:16px;padding:11px 20px}.tr-dock{bottom:calc(14px + env(safe-area-inset-bottom,0px))}.icon-btn.account-btn{width:38px;height:38px}}@media(prefers-reduced-motion:reduce){.tr-spot,.tr-menu{transition-duration:.01s}.card.tr-wave,.tr-pop,.tr-w.in,.tr-sheet,.tr-sheet .tr-actions>*{animation-duration:.01s}}.tr-or{display:flex;align-items:center;gap:10px;margin:18px 0 12px;color:var(--tr-muted);font-size:12px;letter-spacing:-.01em}.tr-or:before,.tr-or:after{content:"";flex:1;height:1px;background:var(--tr-hair)}.tr-form{display:flex;flex-direction:column;align-items:center;gap:10px;margin-bottom:6px}.tr-field{width:100%;max-width:300px;box-sizing:border-box;font-family:var(--tr-font);font-size:17px;letter-spacing:-.022em;color:var(--tr-ink);padding:11px 16px;border:1px solid #d2d2d7;border-radius:12px;background:#fff;outline:none;transition:border-color .15s ease,box-shadow .15s ease}.tr-field:focus{border-color:var(--tr-blue-focus);box-shadow:0 0 0 3px #0071e32e}.tr-code{text-align:center;letter-spacing:.3em;font-variant-numeric:tabular-nums}#tsSlot:empty{display:none}#planProfilePanel{transition:opacity .2s ease}#planProfilePanel.cfm-pending{opacity:.55;pointer-events:none}.cfm-error{margin:14px 0;font-size:13px;line-height:1.5;color:#444}.boot-msg{position:fixed;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;font-family:Arial,Helvetica,sans-serif;color:#1f3a14;text-align:center;padding:24px}.boot-msg button{border:1px solid #4a7a3a;background:#eaf3e2;color:#1f3a14;border-radius:6px;padding:7px 14px;font:inherit;cursor:pointer}.tr-link.tr-danger{color:#b3261e;font-size:13px}
