/* Global chrome only. No descendant form/choice/tab rules belong here. */
.workspace #app.navigation-shell{--site-header-height:52px;grid-template-rows:var(--site-header-height) minmax(0,1fr);min-height:100dvh;align-items:start}
.navigation-shell>.app-sidebar{grid-column:1;grid-row:1 / 3}
.navigation-shell>.workspace-content{grid-column:2;grid-row:2;padding-top:20px}
.navigation-shell>.site-location-bar{grid-column:2;grid-row:1}
.site-location-bar{position:sticky;top:0;z-index:110;display:flex;flex-wrap:nowrap;align-items:center;gap:8px;min-width:0;height:52px;min-height:52px;padding:4px 24px;background:var(--page);border-bottom:1px solid var(--line)}
.site-location-bar>.site-section-info,.site-location-bar>.site-focus-toggle{display:inline-flex;align-items:center;justify-content:center;flex:0 0 44px;width:44px;height:44px;min-height:44px;padding:0}
.site-location-bar>.site-section-info{background:var(--surface-muted);border:1px solid var(--line)}
.site-location-bar>.site-section-info:hover{background:var(--surface-hover)}
.site-section-info>.site-info-mark{font:500 20px/1 'Roboto Condensed',sans-serif}
.site-location-bar>.site-section-tabs{flex:1 1 0;max-width:560px;min-width:0}
.site-section-intro{position:fixed;inset:auto;margin:0;box-sizing:border-box;width:min(560px,calc(100vw - 24px));max-height:calc(100dvh - 128px);overflow:auto;padding:18px;background:var(--accent-soft);color:var(--ink);border:1px solid var(--line);border-radius:9px;box-shadow:0 12px 30px color-mix(in srgb,var(--ink) 15%,transparent);transform-origin:top left}
.site-section-intro::backdrop{background:transparent}
.site-intro-heading,.site-intro-footer{display:flex;align-items:center;justify-content:space-between;gap:12px}
.site-intro-heading>small{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-size:12px}
.site-intro-heading>.site-intro-close{min-width:36px;min-height:36px;padding:6px}
.site-section-intro>h2{margin:4px 0 10px;font-size:21px;line-height:1.3;letter-spacing:0;text-transform:none}
.site-section-intro>p{margin:0 0 16px;line-height:1.5}
.site-intro-footer>small{color:var(--muted);font-size:13px;line-height:1.4}
.site-intro-footer>.ui-action{flex:0 0 auto;min-height:44px}
.site-location{min-width:0;flex:0 1 auto}
.site-location>.site-location-placeholder{display:none}
.site-location>.ui-action-menu__trigger{display:flex;gap:5px;align-items:center;min-width:0;min-height:38px;padding:5px 8px;background:transparent;border-color:transparent;white-space:nowrap;font-size:16px}
.site-location>.ui-action-menu__trigger>strong{overflow:hidden;text-overflow:ellipsis;min-width:0;font-weight:700}
.site-location>.ui-action-menu__trigger>.ui-icon{flex-shrink:0;width:16px;height:16px;margin-left:4px}
.site-location-group{color:var(--muted)}
.site-page-actions{display:flex;gap:8px;align-items:center;margin-left:auto;min-width:0}
.site-page-actions>.ui-page__action{margin:0}
/* Opt-in context + independent actions. Do not change ordinary page tools. */
.site-page-actions:has(.site-header-context-tools){flex:1;margin-left:0}
.site-page-actions>.ui-page__action:has(.site-header-context-tools){width:100%;min-width:0}
.site-header-context-tools{display:flex;align-items:center;gap:8px;width:100%;min-width:0}
.site-header-context-tools>.ll-basket-wrap{margin-left:auto}
.site-header-context-tools>.ll-task-create{margin-left:auto;margin-right:44px}
.site-view-context{font-size:12px;line-height:1.2;color:var(--muted);white-space:nowrap}
.site-page-header-adapted{display:none}
/* The library's header has moved into the shell. Do not retain its empty
   margin slot when the shared header rule is more specific. */
.workspace-section-library:has(.ll-toolbar--task-list,.ll-editor-header)>.ui-page>header.ui-page__header.site-page-header-adapted{display:none}
/* No empty generic heading/margin above an opted-in context action row. */
header.ui-page__header.site-page-header-context-actions{display:none}
.site-page-header-local-actions{height:auto;min-height:0;padding:0;margin:0 0 12px}
.site-page-header-local-actions>.ui-page__action{margin:0}
.site-unread-count{flex:0 0 auto;padding:0 3px;white-space:nowrap;overflow-wrap:normal}
.site-unread-count[hidden]{display:none}
.site-quick-nav>.icon-button>.site-unread-count{position:absolute;left:45px;top:4px;opacity:1;transform:translateX(-100%);margin:0;z-index:2}
/* The caption has its own aperture; do not crop the unread indicator's halo. */
.navigation-shell>.app-sidebar.icon-sidebar>.site-quick-nav>.icon-button:has(>.site-unread-count){overflow:visible}
.site-location>.ui-action-menu__panel>.site-location-option{display:flex;gap:9px;align-items:center;justify-content:flex-start;text-align:left}
.site-location-option[aria-current="page"]{background:var(--context-selected-soft);font-weight:700}
.navigation-shell>.site-mobile-dock{display:none}
.navigation-shell>.app-sidebar>.sidebar-icon-nav:not(.site-quick-nav){display:none}
.navigation-shell>.app-sidebar>.site-quick-nav{display:grid;gap:5px;margin-top:12px;max-height:calc(100dvh - 150px);overflow:visible}
.site-quick-nav>.site-all-sections{margin-bottom:7px}
.site-sections{position:fixed;inset:72px auto auto 84px;margin:0;width:min(450px,calc(100vw - 100px));max-height:calc(100dvh - 90px);box-sizing:border-box;padding:14px 12px 10px;overflow-y:auto;overflow-x:hidden;border:1px solid var(--line);border-radius:11px;background:var(--surface);color:var(--ink);box-shadow:0 15px 48px color-mix(in srgb,var(--ink) 19%,transparent);scrollbar-width:thin}
.site-sections::backdrop{background:transparent}
.site-sections-heading{display:flex;align-items:center;gap:5px;margin:0 0 10px}
.site-sections-heading>h2{flex:1;margin:0;font-size:19px;line-height:1.3;letter-spacing:0;text-transform:none}
.site-sections-heading>.site-sections-close{font-size:22px;line-height:1;min-width:32px;padding:4px}
.site-sections>.site-sections-search{width:100%;min-height:36px;margin:0 0 10px;font-size:14px}
.site-sections-board{position:relative;width:100%;min-height:30px;isolation:isolate}
.site-group-contours{position:absolute;inset:0;width:100%;pointer-events:none;overflow:visible;z-index:-1}
.site-group-contours>path{fill:none;stroke-width:6;stroke-opacity:.7;stroke-linejoin:round}
.site-group-label{position:absolute;z-index:2;display:flex;align-items:center;gap:4px;width:max-content;background:var(--surface);color:var(--group-color);padding:0 3px;font-size:12px;line-height:16px;overflow-wrap:anywhere}
.site-group-label>.ui-icon{width:12px;height:12px;flex:0 0 12px}
.site-sections-board>.site-section-card{display:flex;align-items:center;justify-content:flex-start;gap:6px;min-height:32px;padding:5px 7px;margin:0;border:1px solid var(--line);border-radius:5px;background:var(--surface-muted);font-size:14px;line-height:18px;text-align:left;text-decoration:none;color:var(--ink);box-sizing:border-box}
.site-section-card>.ui-icon{width:17px;height:17px;flex:0 0 17px}
.site-section-card>span:not(.site-unread-count){min-width:0;overflow-wrap:anywhere;font-weight:400}
.site-sections-board>.site-section-card:hover,.site-sections-board>.site-section-card:focus-visible{background:var(--surface-hover);border-color:var(--line-strong)}
.site-sections-board>.site-section-card[aria-current="page"]{background:var(--lemon);border-color:var(--accent-line);color:var(--on-accent)}
.site-sections-board>.site-section-card[data-standalone]{min-width:145px;min-height:44px;padding:7px 10px;gap:8px;font-size:15px;line-height:20px;background:color-mix(in srgb,var(--site-tile-fill) 25%,var(--surface));color:var(--ink);border-color:color-mix(in srgb,var(--site-tile-edge) 35%,var(--line));border-top-left-radius:0;border-bottom-left-radius:0;transition:background-color .12s,border-color .12s,box-shadow .12s,color .12s}
/* Same 6px stroke as group contours, centered on the existing card border.
   Square inner joins meet the round cap without top/bottom dents. */
.site-sections-board>.site-section-card[data-standalone]::before{content:"";position:absolute;left:-4px;top:-1px;bottom:-1px;width:6px;border-radius:3px;background:var(--site-tile-edge);pointer-events:none}
.site-section-card[data-standalone]>.ui-icon{width:20px;height:20px;flex-basis:20px}
.site-section-card[data-standalone]>span{font-weight:500}
.site-sections-board>.site-section-card[data-standalone]:hover,.site-sections-board>.site-section-card[data-standalone]:focus-visible{background:color-mix(in srgb,var(--site-tile-fill) 55%,var(--surface));color:var(--on-navigation-tile);border-color:color-mix(in srgb,var(--site-tile-edge) 85%,var(--on-navigation-tile));box-shadow:0 2px 6px color-mix(in srgb,var(--ink) 12%,transparent)}
.site-sections-board>.site-section-card[data-standalone]:focus-visible{outline:2px solid var(--line-strong);outline-offset:2px}
.site-sections-board>.site-section-card[data-standalone][aria-current="page"]{background:var(--lemon);border-color:var(--accent-line);color:var(--on-accent)}
.site-sections-board>.site-section-card[data-standalone][aria-current="page"]:hover{background:var(--lemon)}
@media(pointer:coarse){.site-sections-board>.site-section-card{min-height:44px}}
@media(prefers-reduced-motion:reduce){.site-sections-board>.site-section-card[data-standalone]{transition:none}}
.site-sections-footer{display:none;margin-top:8px;padding-top:8px;border-top:1px solid var(--line)}
.site-mobile-account{display:none}
.site-sections-footer>.ui-action{font-size:13px}
.site-navigation-surface{display:none}
@property --site-navigation-edge{syntax:'<length>';inherits:true;initial-value:72px}
@property --site-navigation-tone{syntax:'<number>';inherits:true;initial-value:0}
@media(min-width:901px){
 /* One inherited aperture is the animation clock for every menu layer. */
 body.site-navigation-owner{--site-navigation-edge:72px;--site-navigation-tone:0;transition:--site-navigation-edge .24s cubic-bezier(.2,.8,.2,1),--site-navigation-tone .24s cubic-bezier(.2,.8,.2,1)}
 body.site-navigation-revealed{--site-navigation-edge:742px;--site-navigation-tone:1}
 .site-navigation-surface{display:block;position:fixed;inset:0 auto 0 0;width:var(--site-navigation-edge);max-width:calc(100vw - 16px);z-index:119;background:color-mix(in srgb,var(--surface) calc(var(--site-navigation-tone)*100%),var(--surface-muted));border-right:1px solid color-mix(in srgb,var(--line) calc(var(--site-navigation-tone)*100%),transparent);border-radius:0 12px 12px 0;box-shadow:12px 0 36px color-mix(in srgb,var(--ink) calc(var(--site-navigation-tone)*15%),transparent);visibility:hidden;pointer-events:none;transition:visibility 0s linear .24s}
 .site-navigation-surface.is-open{visibility:visible;pointer-events:auto;transition-delay:0s}
 /* Keep the compact rail painted even after the sheet leaves top-layer. Its
    matching tone prevents a transparent frame before JS settles the tracks. */
 .navigation-shell>.app-sidebar{background:color-mix(in srgb,var(--surface) calc(var(--site-navigation-tone)*100%),var(--surface-muted))}
 .navigation-shell.navigation-menu-open .site-quick-nav{background:transparent;backdrop-filter:none}
 /* The pupil directory belongs to the covered page, not to the expanding
    navigation sheet. Keep its geometry/state, but do not paint it over the sheet. */
 .navigation-shell:where(.navigation-menu-open,.navigation-menu-transition)>.app-sidebar>.student-directory{opacity:0;pointer-events:none;content-visibility:hidden}
 /* Keep child coordinates/widths; the scrollport includes the complete6px
    shared outline+offset, rather than cutting it at the former4px padding. */
 .site-sections.site-sections-unified{inset:80px auto auto 254px;width:478px;max-height:calc(100dvh - 100px);padding:10px 10px 10px;border:0;border-radius:0;box-shadow:none;clip-path:inset(-80px calc(732px - var(--site-navigation-edge)) 0 0);transition:display .24s allow-discrete,overlay .24s allow-discrete}
 .site-sections-unified .site-sections-heading{margin-bottom:14px;min-height:40px}
 .site-sections-unified .site-sections-close{position:fixed;top:18px;left:688px;width:40px;height:40px}
 .site-sections-unified>.site-sections-search{min-height:40px;margin-bottom:16px}
 /* Only the reveal aperture changes width. Both text lines are laid out at the
    final170px track before the first animation frame, including closing. */
 .navigation-shell>.app-sidebar.icon-sidebar>.site-quick-nav>.icon-button{height:48px;min-height:48px;--rail-open-width:232px}
 .navigation-shell>.app-sidebar.icon-sidebar>.site-quick-nav>.icon-button>.site-quick-caption{position:absolute;inset:0 auto 0 52px;display:flex;align-items:center;width:170px;min-width:0;margin:0;overflow:hidden;opacity:0;transform:none;transition:opacity .14s}
 .navigation-shell>.app-sidebar.icon-sidebar>.site-quick-nav>.icon-button .site-quick-label{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;width:170px;min-width:0;max-height:38.4px;margin:0;overflow:hidden;overflow-wrap:anywhere;white-space:normal;font:400 16px/19.2px 'Roboto Condensed',sans-serif;opacity:1;transform:none;transition:none}
 /* Outside the unified panel use the original intrinsic single-line caption.
    Its existing width owner includes icon, margin and symmetric side padding. */
 .navigation-shell:not(.navigation-menu-open):not(.navigation-menu-transition)>.app-sidebar.icon-sidebar>.site-quick-nav>.icon-button>.site-quick-caption{display:flex;inset:0 14px 0 36px;width:auto;min-width:0;margin:0;overflow:hidden;opacity:1;transform:none;transition:none}
 .navigation-shell:not(.navigation-menu-open):not(.navigation-menu-transition)>.app-sidebar.icon-sidebar>.site-quick-nav>.icon-button .site-quick-label{display:block;flex:0 0 auto;width:max-content;min-width:max-content;max-height:none;margin-left:12px;overflow:visible;overflow-wrap:normal;white-space:nowrap;font:inherit;-webkit-line-clamp:unset;line-clamp:unset;opacity:1;transform:none;transition:none}
 .navigation-shell:where(.navigation-menu-open,.navigation-menu-transition)>.app-sidebar.icon-sidebar>.site-quick-nav{width:232px;align-self:flex-start;background:transparent;backdrop-filter:none;clip-path:none}
 .navigation-shell:where(.navigation-menu-open,.navigation-menu-transition)>.app-sidebar.icon-sidebar>.site-quick-nav>.icon-button{width:clamp(52px,calc(var(--site-navigation-edge) - 20px),var(--site-quick-surface-width,232px));clip-path:none;transition:background-color .12s,border-color .12s}
 .navigation-shell:where(.navigation-menu-open,.navigation-menu-transition)>.app-sidebar.icon-sidebar>.site-quick-nav>.icon-button>.site-quick-caption{width:max(0px,calc(100% - 66px));opacity:1;transition:none}
 .navigation-shell:where(.navigation-menu-open,.navigation-menu-transition)>.app-sidebar.icon-sidebar>.site-quick-nav>.icon-button .site-quick-label{flex:0 0 170px}
 .navigation-shell:where(.navigation-menu-open,.navigation-menu-transition)>.app-sidebar.icon-sidebar>.site-quick-nav>.site-all-sections>.site-quick-caption{inset:0 14px 0 36px;width:auto}
 .navigation-shell:where(.navigation-menu-open,.navigation-menu-transition)>.app-sidebar.icon-sidebar>.site-quick-nav>.site-all-sections .site-quick-label{display:block;flex:0 0 auto;width:max-content;min-width:max-content;max-height:none;margin-left:12px;white-space:nowrap;font:inherit;-webkit-line-clamp:unset;line-clamp:unset}
 .navigation-shell:where(.navigation-menu-open,.navigation-menu-transition)>.app-sidebar.icon-sidebar>.workspace-brand,.navigation-shell:where(.navigation-menu-open,.navigation-menu-transition)>.app-sidebar.icon-sidebar>.workspace-brand:is(:hover,:focus-visible){width:232px;background:transparent;border-color:transparent;box-shadow:none;transition:none;clip-path:inset(-8px calc(252px - var(--site-navigation-edge)) -8px -8px)}
 .navigation-shell:where(.navigation-menu-open,.navigation-menu-transition)>.app-sidebar.icon-sidebar>.workspace-brand .brand-wordmark-text{opacity:1;color:var(--ink);transform:translate(0,-50%);transition:none}
 .navigation-shell:where(.navigation-menu-open,.navigation-menu-transition)>.app-sidebar.icon-sidebar>.workspace-brand .brand-symbol-static{opacity:1}
 .navigation-shell:where(.navigation-menu-open,.navigation-menu-transition)>.app-sidebar.icon-sidebar>.workspace-brand :is(.brand-symbol-motion,.brand-symbol-prelude){opacity:0}
 /* Returning invisible tracks to closed geometry must not start a second
    width/wordmark transition after the common aperture has finished. */
 .navigation-shell.navigation-menu-resting>.app-sidebar.icon-sidebar>.workspace-brand,.navigation-shell.navigation-menu-resting>.app-sidebar.icon-sidebar>.workspace-brand .brand-wordmark-text,.navigation-shell.navigation-menu-resting>.app-sidebar.icon-sidebar>.site-quick-nav>.icon-button,.navigation-shell.navigation-menu-resting>.app-sidebar.icon-sidebar>.site-quick-nav>.icon-button>.site-quick-caption{transition:none}
 .navigation-shell>.app-sidebar.icon-sidebar>.site-quick-nav>.icon-button:is(:hover,:focus-visible,.rail-open)>.site-quick-caption,.navigation-menu-open>.app-sidebar.icon-sidebar>.site-quick-nav>.icon-button>.site-quick-caption{opacity:1}
 .navigation-menu-open>.app-sidebar.icon-sidebar>.site-quick-nav>.icon-button,.navigation-menu-open>.app-sidebar.icon-sidebar>.site-quick-nav>.icon-button:is(:hover,:focus-visible,.rail-open){width:clamp(52px,calc(var(--site-navigation-edge) - 20px),var(--site-quick-surface-width,232px));z-index:1;background:transparent;color:var(--ink);border-color:transparent;box-shadow:none}
 .navigation-menu-open>.app-sidebar.icon-sidebar>.site-quick-nav>.icon-button:hover{background:var(--surface-hover)}
 .navigation-menu-open>.app-sidebar.icon-sidebar>.site-quick-nav>.icon-button[aria-current="page"],.navigation-menu-open>.app-sidebar.icon-sidebar>.site-quick-nav>.icon-button[aria-current="page"]:hover{background:var(--lemon);color:var(--on-accent);border-color:var(--accent-line)}
 .navigation-menu-open>.app-sidebar.icon-sidebar>.site-quick-nav>.site-all-sections,.navigation-menu-open>.app-sidebar.icon-sidebar>.site-quick-nav>.site-all-sections:hover{background:var(--surface-hover);border-color:var(--line-strong);color:var(--ink)}
 .navigation-shell.navigation-menu-open>.app-sidebar.icon-sidebar>.site-quick-nav>.site-all-sections,.navigation-shell.navigation-menu-transition.navigation-menu-retain-all>.app-sidebar.icon-sidebar>.site-quick-nav>.site-all-sections{width:var(--rail-open-width);clip-path:none}
 /* The same progress paints All sections in both directions. No late class
    swap can jump between its yellow hover and neutral expanded endpoint. */
 .navigation-shell:where(.navigation-menu-open,.navigation-menu-transition)>.app-sidebar.icon-sidebar>.site-quick-nav>.site-all-sections,.navigation-shell:where(.navigation-menu-open,.navigation-menu-transition)>.app-sidebar.icon-sidebar>.site-quick-nav>.site-all-sections:is(:hover,:focus-visible){--site-all-hover:transparent;--site-all-line:transparent;--site-all-shadow:transparent;--site-all-ink:var(--ink);background:color-mix(in srgb,var(--surface-hover) calc(var(--site-navigation-tone)*100%),var(--site-all-hover));border-color:color-mix(in srgb,var(--line-strong) calc(var(--site-navigation-tone)*100%),var(--site-all-line));box-shadow:0 8px 22px color-mix(in srgb,var(--site-all-shadow) calc((1 - var(--site-navigation-tone))*100%),transparent);color:color-mix(in srgb,var(--ink) calc(var(--site-navigation-tone)*100%),var(--site-all-ink));transition:none}
 .navigation-shell:where(.navigation-menu-open,.navigation-menu-transition)>.app-sidebar.icon-sidebar>.site-quick-nav>.site-all-sections:is(:hover,:focus-visible){--site-all-hover:var(--lemon);--site-all-line:var(--accent-line);--site-all-shadow:#15180d26;--site-all-ink:var(--on-accent)}
 /* A resting pointer/focus is not a new hover gesture after menu dismissal. */
 .navigation-shell:not(.navigation-menu-open):not(.navigation-menu-transition)>.app-sidebar.icon-sidebar>.site-quick-nav>.site-all-sections.site-rail-dismissed{width:52px;background:transparent;border-color:transparent;color:var(--ink);box-shadow:none;transition:none}
 .navigation-shell:not(.navigation-menu-open):not(.navigation-menu-transition)>.app-sidebar.icon-sidebar>.site-quick-nav>.site-all-sections.site-rail-dismissed>.site-quick-caption{opacity:0;transition:none}
 .navigation-shell:not(.navigation-menu-open):not(.navigation-menu-transition)>.app-sidebar.icon-sidebar>.site-quick-nav>.site-all-sections.site-rail-dismissed .site-quick-label{opacity:0;transition:none}
 .navigation-shell:not(.navigation-menu-open):not(.navigation-menu-transition)>.app-sidebar.icon-sidebar>.workspace-brand.site-rail-dismissed{width:52px;background:transparent;border-color:transparent;box-shadow:none;transition:none}
 .navigation-shell:not(.navigation-menu-open):not(.navigation-menu-transition)>.app-sidebar.icon-sidebar>.workspace-brand.site-rail-dismissed .brand-wordmark-text{opacity:0;transition:none}
 .navigation-shell:not(.navigation-menu-open):not(.navigation-menu-transition)>.app-sidebar.icon-sidebar>.workspace-brand.site-rail-dismissed .brand-symbol-static{opacity:1}
 .navigation-shell:not(.navigation-menu-open):not(.navigation-menu-transition)>.app-sidebar.icon-sidebar>.workspace-brand.site-rail-dismissed :is(.brand-symbol-motion,.brand-symbol-prelude){opacity:0}
 /* Canvas retains the original translucent rail beneath the common reveal. */
 body:has(.navigation-shell.navigation-canvas)>.site-navigation-surface{background:var(--surface);opacity:var(--site-navigation-tone)}
 .navigation-shell.navigation-canvas:where(.navigation-menu-open,.navigation-menu-transition)>.app-sidebar>.site-quick-nav{background:color-mix(in srgb,var(--surface) 76%,transparent);backdrop-filter:blur(8px)}
}
@media(prefers-reduced-motion:reduce){body.site-navigation-owner,.site-sections.site-sections-unified,.site-navigation-surface,.navigation-shell>.app-sidebar.icon-sidebar>.site-quick-nav>.icon-button,.navigation-shell>.app-sidebar.icon-sidebar>.site-quick-nav>.icon-button>.site-quick-caption{transition:none}}
.site-favorites-dialog{max-width:470px}
.site-favorites-hint{margin:0 0 12px;color:var(--muted);font-size:14px;line-height:20px}
.site-favorites-list{display:grid;gap:3px;max-height:46dvh;overflow-y:auto}
.site-favorite-entry{display:flex;align-items:center;gap:3px;min-width:0}
.site-favorite-entry[hidden]{display:none}
.site-favorite-entry>.site-favorite-row{flex:1}
.site-favorite-entry>.ui-action{flex:0 0 auto}
.site-favorites-list{position:relative}
.site-favorite-entry>.sw-order-grip{width:32px;min-height:36px;padding:6px;cursor:grab;touch-action:none;user-select:none}
.site-favorites-list>.sw-order-dragging{position:absolute;visibility:hidden;pointer-events:none}
.site-favorites-list>.sw-order-placeholder{pointer-events:none;opacity:.65;background:var(--surface-hover);outline:1px dashed var(--line);outline-offset:-1px}
.site-favorites-list>.sw-order-ghost{display:none}
.site-favorite-row{display:flex;align-items:center;gap:8px;padding:7px 6px;min-width:0;cursor:pointer}
.site-favorite-row>input{width:17px;height:17px;flex:0 0 17px;margin:0}
.site-favorite-row>.ui-icon{width:18px;height:18px;flex:0 0 18px}
.site-favorite-row>span{min-width:0;overflow-wrap:anywhere}
.navigation-shell .course-focus{bottom:var(--course-focus-bottom,0px)}
.navigation-shell .curriculum-authoring{height:calc(100dvh - var(--site-header-height));min-height:0}
/* Canvas mode: the site location is a floating island, not a full-width toolbar. */
.navigation-shell.navigation-canvas>.site-location-bar{position:fixed;left:84px;top:10px;max-width:calc(100vw - 110px);min-height:42px;border:1px solid var(--line);border-radius:8px;padding:3px 6px;box-shadow:0 3px 16px color-mix(in srgb,var(--ink) 8%,transparent)}
/* Authoring only: the existing controls are separate surfaces, not a shared
   enclosing pill. Preserve the header frame/insets and every other canvas. */
.navigation-shell.navigation-authoring>.site-location-bar{background:transparent;border-color:transparent;box-shadow:none}
.navigation-authoring>.site-location-bar>.site-focus-toggle,.navigation-authoring>.site-location-bar>.site-location>.ui-action-menu__trigger{background:var(--surface-muted);border:1px solid var(--line);border-radius:var(--ui-radius);min-height:44px}
.navigation-authoring>.site-location-bar>.site-focus-toggle:hover,.navigation-authoring>.site-location-bar>.site-location>.ui-action-menu__trigger:hover{background:var(--surface-hover)}
.navigation-shell.navigation-canvas>.workspace-content{grid-row:1 / 3}
.navigation-shell.navigation-canvas .curriculum-authoring{height:100dvh}
.navigation-shell.navigation-canvas>.app-sidebar{background:transparent;border-right:0}
.navigation-canvas>.app-sidebar>.site-quick-nav{background:color-mix(in srgb,var(--surface) 76%,transparent);backdrop-filter:blur(8px);border-radius:9px}
.navigation-canvas #curriculum-branching .cw-program{top:68px}
.navigation-canvas #curriculum-branching .cw-history-tools{top:126px}
/* Preserve the original 10px gap below the unchanged 44px history row. */
.navigation-canvas #curriculum-branching .cw-graph-bulk-actions{top:180px}
.navigation-canvas .knowledge-picker{top:68px}
/* Between phone editor and desktop shell breakpoints, both controls use the
   existing row below the full-width mobile location bar. */
@media(min-width:701px) and (max-width:900px){
 .navigation-canvas #curriculum-branching:not(.knowledge-map) .cw-program{top:18px;max-width:min(260px,calc(100% - 36px - 440px - 12px))}
}
/* Match the site's inner 44px controls, not the island's outer 52px frame.
   Keep the lower plan picker and graph/camera geometry independent. */
@media(min-width:901px){
 .navigation-canvas #curriculum-branching:not(.knowledge-map) .cw-tools{top:14px}
}
@media(min-width:1200px){
 .navigation-canvas #curriculum-branching:not(.knowledge-map) .cw-program{top:14px;left:calc(var(--site-location-width,280px) + 24px);max-width:min(260px,calc(100% - var(--site-location-width,280px) - 440px))}
}
@media(min-width:701px) and (max-width:1199px){
 .navigation-canvas #curriculum-branching:not(.knowledge-map) .cw-properties{top:136px}
 .navigation-canvas #curriculum-branching:not(.knowledge-map) .cw-canvas-hint{top:136px}
 .navigation-canvas #curriculum-branching:not(.knowledge-map) .cw-link-legend{top:178px}
}
@media(min-width:901px){
 .navigation-shell>.app-sidebar{z-index:120}
 .navigation-shell .site-quick-nav>.icon-button{position:relative;flex:0 0 auto}
 /* The directory is a page-side region BELOW global chrome. Its column must
    never push the common location bar away from the 72px navigation rail. */
 .navigation-shell.student-sidebar:not(.navigation-canvas)>.site-location-bar{grid-column:1 / -1;margin-left:72px}
 .navigation-shell.student-sidebar:not(.navigation-canvas)>.app-sidebar>.student-directory{--student-directory-top:var(--site-header-height,52px);--student-directory-height:calc(100dvh - var(--site-header-height,52px))}
 .navigation-shell.student-sidebar.navigation-focus:not(.navigation-canvas)>.site-location-bar{margin-left:0}
 .workspace #app.navigation-shell.navigation-focus{grid-template-columns:0 minmax(0,1fr)}
 .navigation-shell.navigation-focus>.app-sidebar{visibility:hidden;pointer-events:none}
 .navigation-shell.navigation-canvas.navigation-focus>.site-location-bar{left:10px}
}
@media(max-width:900px){
 .workspace #app.navigation-shell{display:block;padding-top:52px;padding-bottom:calc(64px + env(safe-area-inset-bottom));min-height:100dvh}
 .navigation-shell>.site-location-bar{position:fixed;top:0;left:0;right:0;height:52px;min-height:52px;padding:4px 8px;gap:5px}
 .site-location>.ui-action-menu__trigger{font-size:15px;padding:5px 3px;max-width:min(100%,calc(100vw - 70px))}
 .site-location-group{font-size:12px}
 .site-location:has(~.site-page-actions>.ui-page__action:not([hidden])) .site-location-group{display:none}
 .site-location>.ui-action-menu__trigger{overflow:hidden}
 .site-page-actions{gap:3px}
 /* Preserve the established grouped fallback's 38px command + 12px margins.
    The shared command is now 44px; its slot, not the button, owns this space. */
 .site-page-header-local-actions>.ui-page__action:has(>.ui-action-group>.accent-action--header:not(.accent-action--compact)){min-height:62px;align-items:center}
 .site-view-context{display:none}
 .navigation-shell>.app-sidebar.icon-sidebar{display:contents}
 .navigation-shell>.app-sidebar>.workspace-brand,.navigation-shell>.app-sidebar>.site-quick-nav,.navigation-shell>.app-sidebar>.phone-menu-button,.navigation-shell>.app-sidebar>.phone-section-title,.navigation-shell>.app-sidebar>small{display:none!important}
 .navigation-shell>.app-sidebar>.sidebar-account-zone{position:fixed;top:6px;right:8px;z-index:120;margin:0;pointer-events:none}
 .navigation-shell>.app-sidebar .sidebar-account{display:none}
 .navigation-shell>.app-sidebar.account-open .sidebar-account{display:grid;pointer-events:auto;position:fixed;inset:58px 8px auto auto;width:min(292px,calc(100vw - 16px));max-height:calc(100dvh - 140px);overflow-y:auto;margin:0}
 .navigation-shell>.workspace-content{padding:16px 16px 32px}
 .navigation-shell>.site-mobile-dock{position:fixed;z-index:115;left:0;bottom:0;right:0;display:flex;align-items:stretch;justify-content:space-around;height:calc(64px + env(safe-area-inset-bottom));margin:0;padding:3px 4px calc(3px + env(safe-area-inset-bottom));background:var(--surface);border-top:1px solid var(--line)}
 .site-mobile-dock>.site-dock-link{display:flex;flex:1 1 0;min-width:0;max-width:110px;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:4px 2px;border:0;background:transparent;text-decoration:none;color:var(--muted);font-size:11px;line-height:13px;text-align:center}
 .site-dock-link>.ui-icon{width:21px;height:21px;flex:0 0 21px}
 .site-dock-link>span{max-width:100%;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}
 .site-mobile-dock>.site-dock-link[aria-current="page"]{background:var(--context-selected-soft);color:var(--ink);border-radius:6px}
 .site-sections{inset:58px 8px auto;margin:0;width:auto;max-height:calc(100dvh - 132px);padding:12px 9px 8px}
 .site-sections-heading>h2{font-size:18px}
 .site-mobile-account{display:inline-flex}
 .site-sections-footer{display:block}
 .navigation-shell.navigation-focus{padding-bottom:0}
 .navigation-shell.navigation-focus>.site-mobile-dock{display:none}
 .navigation-shell.navigation-canvas>.site-location-bar{inset:8px 8px auto;max-width:none;min-height:52px;height:52px}
 .navigation-shell.navigation-canvas>.workspace-content{padding:0}
 .workspace #app.navigation-shell.navigation-canvas:has(.knowledge-workspace){display:flex;flex-direction:column;align-items:stretch;height:100dvh;min-height:0}
 .workspace #app.navigation-shell.navigation-canvas.navigation-focus:has(.knowledge-workspace){padding-bottom:0}
 .navigation-shell.navigation-canvas>.workspace-content:has(.knowledge-workspace){flex:1;min-height:0;height:auto}
 .navigation-canvas .knowledge-picker{top:12px}
 .navigation-shell.navigation-canvas .curriculum-authoring{height:calc(100dvh - 52px - 64px - env(safe-area-inset-bottom))}
 .navigation-shell.navigation-canvas.navigation-focus .curriculum-authoring{height:calc(100dvh - 52px)}
}
/* Catalog's approved compact boundary is independent of the mobile dock. */
/* With a creation command, keep the original action on row one. The fourth
   column reserves the already-fixed basket; the Catalog alone gets row two. */
@media(max-width:900px){
 .navigation-shell>.site-location-bar:has(.ll-task-create){display:grid;grid-template-columns:44px minmax(0,1fr) auto 52px;grid-template-rows:44px 44px;height:auto;gap:5px}
 .workspace #app.navigation-shell:has(>.site-location-bar .ll-task-create){padding-top:var(--site-header-height,52px)}
 .site-location-bar:has(.ll-task-create) .site-page-actions,.site-location-bar:has(.ll-task-create) .ui-page__action,.site-location-bar:has(.ll-task-create) .site-header-context-tools{display:contents}
 .site-location-bar:has(.ll-task-create)>.site-section-info{grid-column:1;grid-row:1}
 .site-location-bar:has(.ll-task-create)>.site-location{grid-column:2;grid-row:1;max-width:none}
 .site-location-bar:has(.ll-task-create)>.site-location>.ui-action-menu__trigger{max-width:100%}
 .site-location-bar .site-header-context-tools>.ll-task-create{grid-column:3;grid-row:1;margin:0}
 .site-location-bar:has(.ll-task-create) .site-header-context-tools>.ll-task-context{grid-column:1/-1;grid-row:2;width:100%;max-width:none}
}
@media(max-width:650px){
 .navigation-shell>.site-location-bar:has(.site-header-context-tools){height:auto;flex-wrap:wrap;align-content:start;justify-content:flex-start}
 .workspace #app.navigation-shell:has(>.site-location-bar .site-header-context-tools){padding-top:var(--site-header-height,52px)}
 .site-location-bar .site-page-actions:has(.site-header-context-tools),.site-location-bar .ui-page__action:has(>.site-header-context-tools),.site-location-bar .site-header-context-tools{display:contents}
 .site-location-bar .site-header-context-tools>.ll-task-context{order:5;flex:1 0 100%;width:100%;max-width:none}
 .site-location-bar:has(.site-header-context-tools)>.site-location{max-width:calc(100% - 104px)}
 .site-location-bar .site-header-context-tools>.ll-basket-wrap{margin-left:auto}
 .site-location-bar:has(.ll-task-create)>.site-location{max-width:none}
}
