/* SPDX-License-Identifier: EUPL-1.2 */
@font-face{font-family:Plex;src:url('../brand/fonts/IBMPlexSans-Regular.woff2') format('woff2');font-style:normal;font-weight:400;font-display:swap}
:root{--bg:#F7F8FC;--surface:#FFFFFF;--text:#2C3140;--muted:#5F6678;--line:#D9DDF0;--accent:#B34E49;--link:#4353B8;--wash:#FDF0EE;--code:#E9ECFF;--coral:#EA877F;--peri:#7C8CFF;color-scheme:light}
:root[data-theme=dark]{--bg:#2C3140;--surface:#343B50;--text:#F7F8FC;--muted:#D0D5E5;--line:#5F6678;--accent:#F7F8FC;--link:#E9ECFF;--wash:#40485E;--code:#40485E;color-scheme:dark}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:Plex,system-ui,sans-serif;font-size:16px;line-height:1.6}a{color:var(--link);text-underline-offset:3px}a:hover{text-decoration-thickness:2px}button,input{font:inherit}button{cursor:pointer;background:var(--surface);color:var(--text);border:1px solid var(--line);border-radius:5px;padding:.3rem .65rem}a:focus-visible,button:focus-visible,input:focus-visible{outline:3px solid var(--link);outline-offset:4px}[hidden]{display:none!important}.skip{position:absolute;top:-100px;left:1rem;background:var(--surface);padding:1rem;z-index:2}.skip:focus{top:1rem}.site-header{height:112px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:2rem;padding:0 4vw;background:var(--surface)}.site-header img{display:block;max-width:100%;object-fit:contain}.logo-dark{display:none!important}[data-theme=dark] .logo-light{display:none!important}[data-theme=dark] .logo-dark{display:block!important}.edition{font-size:11px;letter-spacing:.18em;color:var(--muted);border-left:1px solid var(--line);padding-left:2rem}.site-header button{margin-left:auto;font-size:13px}.shell{max-width:1600px;margin:auto;display:grid;grid-template-columns:245px minmax(0,1fr);gap:4vw;padding:44px 4vw 80px}.sidebar{border-right:1px solid var(--line);padding-right:28px}.sidebar label{display:block;font-size:13px;margin-bottom:9px}.sidebar input{width:100%;min-width:0;border:1px solid var(--line);background:var(--surface);color:var(--text);border-radius:6px;padding:.7rem;font-size:14px}.sidebar ul{padding:0;list-style:none}.sidebar li{margin:.7rem 0}.sidebar nav a{text-decoration:none;font-size:14px}.sidebar nav{margin-top:32px}.eyebrow{font-size:11px;letter-spacing:.12em;font-weight:600;color:var(--accent)}#app-search-status{font-size:12px;color:var(--muted);min-height:2em}#app-results{font-size:13px;padding-bottom:16px;border-bottom:1px solid var(--line)}.sidebar-note{margin-top:70px;font-size:22px;line-height:1.2;color:var(--accent)}.sidebar-note p{font-size:12px;color:var(--muted);margin-top:16px}.hero{padding:20px 0 8px}.hero h1{font-family:Plex,system-ui,sans-serif;font-size:clamp(40px,5.2vw,78px);letter-spacing:-.045em;line-height:1.07;font-weight:400;margin:20px 0 24px}.hero h1 span{color:var(--accent)}.intro{font-size:18px;max-width:510px;color:var(--muted)}.hero-rule{margin-top:50px;border-top:1px solid var(--text);padding-top:14px;display:flex;justify-content:space-between;font-size:10px;letter-spacing:.13em}.library-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;margin-top:32px}.library-item{display:block;border:1px solid var(--line);border-top:4px solid var(--coral);border-radius:2px;background:var(--surface);padding:26px;text-decoration:none;color:var(--text)}.library-item:nth-child(even){border-top-color:var(--peri)}.shelf-number{font:14px ui-monospace,monospace;color:var(--muted)}.library-item h3{font:400 30px Plex,system-ui,sans-serif;letter-spacing:-.025em;margin:18px 0 28px}.library-item p{margin:0;font-size:13px;color:var(--accent)}.library-open span{float:right}.library-item:hover{border-color:var(--accent)}.page-heading{padding:10px 0 20px;border-bottom:1px solid var(--line);margin-bottom:28px}.page-heading h1{font:400 clamp(34px,4vw,56px)/1.15 Plex,system-ui,sans-serif;letter-spacing:-.035em;margin:20px 0 10px}.page-heading p{color:var(--muted)}.sheet-section{scroll-margin-top:24px;margin:32px 0}.sheet-section>h2{font-size:20px;font-weight:400;border-bottom:1px solid var(--line);padding-bottom:12px}.cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;align-items:start}.card{min-width:0;overflow-wrap:anywhere;background:var(--surface);border:1px solid var(--line);border-top:3px solid var(--coral);padding:20px;border-radius:3px;scroll-margin-top:24px}.card h3{font-size:18px;font-weight:400;line-height:1.3;margin:0 0 18px}.card h3 a{color:var(--text);text-decoration:none}.card p{margin:12px 0;font-size:14px}.card :is(ul,ol){padding-left:1.25rem;font-size:14px}.card blockquote{border-left:3px solid var(--peri);margin:16px 0;padding-left:12px;color:var(--muted)}.card pre,pre{display:flow-root;white-space:pre-wrap;overflow-wrap:anywhere;font-size:12px;padding:14px;background:var(--code);border-radius:4px;position:relative}code{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:.85em;background:var(--code);border-radius:3px;padding:.1em .25em}pre code{font-size:inherit;padding:0}.copy{position:relative;float:right;display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;margin:-4px -7px 0 8px;line-height:1}
.copy svg{flex:none;pointer-events:none}
.copy-feedback{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.card table{width:100%;border-collapse:collapse;font-size:12px}.card :is(td,th){padding:8px 6px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}.card th{font-weight:600}.align-right{text-align:right!important}.align-center{text-align:center!important}.col-span-2{grid-column:span 2}.col-span-3{grid-column:span 3}.row-span-2{grid-row:span 2}.row-span-3{grid-row:span 3}.provenance{margin-top:45px;border-top:1px solid var(--line);padding-top:15px}.provenance h2{font-size:16px}.provenance p{font-size:12px;color:var(--muted)}footer{border-top:1px solid var(--line);padding:22px 4vw;font-size:11px;color:var(--muted)}footer span{float:right}
@media(max-width:1150px){.cards{grid-template-columns:repeat(2,minmax(0,1fr))}.col-span-3{grid-column:span 2}.shell{grid-template-columns:205px minmax(0,1fr);gap:28px}.sidebar{padding-right:20px}}
@media(max-width:760px){.site-header{height:90px;padding:0 6vw;gap:10px}.site-header img{width:170px}.edition{display:none}.shell{display:block;padding:24px 6vw 50px}.sidebar{border-right:0;border-bottom:1px solid var(--line);padding:0 0 20px;margin-bottom:30px}.sidebar nav{margin-top:18px}.sidebar nav ul{display:flex;gap:15px;flex-wrap:wrap;margin-bottom:0}.sidebar-note{display:none}.hero{padding-top:0}.hero h1{font-size:48px}.hero-rule{margin-top:32px}.library-grid,.cards{grid-template-columns:minmax(0,1fr)}.col-span-2,.col-span-3{grid-column:span 1}.row-span-2,.row-span-3{grid-row:auto}.library-item{padding:22px}.page-heading h1{font-size:38px}footer span{float:none;display:block;margin-top:4px}}
@media print{body{background:white;color:black;font-size:10pt}.sidebar,.site-header,footer,.copy,.skip{display:none!important}.shell{display:block;padding:0}.cards{display:block}.card{break-inside:avoid;box-shadow:none;margin-bottom:12pt;border:1px solid #888}.hero,.page-heading{padding:0}a{color:inherit}pre,code{background:#eee;color:black}.provenance{break-before:auto}}

/* Row spans through 12 adapt; column spans are clamped to the section grid by the renderer. */
.row-span-4{grid-row:span 4}.row-span-5{grid-row:span 5}.row-span-6{grid-row:span 6}.row-span-7{grid-row:span 7}.row-span-8{grid-row:span 8}.row-span-9{grid-row:span 9}.row-span-10{grid-row:span 10}.row-span-11{grid-row:span 11}.row-span-12{grid-row:span 12}
@media(max-width:760px){.row-span-4,.row-span-5,.row-span-6,.row-span-7,.row-span-8,.row-span-9,.row-span-10,.row-span-11,.row-span-12{grid-row:auto}}
.card h3 .permalink{float:right;font-size:13px;color:var(--muted);padding-left:8px}
/* Inputs retain a visible boundary and readable placeholder in both themes. */
.sidebar input{border-color:var(--muted)}
.sidebar input::placeholder{color:var(--muted);opacity:1}
/* Follow the system scheme before app.js runs, or without it; an explicit choice wins. */
@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#2C3140;--surface:#343B50;--text:#F7F8FC;--muted:#D0D5E5;--line:#5F6678;--accent:#F7F8FC;--link:#E9ECFF;--wash:#40485E;--code:#40485E;color-scheme:dark}:root:not([data-theme=light]) .logo-light{display:none!important}:root:not([data-theme=light]) .logo-dark{display:block!important}}

/* Page actions and progressively disclosed provenance. */
.page-tools{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}
.edit-link{display:inline-flex;align-items:center;gap:7px;min-height:36px;padding:5px 10px;border:1px solid var(--line);border-radius:5px;color:var(--muted);font-size:12px;font-weight:500;text-decoration:none;background:var(--surface)}
.edit-link:hover{color:var(--text);border-color:var(--muted)}
.edit-link svg{flex:none}
.source-details{font-size:12px;color:var(--muted)}
.source-details summary{cursor:pointer;width:fit-content;padding:5px 0;text-decoration:underline;text-underline-offset:3px}
.source-details summary:focus-visible{outline:3px solid var(--link);outline-offset:4px}
.source-metadata{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:0 12px;line-height:1.4;margin:12px 0;color:var(--text)}
.source-metadata dt{white-space:pre-wrap;font-weight:500;overflow-wrap:anywhere;max-width:12rem}
.source-metadata dd{margin:0;min-width:0;white-space:pre-wrap;overflow-wrap:anywhere}
@media(max-width:480px){.source-metadata dt{max-width:30vw}}
@media(max-width:760px){.edit-link{min-height:44px}}
@media print{.edit-link{display:none}}

.provenance{margin-top:28px;padding-top:12px}
.source-details summary{overflow-wrap:anywhere}
/* Section column hints (.cols-N). */
.cards.cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.cards.cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.cards.cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.cards.cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.cards.cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.cards.cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.col-span-4{grid-column:span 4}.col-span-5{grid-column:span 5}.col-span-6{grid-column:span 6}
@media(max-width:1150px){.cards.cols-3,.cards.cols-4,.cards.cols-5,.cards.cols-6{grid-template-columns:repeat(2,minmax(0,1fr))}.col-span-3,.col-span-4,.col-span-5,.col-span-6{grid-column:span 2}}
@media(max-width:760px){.cards.cols-2,.cards.cols-3,.cards.cols-4,.cards.cols-5,.cards.cols-6{grid-template-columns:minmax(0,1fr)}.col-span-2,.col-span-3,.col-span-4,.col-span-5,.col-span-6{grid-column:span 1}}
/* Category shelves and sheet metadata. */
.shelf{margin-top:44px}.shelf-title{font-size:13px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);border-bottom:1px solid var(--line);padding-bottom:10px;margin:0}.shelf .library-grid{margin-top:20px}
.library-item .library-description{color:var(--muted);font-size:14px;margin:0 0 18px}
/* Shelf card facts: card count, documented tool and tag pills; all are text, never colour alone. */
.shelf .library-item{display:flex;flex-direction:column}.shelf .library-item .shelf-number{order:-1}.shelf .library-item h3{margin:10px 0 8px}.library-item .shelf-number{color:var(--muted);font-size:13px}.library-item .library-tool{color:var(--muted);font-size:13px;margin:0 0 10px;overflow-wrap:anywhere}.library-item .library-tags{display:flex;flex-wrap:wrap;gap:6px;list-style:none;padding:0;margin:0 0 14px}.library-item .library-tags li{font-size:12px;border:1px solid var(--line);border-radius:999px;padding:1px 9px;color:var(--muted);overflow-wrap:anywhere}
.library-item .library-fresh{color:var(--muted);font-size:13px;margin:0 0 10px;overflow-wrap:anywhere}.page-heading .sheet-fresh{color:var(--muted);font-size:13px;margin:0 0 14px;overflow-wrap:anywhere}
.sheet-description{font-size:18px;max-width:640px}.sheet-category{margin:0}
.sheet-tags{display:flex;flex-wrap:wrap;gap:8px;list-style:none;padding:0;margin:12px 0 0}.sheet-tags li{font-size:12px;border:1px solid var(--line);border-radius:999px;padding:2px 10px;color:var(--muted)}
/* Card kinds: a text label plus an accent rule. */
.card-kind{margin:-6px 0 10px;font-size:11px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.card.note{border-top-color:var(--link)}.card.tip{border-top-color:var(--peri)}.card.warning{border-top-color:var(--accent);background:var(--wash)}.card.warning .card-kind{color:var(--accent)}
/* Search matches are marked without changing the result text. */
#app-results mark{background:var(--wash);color:inherit;border-radius:2px;padding:0 1px}
.library-item .library-license,.result-license{font-size:12px;color:var(--muted);margin:0 0 10px}
/* Key tables (.keys): keyboard input rendered as keys. */
kbd{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:.85em}kbd kbd,td>kbd:not(:has(kbd)){display:inline-block;min-width:1.6em;text-align:center;padding:.05em .4em;border:1px solid var(--line);border-bottom-width:2px;border-radius:4px;background:var(--surface)}
/* Section jump list. */
.sheet-toc{margin:0 0 28px;padding:12px 0;border-bottom:1px solid var(--line)}.sheet-toc ul{display:flex;flex-wrap:wrap;gap:6px 18px;list-style:none;margin:0;padding:0}.sheet-toc a{font-size:14px;text-decoration:none}.sheet-toc a:hover{text-decoration:underline}
@media print{.sheet-toc{display:none}}
/* Related references. */
.related{margin-top:40px;border-top:1px solid var(--line);padding-top:12px}.related h2{font-size:16px;font-weight:600}.related ul{display:flex;flex-wrap:wrap;gap:8px 20px;list-style:none;padding:0}
@media print{.related{display:none}}
/* Grouped native disclosures remain operable without JavaScript. */
.library-nav{overflow-wrap:anywhere}.library-group{margin:12px 0}.library-group>summary{cursor:pointer;font-size:14px;font-weight:600;padding:6px 0}.library-group>summary:focus-visible{outline:3px solid var(--link);outline-offset:3px}.library-count{font-weight:400;color:var(--muted);font-size:12px}.library-nav .library-links{display:block;list-style:none;margin:4px 0 0;padding:0 0 0 14px}.library-nav .library-links li{margin:3px 0}.library-nav a{display:inline-block;padding:4px 0;overflow-wrap:anywhere}.library-nav a[aria-current=page]{font-weight:700;border-left:3px solid var(--accent);padding-left:8px;color:var(--text)}.browse-tags{margin-top:12px}.sheet-tags a{color:inherit}.tag-results{padding:0;list-style:none}.tag-results li{padding:12px 0;border-bottom:1px solid var(--line)}.tag-results p{margin:4px 0;color:var(--muted)}
.classic-shell{display:grid;grid-template-columns:210px minmax(0,1fr);max-width:1500px;margin:auto}.library-sidebar{padding:12px 16px;border-right:1px solid var(--line)}.classic-shell #app-main{width:100%;min-width:0}.classic .library-group>summary,.classic .library-nav a{font-size:12px}
@media(max-width:760px){.classic-shell{display:block}.library-sidebar{border-right:0;border-bottom:1px solid var(--line)}.sidebar-note{display:none}}
@media print{.library-sidebar{display:none}.classic-shell{display:block}}

/* Independent palette tokens; Dracula dark accents follow draculatheme.com/contribute. */
:root[data-palette="graphite-coral"]{--bg:#F7F8FC;--surface:#FFFFFF;--text:#2C3140;--muted:#5F6678;--line:#D9DDF0;--accent:#A84944;--link:#4353B8;--code:#E9ECFF;--coral:#EA877F;--peri:#7C8CFF;--wash:#E9ECFF}
:root[data-palette="graphite-coral"][data-theme="dark"]{--bg:#25272E;--surface:#30323C;--text:#F7F8FC;--muted:#CACBD5;--line:#686B7C;--accent:#F2A098;--link:#AFB9FF;--code:#393C49;--coral:#EA877F;--peri:#7C8CFF;--wash:#393C49}
:root[data-palette="paper-ink"]{--bg:#FAF7F0;--surface:#FFFCF6;--text:#29251F;--muted:#655C50;--line:#A69B8A;--accent:#963E36;--link:#704338;--code:#EEE7D9;--coral:#B34E49;--peri:#9A7970;--wash:#EEE7D9}
:root[data-palette="paper-ink"][data-theme="dark"]{--bg:#25231F;--surface:#312E28;--text:#F6EEDF;--muted:#CEC3B1;--line:#827869;--accent:#F3A18E;--link:#F0C4A5;--code:#3B362F;--coral:#EA877F;--peri:#C9AD95;--wash:#3B362F}
:root[data-palette="midnight-periwinkle"]{--bg:#F3F5FF;--surface:#FFFFFF;--text:#202748;--muted:#535E7A;--line:#909AB5;--accent:#794637;--link:#424BA8;--code:#E5E9FF;--coral:#EA877F;--peri:#7C8CFF;--wash:#E5E9FF}
:root[data-palette="midnight-periwinkle"][data-theme="dark"]{--bg:#141B30;--surface:#202A43;--text:#F1F4FF;--muted:#C3CCE3;--line:#697695;--accent:#F0A59C;--link:#B8C1FF;--code:#2A3552;--coral:#EA877F;--peri:#7C8CFF;--wash:#2A3552}
:root[data-palette="monochrome"]{--bg:#FAFAFA;--surface:#FFFFFF;--text:#111111;--muted:#555555;--line:#767676;--accent:#222222;--link:#111111;--code:#EEEEEE;--coral:#555555;--peri:#888888;--wash:#EEEEEE}
:root[data-palette="monochrome"][data-theme="dark"]{--bg:#111111;--surface:#1C1C1C;--text:#FFFFFF;--muted:#CCCCCC;--line:#888888;--accent:#FFFFFF;--link:#FFFFFF;--code:#303030;--coral:#AAAAAA;--peri:#DDDDDD;--wash:#303030}
:root[data-palette="teal-copper"]{--bg:#F1F8F6;--surface:#FFFFFF;--text:#153C39;--muted:#49635F;--line:#7E9B94;--accent:#873E27;--link:#006457;--code:#E0EFEB;--coral:#B56C42;--peri:#349B88;--wash:#E0EFEB}
:root[data-palette="teal-copper"][data-theme="dark"]{--bg:#132A28;--surface:#1D3935;--text:#EDF9F3;--muted:#C1D7CE;--line:#648D80;--accent:#F2B087;--link:#83DFCC;--code:#29473F;--coral:#D58D5B;--peri:#63CAB1;--wash:#29473F}
:root[data-palette="dracula"]{--bg:#F8F6FF;--surface:#FFFFFF;--text:#29263D;--muted:#655C7A;--line:#9A8AAF;--accent:#8B286B;--link:#6941A5;--code:#EDE7F8;--coral:#A54270;--peri:#7F57BA;--wash:#EDE7F8}
:root[data-palette="dracula"][data-theme="dark"]{--bg:#282A36;--surface:#303341;--text:#F8F8F2;--muted:#CDD0E2;--line:#7E89B4;--accent:#FF79C6;--link:#BD93F9;--code:#343746;--coral:#FFB86C;--peri:#BD93F9;--wash:#343746}
.appearance-controls{display:flex;align-items:center;gap:8px;margin-left:auto;min-width:0}.appearance-controls select{font:inherit;font-size:13px;max-width:190px;min-width:0;padding:6px;color:var(--text);background:var(--surface);border:1px solid var(--line);border-radius:5px}.appearance-controls button{margin-left:0}.appearance-controls select:focus-visible{outline:3px solid var(--link);outline-offset:3px}
@media(max-width:760px){.site-header{height:auto;min-height:90px;flex-wrap:wrap;padding-block:12px}.site-header .appearance-controls{flex-basis:100%;justify-content:flex-end}.appearance-controls select{max-width:55vw}}
@media print{.appearance-controls{display:none!important}body{--bg:#fff;--surface:#fff;--text:#000;--muted:#333;--link:#000;--accent:#000;--line:#888;--code:#eee;--wash:#fff}}

@media(prefers-color-scheme:dark){:root[data-palette="graphite-coral"]:not([data-theme]){--bg:#25272E;--surface:#30323C;--text:#F7F8FC;--muted:#CACBD5;--line:#686B7C;--accent:#F2A098;--link:#AFB9FF;--code:#393C49;--coral:#EA877F;--peri:#7C8CFF;--wash:#393C49}:root[data-palette="paper-ink"]:not([data-theme]){--bg:#25231F;--surface:#312E28;--text:#F6EEDF;--muted:#CEC3B1;--line:#827869;--accent:#F3A18E;--link:#F0C4A5;--code:#3B362F;--coral:#EA877F;--peri:#C9AD95;--wash:#3B362F}:root[data-palette="midnight-periwinkle"]:not([data-theme]){--bg:#141B30;--surface:#202A43;--text:#F1F4FF;--muted:#C3CCE3;--line:#697695;--accent:#F0A59C;--link:#B8C1FF;--code:#2A3552;--coral:#EA877F;--peri:#7C8CFF;--wash:#2A3552}:root[data-palette="monochrome"]:not([data-theme]){--bg:#111111;--surface:#1C1C1C;--text:#FFFFFF;--muted:#CCCCCC;--line:#888888;--accent:#FFFFFF;--link:#FFFFFF;--code:#303030;--coral:#AAAAAA;--peri:#DDDDDD;--wash:#303030}:root[data-palette="teal-copper"]:not([data-theme]){--bg:#132A28;--surface:#1D3935;--text:#EDF9F3;--muted:#C1D7CE;--line:#648D80;--accent:#F2B087;--link:#83DFCC;--code:#29473F;--coral:#D58D5B;--peri:#63CAB1;--wash:#29473F}:root[data-palette="dracula"]:not([data-theme]){--bg:#282A36;--surface:#303341;--text:#F8F8F2;--muted:#CDD0E2;--line:#7E89B4;--accent:#FF79C6;--link:#BD93F9;--code:#343746;--coral:#FFB86C;--peri:#BD93F9;--wash:#343746}}
/* Authored tag labels can be long, unbroken text in every layout. */
.page-heading,.sheet-head h1,.tag-results,.sheet-tags{min-width:0;overflow-wrap:anywhere}
.sheet-tags li{min-width:0;max-width:100%}
/* Optional header links (--header-link): text links, underlined so colour is not the only cue. */
.header-links{display:flex;flex-wrap:wrap;gap:6px 18px;font-size:13px}.hero-links{display:flex;flex-wrap:wrap;gap:6px 20px;margin:18px 0 0;font-size:15px}.header-links a,.hero-links a{font-weight:600}
@media print{.header-links,.hero-links{display:none}}
