/* Scoped to the private learning view; the planner shell keeps its own styles. */
.learning-root { --lt-hour:44px; font-variant-numeric:tabular-nums; }
.learning-root .lt-heading { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:16px; }
.learning-root .lt-scope { display:flex; align-items:center; flex-wrap:wrap; gap:10px; margin-bottom:12px; }
.learning-root .lt-scope label { color:var(--ink-2); font-size:12px; }
.learning-root .lt-scope select { max-width:230px; min-width:0; font-size:12px; }
.learning-root .lt-link { background:transparent; border:0; padding:4px 0; color:var(--hsg); font-size:12px; text-align:left; }
.learning-root .lt-range { margin-left:auto; font-size:12px; color:var(--ink-2); }
.learning-root .lt-storage { display:flex; align-items:center; gap:9px; flex-wrap:wrap; margin-bottom:12px; color:var(--ink-2); font-size:12px; }
.learning-root .lt-muted { color:var(--ink-2); }
.learning-root .lt-summary { display:flex; align-items:center; flex-wrap:wrap; gap:15px; padding:15px 18px; background:var(--panel); border:1px solid var(--line); border-radius:var(--radius); }
.learning-root .lt-summary>div { display:flex; align-items:baseline; gap:7px; }
.learning-root .lt-summary strong { font-size:23px; font-weight:600; line-height:1.2; }
.learning-root .lt-summary .lt-total { margin-left:auto; padding-left:19px; border-left:1px solid var(--line); }
.learning-root .lt-total strong { color:var(--hsg); }
.learning-root .lt-operator { color:var(--ink-3); }
.learning-root .lt-summary-note { font-size:12px; color:var(--ink-2); margin:8px 2px 18px; }
.learning-root .lt-layout { display:grid; grid-template-columns:minmax(0,1fr) 282px; gap:18px; align-items:start; }
.learning-root .lt-main,.learning-root .lt-sidebar,.learning-root .lt-panel { min-width:0; }
.learning-root .lt-sidebar,.learning-root .lt-stats-stack { display:grid; gap:14px; }
.learning-root .lt-panel { background:var(--panel); border:1px solid var(--line); border-radius:var(--radius); padding:16px; }
.learning-root .lt-panel h2 { font-size:15px; font-weight:600; margin-bottom:10px; }
.learning-root .lt-calendar-panel { background:var(--panel); border:1px solid var(--line); border-radius:var(--radius); overflow:hidden; min-width:0; }
.learning-root .lt-calendar-tools { display:flex; justify-content:space-between; align-items:center; gap:10px; padding:14px 16px; border-bottom:1px solid var(--line); }
.learning-root .lt-calendar-tools h2 { font-size:15px; font-weight:600; }
.learning-root .lt-week-nav { display:flex; gap:6px; align-items:center; flex-shrink:0; }
.learning-root .lt-calendar-scroll { overflow-x:auto; overscroll-behavior-x:contain; -webkit-overflow-scrolling:touch; }
.learning-root .lt-calendar { min-width:812px; }
.learning-root .lt-day-heads { display:grid; grid-template-columns:42px repeat(7,minmax(0,1fr)); }
.learning-root .lt-day-head { display:flex; align-items:center; justify-content:center; gap:6px; padding:10px 2px 9px; color:var(--ink-2); border-left:1px solid var(--line); font-size:12px; }
.learning-root .lt-day-head strong { display:block; color:var(--ink); font-size:15px; font-weight:600; }
.learning-root .lt-day-head.today { background:var(--hsg-soft); border-bottom:2px solid var(--hsg); padding-bottom:7px; }
.learning-root .lt-day-add { border:0; background:transparent; color:var(--hsg); font-size:18px; line-height:1; padding:4px; }
.learning-root .lt-grid-body { display:grid; grid-template-columns:42px repeat(7,minmax(0,1fr)); height:calc(var(--lt-grid-height) + 12px); padding-bottom:12px; }
.learning-root .lt-hours { height:var(--lt-grid-height); position:relative; color:var(--ink-2); font-size:10px; }
.learning-root .lt-hours span { position:absolute; left:9px; transform:translateY(-50%); }
.learning-root .lt-hours span:first-child { transform:none; }
.learning-root .lt-day { position:relative; height:var(--lt-grid-height); border-left:1px solid var(--line); background:repeating-linear-gradient(to bottom,var(--line) 0,var(--line) 1px,transparent 1px,transparent var(--lt-hour)); cursor:default; }
.learning-root .lt-day.weekend { background-color:#fafbf9; }
.learning-root .lt-calendar.selecting,.learning-root .lt-calendar.selecting * { user-select:none; -webkit-user-select:none; }
.learning-root .lt-selection { position:absolute; z-index:2; left:3px; right:3px; border:1px solid var(--hsg); border-radius:4px; background:rgba(11,107,58,.12); pointer-events:none; }
.learning-root .lt-selection>span { display:block; width:max-content; max-width:100%; padding:2px 4px; background:var(--hsg-soft); color:var(--hsg); border-radius:3px; font-size:10px; line-height:1.3; }
.learning-root .lt-selection b,.learning-root .lt-selection small { display:block; font-size:inherit; }
.learning-root .lt-event { position:absolute; z-index:1; text-align:left; border:1px solid var(--lt-tone); border-left-width:3px; border-radius:5px; padding:4px; background:var(--lt-wash); color:var(--ink); overflow:hidden; font-size:10px; line-height:1.3; min-width:0; }
.learning-root .lt-event b { display:block; font-size:11px; font-weight:600; overflow-wrap:anywhere; }
.learning-root .lt-event span { display:block; }
.learning-root .lt-event-time { font-size:9px; margin-bottom:2px; }
.learning-root .lt-event.class { background:var(--panel); }
.learning-root .lt-event.missed { background:var(--bg); border-color:var(--line-2); color:var(--ink-2); }
.learning-root .lt-event.planned,.learning-root .lt-event.running { background:var(--panel); border-style:dashed; }
.learning-root .lt-event.planned { border-left-width:1px; }
.learning-root .lt-event.short b { font-size:10px; }
.learning-root .lt-calendar-key { display:flex; flex-wrap:wrap; gap:10px 17px; padding:11px 15px; border-top:1px solid var(--line); color:var(--ink-2); font-size:11px; }
.learning-root .lt-calendar-key span { display:flex; align-items:center; gap:6px; }
.learning-root .lt-calendar-key i { display:inline-block; width:13px; height:13px; border:1px solid #80619f; border-radius:3px; background:#eee9f7; }
.learning-root .lt-calendar-key i.class { border-left-width:3px; background:var(--panel); }
.learning-root .lt-calendar-key i.planned { border-style:dashed; background:var(--panel); }
.learning-root .lt-calendar-tip { margin:0; padding:0 15px 11px; font-size:11px; color:var(--ink-2); }
.learning-root .lt-timer-heading { display:flex; align-items:center; justify-content:space-between; gap:8px; }
.learning-root .lt-timer-heading h2 { margin:0; }
.learning-root .lt-tag { white-space:nowrap; font-size:10px; border:1px solid var(--line); background:var(--hsg-soft); color:var(--hsg); border-radius:4px; padding:2px 6px; }
.learning-root .lt-timer-subject { font-size:13px; margin:14px 0 0; overflow-wrap:anywhere; }
.learning-root .lt-clock { font-size:35px; font-weight:600; letter-spacing:-1px; line-height:1.25; margin:4px 0 2px; }
.learning-root .hsg-learning-hint { font-size:11px; color:var(--ink-2); line-height:1.5; margin:8px 0; }
.learning-root .lt-actions { display:flex; flex-wrap:wrap; gap:7px; margin:12px 0 4px; }
.learning-root .lt-actions button,.learning-root .lt-quick button { font-size:12px; padding:7px 10px; }
.learning-root .lt-quick { display:grid; gap:7px; border-top:1px solid var(--line); padding-top:13px; margin-top:15px; }
.learning-root .lt-visit-count { display:flex; gap:12px; color:var(--ink-2); font-size:11px; padding-bottom:10px; }
.learning-root .lt-visit-count b { display:block; color:var(--ink); font-size:18px; font-weight:600; }
.learning-root .lt-confirmation { padding:10px 0; border-top:1px solid var(--line); font-size:12px; overflow-wrap:anywhere; }
.learning-root .lt-confirmation p { margin:3px 0 0; color:var(--ink-2); font-size:11px; }
.learning-root .lt-confirmation .lt-actions { margin:8px 0 0; }
.learning-root .lt-confirmation button { font-size:11px; padding:5px 7px; }
.learning-root .lt-subject-table { width:100%; border-collapse:collapse; font-size:11px; }
.learning-root .lt-subject-table th { font-size:10px; font-weight:400; color:var(--ink-2); text-align:right; padding-bottom:7px; }
.learning-root .lt-subject-table td { text-align:right; border-top:1px solid var(--line); padding:8px 0; }
.learning-root .lt-subject-table th:first-child,.learning-root .lt-subject-table td:first-child { text-align:left; overflow-wrap:anywhere; min-width:0; }
.learning-root .lt-dot,.lt-dialog .lt-dot { display:inline-block; width:7px; height:7px; border-radius:50%; background:var(--lt-tone); margin-right:5px; }
.learning-root .lt-panel-heading { display:flex; justify-content:space-between; gap:10px; align-items:center; margin-bottom:12px; }
.learning-root .lt-panel-heading h2 { margin:0; }
.learning-root .lt-panel-heading>span { color:var(--ink-2); font-size:11px; }
.learning-root .lt-chart-key { display:flex; flex-wrap:wrap; gap:15px; color:var(--ink-2); font-size:11px; margin-bottom:13px; }
.learning-root .lt-chart-key i { display:inline-block; width:10px; height:10px; background:var(--hsg); border-radius:2px; margin-right:5px; }
.learning-root .lt-chart-key i.classes { background:#a8bcaf; }
.learning-root .lt-bar-row { display:grid; grid-template-columns:94px minmax(0,1fr) 55px; gap:10px; align-items:center; margin:12px 0; font-size:12px; }
.learning-root .lt-bar-row>span { color:var(--ink-2); }
.learning-root .lt-bar-row>b { font-size:11px; text-align:right; font-weight:600; }
.learning-root .lt-bar-track { height:21px; background:var(--bg); border-radius:3px; display:flex; overflow:hidden; }
.learning-root .lt-bar-track>span { height:100%; background:var(--hsg); }
.learning-root .lt-bar-track>span.classes { background:#a8bcaf; }
.learning-root .lt-table-scroll { overflow-x:auto; }
.learning-root .lt-stats-table { width:100%; border-collapse:collapse; font-size:12px; }
.learning-root .lt-stats-table th { font-size:11px; font-weight:400; color:var(--ink-2); padding:7px 8px 11px; text-align:right; }
.learning-root .lt-stats-table td { border-top:1px solid var(--line); padding:13px 8px; text-align:right; }
.learning-root .lt-stats-table th:first-child,.learning-root .lt-stats-table td:first-child { text-align:left; padding-left:0; overflow-wrap:anywhere; }
.learning-root .lt-stats-table th:last-child,.learning-root .lt-stats-table td:last-child { padding-right:0; }
.learning-root .lt-attendance-stats { border-top:1px solid var(--line); padding-top:13px; margin-top:14px; }
.learning-root .lt-attendance-stats h3 { font-size:13px; font-weight:600; margin-bottom:10px; }
.learning-root .lt-attendance-row { display:grid; grid-template-columns:minmax(95px,1fr) auto; gap:10px; padding:6px 0; font-size:12px; overflow-wrap:anywhere; }
.learning-root .lt-attendance-row>span:last-child { color:var(--ink-2); }
.learning-root .lt-empty { padding:14px 0; font-size:12px; color:var(--ink-2); }
.lt-dialog { color:var(--ink); background:var(--panel); border:1px solid var(--line); border-radius:var(--radius); padding:0; width:min(520px,calc(100% - 28px)); max-height:calc(100dvh - 36px); overflow:auto; font-family:var(--sans); }
.lt-dialog::backdrop { background:rgba(23,33,27,.35); }
.lt-dialog .lt-dialog-head { display:flex; justify-content:space-between; align-items:center; gap:12px; padding:18px 20px; border-bottom:1px solid var(--line); }
.lt-dialog .lt-dialog-head h2 { font-size:19px; font-weight:600; }
.lt-dialog .lt-close { padding:2px 7px; background:transparent; border:0; font-size:22px; color:var(--ink-2); line-height:1; }
.lt-dialog .lt-dialog-content { padding:18px 20px 20px; }
.lt-dialog .lt-intro { font-size:12px; color:var(--ink-2); margin-bottom:15px; }
.lt-dialog .lt-field { display:grid; gap:5px; margin-bottom:13px; min-width:0; }
.lt-dialog .lt-field label { font-size:12px; font-weight:600; }
.lt-dialog .lt-field input,.lt-dialog .lt-field select,.lt-dialog .lt-field textarea { border:1px solid var(--line-2); border-radius:5px; background:var(--panel); min-width:0; max-width:100%; width:100%; padding:8px 9px; color:var(--ink); font:14px var(--sans); height:auto; }
.lt-dialog .lt-field textarea { resize:vertical; min-height:70px; }
.lt-dialog .lt-field input[type=color] { height:40px; padding:4px; }
.lt-dialog .lt-field small { font-size:11px; color:var(--ink-2); }
.lt-dialog .lt-field-row { display:grid; grid-template-columns:1fr 1fr; gap:13px; }
.lt-dialog .lt-time-hint { margin-bottom:13px; }
.lt-dialog .lt-interval-duration { font-size:13px; font-weight:600; margin-bottom:15px; }
.lt-dialog .lt-dialog-actions { display:flex; justify-content:flex-end; flex-wrap:wrap; gap:8px; padding-top:5px; }
.lt-dialog .lt-dialog-actions button { font-size:12px; }
.lt-dialog .lt-left { margin-right:auto; }
.lt-dialog .lt-danger { color:var(--err); background:var(--panel); border-color:#d9bcb6; }
.lt-dialog .lt-link { border:0; background:transparent; color:var(--hsg); padding:4px 0; font-size:12px; text-align:left; }
.lt-dialog .lt-error { color:var(--err); font-size:12px; margin-bottom:12px; }
.lt-dialog .lt-detail-subject { font-size:15px; font-weight:600; margin-bottom:8px; overflow-wrap:anywhere; }
.lt-dialog .lt-detail-time { color:var(--ink-2); font-size:13px; margin-bottom:12px; }
.lt-dialog .lt-detail-note { font-size:13px; white-space:pre-wrap; overflow-wrap:anywhere; margin-bottom:14px; }
.lt-dialog .lt-status-line { font-size:12px; padding:10px 12px; background:var(--bg); border-radius:5px; margin-bottom:13px; }
.lt-dialog .hsg-learning-hint { font-size:11px; color:var(--ink-2); }
.lt-dialog .lt-attendance-choices { display:flex; flex-wrap:wrap; gap:7px; margin:12px 0; }
.lt-dialog .lt-attendance-choices button { font-size:12px; }
.lt-dialog .lt-modal-class { border:1px solid var(--line); border-radius:6px; padding:12px; margin-bottom:10px; }
.lt-dialog .lt-modal-class h3 { font-size:13px; font-weight:600; overflow-wrap:anywhere; }
.lt-dialog .lt-modal-class p { color:var(--ink-2); font-size:11px; margin:3px 0 6px; }
.lt-dialog .lt-empty { color:var(--ink-2); font-size:12px; }
@media(max-width:1020px) { .learning-root .lt-layout { grid-template-columns:minmax(0,1fr) 258px; gap:12px; } .learning-root .lt-summary { gap:11px; } .learning-root .lt-summary strong { font-size:21px; } }
@media(max-width:780px) { .learning-root .lt-layout { grid-template-columns:minmax(0,1fr); } .learning-root .lt-main,.learning-root .lt-sidebar { display:contents; } .learning-root .lt-timer-panel { grid-row:1; } .learning-root .lt-calendar-panel,.learning-root .lt-stats-stack { grid-row:2; } .learning-root .lt-summary .lt-total { margin-left:0; } .learning-root .lt-stats-table { min-width:490px; } }
@media(max-width:480px) { .learning-root .lt-heading { margin-bottom:13px; } .learning-root .lt-heading h1 { font-size:25px; } .learning-root .seg button { padding:5px 8px; font-size:12px; } .learning-root .lt-scope { gap:7px; } .learning-root .lt-scope select { max-width:180px; } .learning-root .lt-range { flex-basis:100%; margin-left:0; margin-top:2px; } .learning-root .lt-summary { padding:13px 12px; gap:10px; align-items:flex-start; } .learning-root .lt-summary>div { flex:1 1 90px; flex-direction:column; gap:3px; font-size:11px; } .learning-root .lt-summary strong { font-size:20px; } .learning-root .lt-summary .lt-total { padding-left:10px; } .learning-root .lt-operator { display:none; } .learning-root .lt-calendar-tools { padding:12px; flex-wrap:wrap; } .learning-root .lt-calendar-tools h2 { font-size:13px; } .learning-root .lt-panel { padding:15px; } .learning-root .lt-quick { grid-template-columns:minmax(0,1fr) minmax(0,1fr); } .learning-root .lt-bar-row { grid-template-columns:78px minmax(0,1fr) 48px; gap:7px; font-size:11px; } .learning-root .lt-attendance-row { grid-template-columns:minmax(0,1fr); gap:2px; } .lt-dialog .lt-dialog-head,.lt-dialog .lt-dialog-content { padding:16px; } .lt-dialog .lt-field-row { gap:9px; } .lt-dialog .lt-dialog-actions { gap:6px; } }
