/* Shared action geometry. Palette colours and specialised navigation are retained.
   Screen scope prevents these layout rules from changing exported print views. */
@media screen {
  :root {
    --action-height: 44px;
    --action-radius: 12px;
    --action-gap: 10px;
    --action-font-size: 14px;
  }
  /* Navigation cards and calendar entries use stacked content from the template.
     Applying inline-flex here squeezes their titles between their siblings. */
  .work-content button:not(.path-card):not(.month-lesson),
  .editor button,
  .work-content .file-action,
  .editor .file-action {
    box-sizing: border-box;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    min-width: var(--action-height);
    min-height: var(--action-height);
    max-width: 100%;
    border-radius: var(--action-radius);
    padding: 10px 14px;
    font-size: var(--action-font-size);
    font-weight: 600;
    line-height: 1.4;
    white-space: normal;
    overflow-wrap: anywhere;
    text-align: center;
  }
  .work-content .actions,
  .work-content .page-actions,
  .editor .actions,
  .editor footer {
    display: flex;
    flex-wrap: wrap;
    align-items: stretch;
    gap: var(--action-gap);
  }
  .work-content .actions button,
  .work-content .actions .file-action,
  .work-content .section-title > button,
  .editor footer button {
    font-size: var(--action-font-size);
    border-radius: var(--action-radius);
    padding: 10px 14px;
  }
  .work-content .page-heading { align-items: flex-start; flex-wrap: wrap; gap: 20px; }
  .work-content .page-heading > div:first-child { flex: 1 1 280px; min-width: 0; }
  .work-content .page-actions { flex: 0 1 560px; justify-content: flex-end; }
  .work-content .toolbar {
    flex-wrap: wrap;
    align-items: flex-end;
    justify-content: flex-start;
    gap: 12px;
  }
  .work-content .toolbar > label { flex: 1 1 170px; min-width: 0; }
  .work-content .section-title { flex-wrap: wrap; align-items: center; }
  .work-content button.primary,
  .work-content .section-title > button.primary,
  .editor button.primary {
    border: 1px solid var(--primary);
    background: var(--primary);
    color: var(--reverse, #fff);
  }
  .work-content .file-action,
  .editor .file-action { background: var(--panel); color: var(--ink); cursor: pointer; }
  .work-content button:disabled,
  .editor button:disabled { cursor: not-allowed; opacity: 0.5; }
  .work-content button:not(:disabled):hover,
  .editor button:not(:disabled):hover { filter: brightness(0.96); }
  .work-content button:focus-visible,
  .editor button:focus-visible,
  .work-content .file-action:focus-within,
  .editor .file-action:focus-within {
    outline: 3px solid var(--accent);
    outline-offset: 3px;
  }
  .editor .dialog-head button {
    flex: 0 0 var(--action-height);
    width: var(--action-height);
    height: var(--action-height);
    padding: 0;
    font-size: 24px;
  }
  .work-content button[data-action="vault-erase"],
  .editor button[data-action="password-empty-restart"],
  .work-content button[data-file-remove] { border-color: var(--accent); }
  /* Palette cards and section navigation keep their established shape and colours. */
  .work-content .theme-grid button { flex-direction: column; }
  .work-content .section-tools button { border-radius: 20px; }
  .work-content .file-action,
  .editor .file-action { position: relative; }
  .file-action .file-picker-input {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    min-height: 0;
    padding: 0;
    opacity: 0;
    cursor: inherit;
  }
  .editor .file-action { margin-block: 8px; }
}
@media screen and (max-width: 760px) {
  .work-content .page-heading > div:first-child,
  .work-content .page-actions { flex-basis: 100%; width: 100%; }
  .work-content .page-actions { justify-content: flex-start; }
  .work-content .actions > button,
  .work-content .actions > .file-action,
  .editor .actions > button,
  .editor .actions > .file-action,
  .editor footer > button { flex: 1 1 180px; }
  .editor footer { align-items: stretch; }
}
@media screen and (max-width: 420px) {
  .work-content .actions > button,
  .work-content .actions > .file-action,
  .editor .actions > button,
  .editor .actions > .file-action,
  .editor footer > button { flex-basis: 100%; }
}
@media print {
  .file-picker-input { display: none !important; }
}
/* Compact icons stay within their own card or tab; their hit area is separate from the glyph. */
@media screen {
 .nav-item{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:0;position:relative;min-width:0}
 .work-nav .nav-item>button[data-action]{min-width:0;min-height:44px;width:100%;overflow-wrap:anywhere}
 .nav-controls{display:inline-flex;align-items:center;gap:0;flex-wrap:nowrap;flex-shrink:0;line-height:1}
 .work-nav .nav-controls button,.work-content .nav-controls button,.work-nav .nav-personalize button{display:inline-flex;align-items:center;justify-content:center;min-width:32px;min-height:32px;width:32px;height:32px;padding:7px;border-radius:8px;font-size:16px;line-height:1;background:transparent;color:var(--muted);border:0;box-shadow:none;transform:none;flex:none}
 .nav-controls button svg{display:block;max-width:none;pointer-events:none}
 .work-nav .nav-controls button[aria-pressed=true],.work-content .nav-controls button[aria-pressed=true]{color:var(--primary);background:transparent;border:0}
 .nav-controls button:hover,.nav-controls button:focus-visible{background:var(--soft)!important;color:var(--ink)}
 .nav-personalize{display:flex;justify-content:flex-end;gap:2px}
 .work-nav .nav-personalize button[aria-pressed=true]{background:var(--soft);color:var(--primary)}
 .work-nav .small{margin:4px 12px;font-size:12px}
 .nav-favorites{padding-block:4px;margin-block:4px;border-block:1px solid var(--border)}
 .nav-favorites h2{letter-spacing:.1em}
 .section-tools .nav-tool{display:flex;align-items:center;gap:0;border:0;border-radius:12px;padding:0;background:var(--soft);flex-shrink:0;position:relative}
 .section-tools .nav-tool>button[data-action]{min-height:40px;padding:8px 10px;border-radius:12px;font-size:13px;white-space:nowrap}
 .nav-drag-handle{cursor:grab;touch-action:none;user-select:none;-webkit-user-select:none}
 .nav-drag-handle:active{cursor:grabbing}
 [data-nav-item].nav-dragging{opacity:.45}
 [data-nav-item].nav-drop-before:before,[data-nav-item].nav-drop-after:after{content:'';position:absolute;z-index:2;pointer-events:none;background:var(--primary);border-radius:3px}
 .nav-item.nav-drop-before:before{inset:-3px 0 auto;height:3px}.nav-item.nav-drop-after:after{inset:auto 0 -3px;height:3px}
 .nav-tool.nav-drop-before:before,.path-item.nav-drop-before:before{inset:0 auto 0 -4px;width:3px}.nav-tool.nav-drop-after:after,.path-item.nav-drop-after:after{inset:0 -4px 0 auto;width:3px}
 .path-item{position:relative;min-width:0}
 .path-item>.path-card{width:100%;height:100%;padding-top:22px;padding-right:42px}
 .path-item>.nav-controls{position:absolute;top:10px;right:8px;z-index:1;background:transparent;border:0;border-radius:0;flex-direction:column}
 .path-item>.nav-controls button{color:var(--ink)}
 body[data-theme]:not([data-theme=atelier]) .path-item>.path-card[data-path-index="1"]{background:var(--t-card1)}
 body[data-theme]:not([data-theme=atelier]) .path-item>.path-card[data-path-index="2"]{background:var(--t-card2);border-radius:18px 50px 18px 48px}
 body[data-theme]:not([data-theme=atelier]) .path-item>.path-card[data-path-index="3"]{background:var(--t-card3)}
 body[data-theme]:not([data-theme=atelier]) .path-item>.path-card[data-path-index="4"]{background:var(--t-card4);border-radius:18px 48px 18px 48px}
 .path-item>.path-card[data-path-index="2"]{background:#d9e7d6;border-radius:18px 50px 18px 48px}
 .path-item>.path-card[data-path-index="3"]{background:#f2d883}
 .path-item>.path-card[data-path-index="4"]{background:#e5c7b5;border-radius:18px 48px 18px 48px}
}
@media screen and (min-width:901px){
 .work-layout[data-menu-side=right]{grid-template-columns:minmax(0,1fr) 224px}
 .work-layout[data-menu-side=right]>.work-nav{grid-column:2;grid-row:1}
 .work-layout[data-menu-side=right]>.work-content{grid-column:1;grid-row:1}
 .work-layout[data-menu-side=left]{grid-template-columns:224px minmax(0,1fr)}
}
@media screen and (max-width:900px){
 .work-layout[data-menu-side]{display:block}
 .work-layout[data-menu-side=right]>.work-nav{left:auto;right:0;transform:translateX(110%)}
 .work-layout[data-menu-side=right]>.work-nav.open{transform:translateX(0)}
 .work-layout[data-menu-side=left]>.work-nav{right:auto;left:0;transform:translateX(-110%)}
 .work-layout[data-menu-side=left]>.work-nav.open{transform:translateX(0)}
 .work-nav .nav-controls button,.work-content .nav-controls button{min-width:36px;min-height:36px;width:36px;height:36px;padding:9px}
}
@media screen and (hover:hover) and (pointer:fine){
 .nav-item .nav-star:not([aria-pressed=true]),.path-item .nav-star:not([aria-pressed=true]){opacity:.55}
 .nav-item:hover .nav-star,.nav-item:focus-within .nav-star,.path-item:hover .nav-star,.path-item:focus-within .nav-star{opacity:1}
}
@media print{.nav-controls,.nav-personalize{display:none!important}.path-item>.path-card{width:100%}}

/* Phone and tablet layouts share one drawer breakpoint. No desktop flex bases on a vertical page. */
@media screen and (max-width:900px){
 .work-layout{padding:20px 16px 64px;max-width:100%;min-width:0}
 .work-header{height:auto;min-height:64px;padding:10px 12px;gap:8px;position:sticky;top:0;z-index:30;max-width:100%}
 .work-header>div:first-child{gap:8px!important;flex-shrink:0}
 .work-header .ox-logo{width:clamp(100px,17vw,145px)}
 .work-header .mobile-trigger{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;min-height:36px;padding:0;flex:none}
 .work-context{flex:1;min-width:0;gap:4px;justify-content:flex-end}
 .work-context>span{display:none}.work-context>span:first-child{display:block;min-width:0;flex:1;padding:0;border:0}
 .work-context label{margin:0;min-width:0}.work-context select{font-size:13px;min-height:40px;width:100%;max-width:180px;padding:6px}
 .work-context .work-home{flex:none;font-size:0;width:36px;height:36px;padding:0;min-height:36px;margin:0;display:grid;place-items:center}
 .work-context .work-home:before{content:'⌂';font-size:22px}
 .work-nav{position:fixed;z-index:60;top:0;bottom:0;width:min(300px,calc(100vw - 44px));height:100dvh;max-height:100dvh;overflow:auto;overscroll-behavior:contain;padding:16px 12px 32px;box-shadow:8px 0 30px #20433822;transition:transform .2s;visibility:hidden}
 .work-nav.open{visibility:visible}
 .menu-shade.open{display:block;position:fixed;inset:0;z-index:55;background:#09251f70}
 .work-nav .nav-item>button[data-action]{font-size:14px;padding:10px 9px;gap:6px}
 .nav-drawer-close{display:flex;align-items:center;justify-content:space-between;margin:0 4px 10px;font-size:13px;color:var(--muted)}
 .work-nav .nav-drawer-close button{width:36px;height:36px;min-height:36px;border-radius:8px;padding:0;display:grid;place-items:center;font-size:24px}
 .section-tools{flex-wrap:nowrap;overflow-x:auto;max-width:100%;padding:0 2px 10px;gap:6px;scrollbar-width:thin;overscroll-behavior-x:contain}
 .section-tools .nav-tool{flex-wrap:nowrap}.section-tools .nav-controls{flex-wrap:nowrap}
 .work-content .page-heading{gap:10px;margin:10px 0 18px}
 .work-content .page-heading>div:first-child,.work-content .page-actions{flex:0 0 auto;width:100%;min-height:0}
 .work-content .page-actions{justify-content:flex-start}
 .work-content .toolbar>label{flex:0 0 auto;min-width:0;width:100%;max-width:100%}
 .work-content .toolbar{gap:10px}
 .work-page-head h1{font-size:clamp(27px,5vw,36px);margin:8px 0;overflow-wrap:anywhere}
 .work-page-head p{font-size:14px;margin:0;line-height:1.5}
 .panel,.work-panel,.detail-card{padding:18px;border-radius:18px;min-width:0}
 .workspace-intro{min-height:0;padding:24px;border-radius:24px 64px 24px 24px}
 .workspace-intro h1{font-size:clamp(28px,5vw,36px)}.workspace-intro p{font-size:14px}
 .today-grid,.card-grid,.detail-cards{grid-template-columns:1fr}
 .path-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
 .path-item>.path-card{min-height:150px;border-radius:22px!important;padding:20px 42px 18px 18px;transform:none}
 .path-card strong{font-size:20px;line-height:1.2}.path-card small{display:block;line-height:1.4}
 .path-card .symbol{font-size:28px}
 .metrics{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.metric{padding:14px}
 .table-wrap{max-width:100%;min-width:0;overscroll-behavior-x:contain}
 .work-content .actions>button,.work-content .actions>.file-action{flex:0 1 auto;font-size:13px}
 .work-content .actions{gap:6px}.work-content .page-actions>button{flex:1 1 160px}
 .period-grid,.timetable-grid,.calendar-week{grid-template-columns:1fr}
 .editor{width:calc(100% - 24px);max-width:640px;max-height:calc(100dvh - 24px);padding:18px;margin:auto;border-radius:18px}
 .editor .form-row{grid-template-columns:1fr}.editor input,.editor select,.editor textarea{font-size:16px;min-width:0;max-width:100%}
 .editor fieldset{min-width:0;padding:12px}.editor legend{overflow-wrap:anywhere;max-width:100%}
 .editor footer{position:sticky;bottom:-18px;background:var(--panel);padding:12px 0 max(12px,env(safe-area-inset-bottom));z-index:1}
 .editor footer>button{flex:1 1 100px}
 .prep-filters{margin-bottom:18px}.prep-filters>summary{font-size:14px;font-weight:700;padding:4px;cursor:pointer}
 .prep-filters[open]>summary{margin-bottom:14px}
 .personal-view-tools{margin:0 0 12px;display:flex;flex-direction:row;flex-wrap:wrap;justify-content:flex-end}
 .work-content .personal-view-tools>button{min-height:32px;padding:5px 9px;font-size:12px;color:var(--muted);background:transparent;border:0}
 .workspace-footer{font-size:11px;padding:16px 0;gap:8px;overflow-wrap:anywhere}
}
@media screen and (min-width:901px){.nav-drawer-close{display:none}.nav-drag-handle{opacity:0}.nav-item:hover .nav-drag-handle,.nav-item:focus-within .nav-drag-handle,.nav-tool:hover .nav-drag-handle,.nav-tool:focus-within .nav-drag-handle,.path-item:hover .nav-drag-handle,.path-item:focus-within .nav-drag-handle{opacity:1}}
@media screen and (max-width:560px){
 .work-layout{padding-inline:12px}.path-grid{grid-template-columns:1fr}
 .path-item>.path-card{min-height:105px;text-align:left;padding:16px 48px 16px 18px}
 .path-card .symbol{float:left;margin:6px 14px 0 0}.path-card strong{margin:4px 0;font-size:20px}
 .work-content .section-tools .nav-tool>button[data-action]{font-size:12px;padding:8px;min-height:40px}
 .report-document{padding:16px 12px}.report-document>h2{font-size:24px}
 table.mobile-records,table.mobile-records tbody{display:block;width:100%}
 table.mobile-records thead{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
 table.mobile-records tr{display:block;border-bottom:1px solid var(--border);padding:10px 12px}
 table.mobile-records td,table.mobile-records tbody th{display:grid;grid-template-columns:minmax(85px,.8fr) minmax(0,1.2fr);gap:10px;padding:6px 0;min-width:0;border:0;white-space:normal;overflow-wrap:anywhere;text-align:left}
 table.mobile-records td:before,table.mobile-records tbody th:before{content:attr(data-mobile-label);color:var(--muted);font-weight:600;font-size:12px}
 .lesson{grid-template-columns:1fr}.lesson-time{display:flex;gap:10px;align-items:center;padding:10px 14px;border-bottom:1px solid var(--border)}
 .lesson-main{padding:14px}.lesson-main h3{font-size:20px}
 .month-day{border-radius:16px}.month-day-head{gap:8px}
 .work-context select{max-width:145px;font-size:12px}
}
@media screen {
 .prep-card{position:relative}.prep-card>h2{padding-right:28px}
 .work-content .prep-card>.prep-star{position:absolute;right:12px;top:12px;width:36px;height:36px;min-width:36px;min-height:36px;border:0;background:transparent;box-shadow:none;color:var(--muted);padding:9px}
 .work-content .prep-card>.prep-star[aria-pressed=true]{color:var(--primary)}
}
@media print{.nav-drawer-close{display:none}.prep-filters{display:none}}
@media screen and (max-width:900px){body.menu-open{overflow:hidden}}
