:root{font-family:Inter,Avenir,Segoe UI,system-ui,sans-serif;color:#202238;background:#f5f2ec;font-synthesis:none;--ink: #202238;--navy: #171b33;--plum: #613d59;--coral: #d96b57;--gold: #c4953f;--paper: #f5f2ec;--cream: #ebe5da;--line: #ded8ce;--muted: #737382;--white: #fffdf9;--green: #377d65;--red: #a84e4e;--safe-top: env(safe-area-inset-top, 0px);--safe-right: env(safe-area-inset-right, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px);--safe-left: env(safe-area-inset-left, 0px)}*{box-sizing:border-box}html{min-width:320px;background:var(--paper)}body{margin:0;min-width:320px;min-height:100vh;min-height:100dvh}button,input,select,textarea{font:inherit}button,a{-webkit-tap-highlight-color:transparent}a{color:inherit}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid rgba(217,107,87,.4);outline-offset:2px}h1,h2,h3,p{margin-top:0}h1,h2{font-family:Iowan Old Style,Baskerville,Times New Roman,serif;letter-spacing:-.025em}h1{font-size:clamp(2rem,4vw,3.5rem);line-height:1;margin-bottom:.5rem}h2{font-size:clamp(1.35rem,2vw,2rem)}input,select,textarea{width:100%;border:1px solid #cbc5bb;border-radius:3px;background:#fff;color:var(--ink);padding:.78rem .85rem;transition:border .15s,box-shadow .15s}input:focus,select:focus,textarea:focus{border-color:var(--plum);box-shadow:0 0 0 3px #613d591a;outline:none}textarea{resize:vertical}label{display:grid;gap:.45rem;font-size:.78rem;font-weight:700;letter-spacing:.025em;color:#4a4b5d}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.muted{color:var(--muted)}.eyebrow{margin:0 0 .45rem;color:var(--coral);text-transform:uppercase;letter-spacing:.18em;font:700 .68rem Inter,Avenir,Segoe UI,system-ui,sans-serif}.eyebrow.light{color:#e6b9a7}.button{border:1px solid #c9c3ba;background:var(--white);color:var(--ink);min-height:42px;padding:.65rem 1rem;border-radius:3px;font-weight:700;font-size:.82rem;text-decoration:none;cursor:pointer;display:inline-flex;gap:.7rem;align-items:center;justify-content:center;transition:transform .15s,background .15s,border .15s}.button:hover:not(:disabled){transform:translateY(-1px);border-color:#999185}.button:disabled{opacity:.45;cursor:not-allowed}.button.primary{color:#fff;background:var(--coral);border-color:var(--coral)}.button.primary:hover:not(:disabled){background:#c65d4a;border-color:#c65d4a}.button.light{color:var(--navy);background:#fff;border-color:#fff}.button.ghost{background:transparent}.button.wide{width:100%}.text-button,.back-link,.text-link{border:0;background:none;padding:.3rem 0;font-weight:700;font-size:.78rem;color:var(--plum);text-decoration:none;cursor:pointer}.light-link{color:#fff}.button-reset{appearance:none}.icon-button{display:inline-grid;place-items:center;width:34px;height:34px;padding:0;border:1px solid var(--line);background:transparent;border-radius:50%;color:var(--ink);text-decoration:none;cursor:pointer;font-size:1.2rem}.icon-button.danger{color:var(--red)}.status-pill{display:inline-flex;align-items:center;padding:.32rem .55rem;border-radius:99px;background:#ece7df;color:#65626b;font-size:.68rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase}.status-pill.success{background:#e1eee7;color:var(--green)}.notice{padding:.8rem 1rem;margin:1rem 0;border-left:3px solid;font-size:.86rem}.notice.error{background:#f6e6e3;border-color:var(--red);color:#7d3434}.notice.success{background:#e4efe9;border-color:var(--green);color:#245946}.app-loading{min-height:100vh;display:grid;place-items:center}.loading{min-height:220px;display:flex;gap:.35rem;align-items:center;justify-content:center}.loading span:not(.sr-only){width:7px;height:7px;background:var(--coral);border-radius:50%;animation:pulse .9s infinite alternate}.loading span:nth-child(2){animation-delay:.2s}.loading span:nth-child(3){animation-delay:.4s}@keyframes pulse{to{opacity:.25;transform:translateY(-5px)}}.topbar{height:calc(76px + var(--safe-top));display:flex;align-items:center;gap:clamp(1rem,4vw,4rem);padding:var(--safe-top) max(clamp(1rem,4vw,4rem),var(--safe-right)) 0 max(clamp(1rem,4vw,4rem),var(--safe-left));color:#f8f4ed;background:var(--navy);border-bottom:1px solid rgba(255,255,255,.1);position:sticky;top:0;z-index:20}.brand{display:inline-flex;align-items:center;gap:.65rem;color:inherit;text-decoration:none;flex:none}.brand-mark{display:grid;place-items:center;width:34px;height:38px;background:var(--coral);color:#fff;font:700 1.45rem Iowan Old Style,Baskerville,Times New Roman,serif;clip-path:polygon(0 0,100% 0,100% 78%,50% 100%,0 78%)}.brand>span:last-child{display:grid;line-height:1}.brand strong{font:700 1.1rem Iowan Old Style,Baskerville,Times New Roman,serif;letter-spacing:.02em}.brand small{margin-top:.25rem;color:#a9aabb;font-size:.54rem;letter-spacing:.14em;text-transform:uppercase}.topbar nav{display:flex;gap:.25rem;height:100%;align-items:stretch;flex:1}.topbar nav a{display:flex;align-items:center;padding:0 .85rem;text-decoration:none;color:#bebfcc;font-size:.78rem;font-weight:600;border-bottom:2px solid transparent}.topbar nav a:hover,.topbar nav a.active{color:#fff;border-bottom-color:var(--coral)}.topbar nav .nav-icon-link{width:46px;justify-content:center;padding-inline:.65rem}.nav-icon-link svg{width:20px;height:20px}.topbar .logout{color:#d7d6de;border-color:#4a4d62}.topbar .session-icon-button{width:40px;height:40px;min-height:40px;padding:0}.session-icon-button svg{width:19px;height:19px}.page{max-width:1480px;min-height:calc(100vh - 76px);padding:clamp(2rem,5vw,4.8rem) max(clamp(1rem,5vw,5rem),var(--safe-right)) max(clamp(2rem,5vw,4.8rem),var(--safe-bottom)) max(clamp(1rem,5vw,5rem),var(--safe-left));margin:auto}.page-header{display:flex;align-items:flex-end;justify-content:space-between;gap:2rem;margin-bottom:2.6rem}.page-header h1{margin:0}.page-actions{display:flex;gap:.7rem}.hero-card{min-height:290px;display:flex;justify-content:space-between;overflow:hidden;color:#fff;background:var(--plum);padding:clamp(2rem,4vw,3.7rem);position:relative}.hero-card:before{content:"";position:absolute;inset:0;background:repeating-linear-gradient(135deg,transparent 0 52px,rgba(255,255,255,.025) 52px 53px)}.hero-card>div:first-child{max-width:650px;position:relative;z-index:1}.hero-card h2{margin:.3rem 0 1rem;font-size:clamp(2rem,3.5vw,3.4rem);line-height:1.05}.hero-card p:not(.eyebrow){max-width:560px;color:#ddd0da;line-height:1.6}.hero-actions{display:flex;gap:1.5rem;align-items:center;margin-top:2rem}.hero-knight{width:34%;display:grid;place-items:center;font-size:clamp(11rem,20vw,20rem);color:#ffffff1c;line-height:.8;transform:rotate(-8deg) translateY(25px)}.metrics-grid{display:grid;grid-template-columns:repeat(4,1fr);border:1px solid var(--line);border-top:0;background:var(--white)}.metrics-grid article{min-height:116px;display:flex;align-items:center;gap:1rem;padding:1.4rem;border-right:1px solid var(--line)}.metrics-grid article:last-child{border:0}.metric-icon{width:42px;height:42px;display:grid;place-items:center;color:#fff;font-size:1.3rem}.metric-icon.plum{background:var(--plum)}.metric-icon.coral{background:var(--coral)}.metric-icon.gold{background:var(--gold)}.metric-icon.blue{background:#486c83}.metrics-grid article div{display:grid}.metrics-grid strong{font:700 1.6rem Fraunces,serif}.metrics-grid article span:last-child{color:var(--muted);font-size:.72rem}.section-block{margin-top:4.5rem}.section-heading{display:flex;justify-content:space-between;align-items:end;margin-bottom:1.4rem}.section-heading h2{margin:0}.action-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);border:1px solid var(--line)}.action-grid>a{display:block;min-height:250px;padding:2rem;background:var(--white);text-decoration:none;transition:background .2s}.action-grid>a:hover{background:#fff}.action-grid .action-number{font:700 .68rem monospace;color:var(--coral)}.action-grid h3{margin:2.2rem 0 .7rem;font:700 1.25rem Fraunces,serif}.action-grid p{min-height:48px;color:var(--muted);font-size:.85rem;line-height:1.6}.action-grid b{font-size:.76rem;color:var(--plum)}.login-page{min-height:100vh;min-height:100dvh;padding:var(--safe-top) var(--safe-right) var(--safe-bottom) var(--safe-left);background:var(--navy);display:grid;grid-template-columns:minmax(0,1.2fr) minmax(420px,.8fr)}.login-story{padding:clamp(3rem,7vw,8rem);color:#fff;background:var(--navy);display:flex;align-items:center;position:relative;overflow:hidden}.login-story:after{content:"";position:absolute;width:70vw;height:70vw;border:1px solid rgba(255,255,255,.05);border-radius:50%;right:-35vw;bottom:-35vw;box-shadow:0 0 0 8vw #ffffff05,0 0 0 16vw #ffffff03}.story-copy{position:relative;z-index:2;max-width:650px}.story-index{color:#acadb9;text-transform:uppercase;font-size:.66rem;font-weight:700;letter-spacing:.22em}.story-copy h1{margin:2rem 0;font-size:clamp(3.2rem,6vw,6.5rem);line-height:.93}.story-copy p{max-width:520px;color:#b8b9c5;font-size:1rem;line-height:1.8}.decor-board{position:absolute;right:-4rem;bottom:2rem;z-index:1;display:grid;grid-template-columns:repeat(2,1fr);transform:rotate(-9deg);color:#ffffff0e;font-size:clamp(7rem,13vw,14rem);line-height:.75}.login-panel{display:grid;place-items:center;padding:2rem;background:var(--paper)}.login-card{width:min(100%,410px);display:grid;gap:1.7rem}.login-brand{color:var(--ink);margin-bottom:2rem}.login-card h2{font-size:2.7rem;margin-bottom:.7rem}.login-card .muted{line-height:1.6}.privacy-note{text-align:center;color:var(--muted);font-size:.7rem}.import-layout{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(280px,.65fr);border:1px solid var(--line);background:var(--white)}.drop-zone{min-height:390px;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:2rem;text-align:center;border:2px dashed transparent;transition:background .2s,border .2s}.drop-zone.dragging{background:#fbf2ef;border-color:var(--coral)}.drop-icon{width:66px;height:66px;display:grid;place-items:center;margin-bottom:1.4rem;color:var(--coral);background:#f6e5df;border-radius:50%;font-size:2rem}.drop-zone h2{margin-bottom:.5rem}.drop-zone p{color:var(--muted)}.drop-zone small{color:#96939a;margin-top:1rem}.file-button{position:relative;overflow:hidden}.file-button input{position:absolute;inset:0;opacity:0;cursor:pointer}.info-panel{padding:2.2rem;background:var(--navy);color:#fff}.info-panel ul{list-style:none;padding:0;margin:2rem 0 0}.info-panel li{display:flex;gap:1rem;padding:1.3rem 0;border-top:1px solid #35394e}.info-panel li>span{color:var(--coral);font:700 .65rem monospace}.info-panel li div{display:grid;gap:.4rem}.info-panel b{font-size:.83rem}.info-panel small{color:#aeb0bc;font-weight:400;line-height:1.5}.import-results{margin-top:3.5rem}.file-result{display:flex;align-items:center;gap:1.2rem;padding:1.2rem;border-top:1px solid var(--line);background:var(--white)}.file-result:last-child{border-bottom:1px solid var(--line)}.file-badge{width:48px;height:58px;display:grid;place-items:center;background:#e8e2d9;color:var(--plum);font-size:.64rem;font-weight:800;clip-path:polygon(0 0,72% 0,100% 23%,100% 100%,0 100%)}.file-main{flex:1}.file-main h3{margin:0 0 .2rem;font-size:.9rem}.file-main p{margin:.15rem 0;color:var(--muted);font-size:.74rem}.file-main .file-warning{color:var(--red)}.file-main .file-success{color:var(--green)}.filters{display:grid;grid-template-columns:minmax(200px,2fr) repeat(4,minmax(100px,1fr)) auto;align-items:end;gap:.75rem;padding:1rem;margin-bottom:1.5rem;border:1px solid var(--line);background:var(--white)}.filters label{font-size:.65rem}.filters input,.filters select{padding:.62rem}.table-card{border:1px solid var(--line);background:var(--white)}.table-meta{display:flex;justify-content:space-between;padding:.9rem 1.1rem;border-bottom:1px solid var(--line);color:var(--muted);font-size:.72rem}.table-row{display:grid;grid-template-columns:minmax(220px,1.5fr) minmax(160px,1.2fr) 110px 80px 80px;align-items:center;gap:1rem;min-height:76px;padding:.8rem 1.1rem;border-bottom:1px solid #ece7df;font-size:.8rem}.table-row>div{min-width:0;display:grid;gap:.18rem}.table-row a{text-decoration:none}.table-row a span{color:var(--muted);margin-left:.35rem}.table-row small{color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.table-head{min-height:42px;color:#85828a;background:#f8f5f0;text-transform:uppercase;font-size:.61rem;font-weight:700;letter-spacing:.11em}.result{font-family:Fraunces,serif}.row-actions{display:flex!important;grid-auto-flow:column;justify-content:end}.pagination{display:flex;justify-content:space-between;padding:1rem}.empty-state{min-height:380px;padding:3rem;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;border:1px solid var(--line);background:var(--white)}.empty-icon{color:#d4cec4;font-size:5rem}.empty-state h2{margin:.7rem 0}.empty-state p{max-width:500px;color:var(--muted);line-height:1.6}.empty-state .button{margin-top:1rem}.reader-page,.training-page{margin-top:-1rem}.reader-header,.training-header{display:flex;align-items:end;justify-content:space-between;gap:1rem;margin-bottom:1.5rem}.reader-header h1,.training-header h1{margin:.5rem 0;font-size:clamp(1.7rem,3vw,2.7rem)}.reader-header h1 span{color:#aaa6a0}.reader-header p{margin:0;color:var(--muted);font-size:.8rem}.reader-actions{display:flex;gap:.5rem;flex-wrap:wrap;justify-content:end}.reader-layout,.training-layout{display:grid;grid-template-columns:minmax(400px,720px) minmax(300px,420px);gap:clamp(1.5rem,4vw,4rem);align-items:start;justify-content:center}.board-column{min-width:0}.board-wrap{position:relative;width:100%}.board-coordinate-layout{display:grid;grid-template-columns:20px minmax(0,1fr);grid-template-rows:minmax(0,1fr) 20px;width:100%}.chessboard{grid-column:2;grid-row:1;width:100%;aspect-ratio:1;display:grid;grid-template-columns:repeat(8,1fr);overflow:hidden;box-shadow:0 18px 45px #1e1e2c24}.rank-coordinates{grid-column:1;grid-row:1;display:grid;grid-template-rows:repeat(8,1fr)}.file-coordinates{grid-column:2;grid-row:2;display:grid;grid-template-columns:repeat(8,1fr)}.rank-coordinates span,.file-coordinates span{display:grid;place-items:center;color:#65645e;font:700 .66rem ui-monospace,SFMono-Regular,Consolas,monospace;text-transform:lowercase}.square{position:relative;aspect-ratio:1;display:grid;place-items:center;border:0;padding:0;cursor:default}.square.light{--square-color: #eeeed2;background:#eeeed2}.square.dark{--square-color: #769656;background:#769656}.square.last:after{content:"";position:absolute;inset:0;background:#f6f66985}.square.selected:after{content:"";position:absolute;inset:4px;border:4px solid rgba(255,255,80,.82)}.piece{position:relative;z-index:2;display:inline-grid;place-items:center;width:88%;height:88%;cursor:grab;-webkit-user-select:none;user-select:none;filter:drop-shadow(0 2px 1px rgba(0,0,0,.2))}.piece:active{cursor:grabbing}.piece-svg{display:block;width:100%;height:100%;overflow:visible}.piece-svg g{fill:currentColor;stroke:var(--piece-stroke);stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}.piece-svg .piece-cut{fill:none;stroke:var(--piece-cut);stroke-width:2.4}.piece-svg .piece-detail{fill:var(--piece-cut);stroke:none}.piece-svg .piece-hole{fill:var(--square-color, #eeeed2);stroke:var(--piece-stroke);stroke-width:1.7}.piece-svg .piece-shade{fill:var(--piece-shade);stroke:none;opacity:.58}.white-piece{color:#f5f5f5;--piece-stroke: #4a484b;--piece-cut: #4a484b;--piece-shade: #c9c9c9;--square-color: #eeeed2}.black-piece{color:#575455;--piece-stroke: #302e31;--piece-cut: #302e31;--piece-shade: #787475;--square-color: #eeeed2}.promotion-picker{position:absolute;left:50%;top:50%;z-index:10;transform:translate(-50%,-50%);min-width:270px;display:flex;align-items:center;gap:.3rem;flex-wrap:wrap;padding:.8rem;background:#fff;box-shadow:0 10px 40px #1d1c2b66}.promotion-picker>span:first-child{width:100%;font-size:.68rem;font-weight:700;text-transform:uppercase}.promotion-picker button:not(.text-button){border:1px solid var(--line);background:#eeeed2;width:54px;height:54px;padding:3px;cursor:pointer}.promotion-picker .promotion-piece{width:100%;height:100%}.board-controls{min-height:55px;display:flex;align-items:center;justify-content:center;gap:.5rem;padding:.6rem;background:var(--white);border:1px solid var(--line);border-top:0}.board-controls button{width:40px;height:34px;border:0;background:#eee9e1;cursor:pointer}.board-controls button:disabled{opacity:.35}.board-controls span{min-width:150px;color:var(--muted);text-align:center;font-size:.73rem}.moves-panel,.training-panel{min-height:540px;display:flex;flex-direction:column;border:1px solid var(--line);background:var(--white)}.panel-heading{display:flex;justify-content:space-between;align-items:start;padding:1.3rem 1.4rem;border-bottom:1px solid var(--line)}.panel-heading h2{margin:0}.moves-list{max-height:390px;padding:.7rem;overflow:auto;flex:1}.move-row{display:grid;grid-template-columns:35px 1fr 1fr;gap:.25rem;min-height:36px;align-items:center}.move-row>span{color:#99949a;text-align:right;font:.68rem monospace;padding-right:.35rem}.move-row button{min-height:30px;text-align:left;border:0;border-radius:2px;background:transparent;font-weight:600;cursor:pointer}.move-row button:hover{background:#eee9e1}.move-row button.active{color:#fff;background:var(--coral)}.game-result{padding:.8rem;text-align:center;color:var(--muted);font:700 1.1rem Fraunces,serif}.exercise-cta{padding:1.2rem;margin-top:auto;border-top:1px solid var(--line);background:#f7f3ed}.exercise-cta p{margin:0 0 .7rem;color:var(--muted);font-size:.7rem}.exercise-cta small{display:block;margin-top:.5rem;color:var(--muted);text-align:center}.modal-backdrop{position:fixed;inset:0;z-index:100;display:grid;place-items:center;padding:1rem;background:#171b33b8}.modal{width:min(100%,520px);max-height:90vh;overflow:auto;display:grid;gap:1rem;padding:1.5rem;background:var(--white);box-shadow:0 24px 70px #11142699}.modal .panel-heading{padding:0 0 1rem}.modal-actions{display:flex;justify-content:end;gap:.5rem;padding-top:.5rem}.solution-preview{display:grid;grid-template-columns:1fr auto;gap:.3rem;padding:1rem;color:#fff;background:var(--plum)}.solution-preview span{font-size:.68rem;text-transform:uppercase;letter-spacing:.1em}.solution-preview strong{grid-row:span 2;font:700 1.7rem Fraunces,serif}.solution-preview small{color:#d8cbd5}.exercise-filters{width:min(100%,520px);display:grid;grid-template-columns:1fr 1fr;gap:.7rem;margin-bottom:1.5rem}.exercise-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem}.exercise-card{display:flex;flex-direction:column;padding:1.5rem;border:1px solid var(--line);background:var(--white)}.card-top{display:flex;justify-content:space-between;align-items:center;color:var(--muted);font-size:.68rem}.mastery{padding:.28rem .5rem;color:#896328;background:#f2e8d4;border-radius:99px;font-weight:700}.mastery.mastered{color:var(--green);background:#dfede5}.exercise-card h2{margin:1.4rem 0 .8rem;font-size:1.35rem}.tags{display:flex;gap:.35rem;flex-wrap:wrap}.tags span{padding:.27rem .5rem;color:var(--plum);background:#eee7ec;border-radius:2px;font-size:.65rem;font-weight:700}.exercise-card>p{flex:1;margin-top:1rem;color:var(--muted);font-size:.8rem;line-height:1.5}.exercise-stats{display:flex;gap:1rem;padding:.8rem 0;border-top:1px solid var(--line);color:var(--muted);font-size:.7rem}.exercise-stats strong{color:var(--ink)}.card-actions{display:flex;gap:.4rem;align-items:center}.card-actions .icon-button{margin-left:auto}.training-header .eyebrow{margin-top:.8rem}.session-counter{padding:.45rem .8rem;border:1px solid var(--line);color:var(--muted);background:var(--white);font-size:.7rem}.training-panel{min-height:auto;padding:1.5rem;gap:1.2rem}.turn-indicator{display:flex;align-items:center;gap:.8rem;padding-bottom:1.2rem;border-bottom:1px solid var(--line)}.turn-indicator>span{width:34px;height:34px;border-radius:50%;box-shadow:inset 0 0 0 1px #aaa}.turn-indicator .white-turn{background:#fff}.turn-indicator .black-turn{background:var(--navy)}.turn-indicator div{display:grid}.turn-indicator small{color:var(--muted);font-size:.66rem}.turn-indicator strong{font:700 1.1rem Fraunces,serif}.feedback-card{padding:1.3rem;background:#f1ede6;border-left:3px solid var(--plum)}.feedback-card .feedback-symbol{float:right;display:grid;place-items:center;width:34px;height:34px;border-radius:50%;color:#fff;background:var(--plum);font-weight:700}.feedback-card h2{margin:0 0 .5rem;font-size:1.2rem}.feedback-card p{margin:0;color:var(--muted);font-size:.78rem;line-height:1.55}.feedback-card.correct{background:#e4efe9;border-color:var(--green)}.feedback-card.correct .feedback-symbol{background:var(--green)}.feedback-card.different{background:#f4eadc;border-color:var(--gold)}.feedback-card.different .feedback-symbol{background:var(--gold)}.feedback-card.revealed{background:#e7e6ee}.illegal-feedback{margin-top:.7rem!important;color:var(--red)!important;font-weight:700}.training-panel blockquote{margin:0;padding:.9rem 1rem;border-left:2px solid var(--coral);color:#5e5d68;background:#faf7f2;font:italic .8rem/1.6 Georgia,serif}.training-actions{display:grid;gap:.55rem}.reference-line{border-top:1px solid var(--line);padding-top:1rem}.reference-line>span,.expected-moves>span{display:block;margin-bottom:.7rem;color:var(--muted);font-size:.65rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em}.reference-line>div,.expected-moves>div{display:flex;flex-wrap:wrap;gap:.3rem}.reference-line button,.expected-moves b{border:0;padding:.35rem .5rem;color:var(--ink);background:#eee9e1;font:600 .75rem DM Sans,sans-serif}.reference-line button.active{color:#fff;background:var(--plum)}.reference-line button.variation{color:#984936;background:#f5dfd9}.expected-moves{display:grid;gap:.7rem}.session-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:.5rem}.session-summary>div{display:grid;padding:.7rem;background:#f1ede6}.session-summary span{color:var(--muted);font-size:.6rem}.session-summary strong{font:700 1.3rem Fraunces,serif}.session-summary .button{grid-column:1 / -1}.repertoire-setup{display:grid;grid-template-columns:1.2fr .8fr;gap:1px;border:1px solid var(--line);background:var(--line)}.repertoire-setup>section{padding:clamp(1.5rem,4vw,3rem);background:var(--white)}.repertoire-list{display:grid;gap:.5rem;margin-top:1.5rem}.repertoire-list label{min-height:76px;display:flex;align-items:center;gap:1rem;padding:.8rem;border:1px solid var(--line);cursor:pointer}.repertoire-list label.selected{border-color:#315846;box-shadow:inset 3px 0 #315846}.repertoire-list input{width:auto}.repertoire-list label>span:nth-of-type(2){min-width:0;display:grid;flex:1}.repertoire-list small{color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.rep-icon{width:42px;height:42px;flex:0 0 42px;padding:5px;color:#fff8e8;background:#315846}.color-choice{display:grid;grid-template-columns:1fr 1fr;gap:.7rem;margin-top:1.5rem}.color-choice button{min-height:180px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.4rem;border:1px solid var(--line);background:#f8f5f0;cursor:pointer}.color-choice button.selected{border:2px solid #315846;background:#fff}.color-piece{width:70px;height:70px}.color-choice small{color:var(--muted)}.start-repertoire{margin-top:1rem}@media(max-width:1100px){.topbar{gap:1.5rem}.topbar nav a{padding:0 .45rem;font-size:.7rem}.metrics-grid{grid-template-columns:1fr 1fr}.metrics-grid article:nth-child(2){border-right:0}.metrics-grid article:nth-child(-n+2){border-bottom:1px solid var(--line)}.filters{grid-template-columns:repeat(3,1fr)}.filters .search-field{grid-column:span 2}.exercise-grid{grid-template-columns:1fr 1fr}}@media(max-width:850px){.topbar{height:auto;min-height:calc(68px + var(--safe-top));padding:calc(.7rem + var(--safe-top)) max(1rem,var(--safe-right)) .7rem max(1rem,var(--safe-left));flex-wrap:wrap}.topbar nav{order:3;width:100%;height:42px;overflow-x:auto}.topbar nav a{flex:none}.topbar .logout{margin-left:auto}.page{min-height:calc(100vh - 120px)}.login-page{grid-template-columns:1fr}.login-story{min-height:35vh;padding:3rem 2rem}.story-copy h1{font-size:3.5rem}.story-copy p{display:none}.login-panel{min-height:65vh}.hero-knight{display:none}.metrics-grid{grid-template-columns:1fr 1fr}.action-grid{grid-template-columns:1fr}.action-grid>a{min-height:210px}.import-layout,.repertoire-setup{grid-template-columns:1fr}.reader-layout,.training-layout{grid-template-columns:minmax(0,650px)}.moves-panel,.training-panel{min-height:auto}.reader-header,.training-header{align-items:start;flex-direction:column}.reader-actions{justify-content:start}.table-row{grid-template-columns:minmax(180px,1.5fr) minmax(140px,1fr) 70px 60px}.table-row>:nth-child(3){display:none}.table-head>:nth-child(3){display:none}}@media(max-width:600px){.page{padding:2rem max(.75rem,var(--safe-right)) max(2rem,var(--safe-bottom)) max(.75rem,var(--safe-left))}.page-header{align-items:start;flex-direction:column;margin-bottom:1.7rem}.page-header h1{font-size:2.3rem}.brand small{display:none}.topbar .session-icon-button{width:34px;height:34px;min-height:34px;padding:0}.hero-card{min-height:360px;padding:2rem 1.4rem}.hero-actions{align-items:stretch;flex-direction:column}.metrics-grid{grid-template-columns:1fr}.metrics-grid article{border-right:0;border-bottom:1px solid var(--line)}.metrics-grid article:last-child{border-bottom:0}.filters{grid-template-columns:1fr 1fr}.filters .search-field,.filters button{grid-column:1 / -1}.game-table{overflow-x:auto}.table-row{min-width:680px}.exercise-grid,.exercise-filters{grid-template-columns:1fr}.chessboard{border-width:3px}.reader-actions .button{font-size:.7rem;padding:.5rem}.board-controls span{min-width:110px}.file-result{align-items:flex-start;flex-wrap:wrap}.file-main{min-width:calc(100% - 75px)}.color-choice{grid-template-columns:1fr}.color-choice button{min-height:140px}}.piece-sprite{display:block;width:100%;height:100%;background-repeat:no-repeat;background-size:600% 200%}.piece-sprite-k{background-position-x:0%}.piece-sprite-q{background-position-x:20%}.piece-sprite-b{background-position-x:40%}.piece-sprite-n{background-position-x:60%}.piece-sprite-r{background-position-x:80%}.piece-sprite-p{background-position-x:100%}.piece-sprite-white{background-position-y:0%}.piece-sprite-black{background-position-y:100%}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;transition-duration:.01ms!important}}.paste-pgn-card{display:grid;grid-template-columns:minmax(220px,.6fr) minmax(220px,.4fr);gap:1rem 1.5rem;align-items:end;margin-top:1.5rem;padding:clamp(1.25rem,3vw,2rem);border:1px solid var(--line);background:var(--white)}.paste-pgn-card h2,.paste-pgn-card p{margin-top:0}.paste-pgn-card>div p:last-child{color:var(--muted);font-size:.8rem}.paste-pgn-card label{display:grid;gap:.45rem;color:var(--muted);font-size:.68rem;font-weight:700}.paste-pgn-card .paste-pgn-content{grid-column:1 / -1}.paste-pgn-card textarea{min-height:180px;resize:vertical;font:.78rem/1.55 ui-monospace,SFMono-Regular,Consolas,monospace}.paste-pgn-card>.button{justify-self:end}.import-destination{display:grid;gap:.7rem;margin:.8rem 0 0;padding:.8rem;border:1px solid var(--line);background:#faf8f4}.import-destination legend{padding-inline:.35rem;color:var(--plum);font-size:.65rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em}.destination-options{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.45rem}.destination-options>label{min-height:70px;display:flex;align-items:flex-start;gap:.5rem;padding:.6rem;border:1px solid var(--line);color:var(--ink);background:#fff;cursor:pointer}.destination-options>label:has(input:checked){border-color:#315846;box-shadow:inset 3px 0 #315846}.destination-options>label.disabled{opacity:.5;cursor:not-allowed}.destination-options input{width:auto;margin-top:.15rem;accent-color:#315846}.destination-options span{display:grid;gap:.2rem}.destination-options small{color:var(--muted);font-weight:400;line-height:1.35}.import-destination>label{display:grid;gap:.35rem;color:var(--muted);font-size:.68rem;font-weight:700}.import-destination>label input,.import-destination>label select{padding:.55rem .65rem}.library-toolbar{display:grid;grid-template-columns:1fr auto auto auto;align-items:center;gap:1rem;padding:.9rem 1.1rem;border-bottom:1px solid var(--line);background:#f8f5f0}.library-toolbar label{display:flex;align-items:center;gap:.55rem;font-size:.75rem;font-weight:700}.library-toolbar input,.import-group-header input,.library-row>input{width:17px;height:17px;accent-color:#315846}.library-toolbar>span{color:var(--muted);font-size:.7rem}.danger-button{color:#9a3e36;border-color:#d9aaa4}.danger-button:not(:disabled):hover{color:#fff;background:#9a3e36}.import-group+.import-group{border-top:8px solid #f1ede6}.import-group-header{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:1rem 1.1rem;border-bottom:1px solid var(--line);list-style:none;background:#fff;cursor:pointer}.import-group-header::-webkit-details-marker{display:none}.import-group-header:before{content:"›";flex:none;color:var(--coral);font-size:1.4rem;font-weight:900;transition:transform .15s}.import-group[open]>.import-group-header:before{transform:rotate(90deg)}.import-group-title{min-width:0;display:flex;align-items:center;gap:.7rem;flex:1}.import-group-title>span{min-width:0;display:grid}.import-group-header strong{font:700 1.05rem Fraunces,serif}.import-group-header small{color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.import-group-actions{display:flex;align-items:center;gap:.45rem}.file-orientation-button{width:30px;height:30px;border:0;border-radius:2px}.file-orientation-king{display:block;width:25px;height:25px}.button.compact{min-height:32px;padding:.4rem .7rem;font-size:.67rem}.library-row{grid-template-columns:28px minmax(220px,1.5fr) minmax(160px,1.2fr) 110px 80px 120px}.library-row>input{justify-self:center}.library-game-title{grid-template-columns:28px minmax(0,1fr);align-items:center}.library-game-title>.icon-button{width:26px;height:26px;border:0;font-size:.9rem}.library-game-title>div{min-width:0;display:grid;gap:.18rem}.library-game-meta{min-width:0;display:flex;align-items:center;gap:.28rem}.library-game-meta>span:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.library-computed-icon{width:13px;height:13px;display:inline-grid;place-items:center;flex:none;cursor:help}.library-computed-icon svg{width:100%;height:100%}.library-open-game{min-width:76px;white-space:nowrap}.library-row .row-actions{gap:.65rem}.library-row .row-actions .icon-button.danger{border:0}.variation-tree{max-height:430px;padding:.65rem 0;overflow:auto;flex:1}.variation-entry{position:relative;display:grid;grid-template-columns:minmax(90px,max-content) 1fr;align-items:center;gap:.45rem;min-height:34px;padding-right:.6rem}.variation-entry.branch:before{content:"";position:absolute;left:.35rem;top:0;bottom:0;border-left:2px solid #dec8b7}.variation-entry button{min-height:28px;padding:.3rem .5rem;text-align:left;border:0;border-radius:2px;background:transparent;font-weight:700;cursor:pointer}.variation-entry button:hover{background:#eee9e1}.variation-entry button.active{color:#fff;background:var(--coral)}.variation-entry small{color:var(--muted);font-size:.68rem;line-height:1.35}.training-header-actions{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:.55rem}.solution-reveal{display:grid}.repertoire-start-actions{display:grid;gap:.55rem;margin-top:1rem}.repertoire-start-actions .start-repertoire{margin-top:0}.repertoire-row-actions{display:flex;gap:.3rem;flex:none}.repertoire-games-modal{width:min(100%,720px)}.repertoire-game-list{display:grid;max-height:55vh;overflow:auto;border:1px solid var(--line)}.repertoire-game-list article{min-height:66px;display:flex;align-items:center;gap:1rem;padding:.7rem .8rem;border-bottom:1px solid var(--line)}.repertoire-game-list article:last-child{border-bottom:0}.repertoire-game-list article>span{min-width:0;display:grid;flex:1;gap:.2rem}.repertoire-game-list small{color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.repertoire-keep-note{margin:0;font-size:.72rem;line-height:1.5}.repertoire-browser{width:min(1120px,calc(100vw - 2rem));max-height:calc(100vh - 2rem);overflow:auto;border:1px solid var(--line);background:var(--white);box-shadow:0 24px 80px #171b3347}.repertoire-browser-layout{display:grid;grid-template-columns:minmax(420px,680px) minmax(300px,1fr);gap:1.25rem;padding:1.25rem}.repertoire-browser-panel{display:flex;flex-direction:column;gap:1.2rem;min-width:0}.browser-breadcrumbs{display:flex;flex-wrap:wrap;gap:.3rem;max-height:110px;overflow:auto}.browser-breadcrumbs button{border:0;padding:.35rem .5rem;background:#eee9e1;font-weight:700;cursor:pointer}.browser-breadcrumbs button.active{color:#fff;background:var(--plum)}.browser-breadcrumbs button.variation{color:#984936;background:#f5dfd9}.browser-next-moves{display:grid;gap:.45rem;max-height:310px;overflow:auto}.browser-next-moves>button{display:grid;grid-template-columns:60px 1fr 20px;align-items:center;gap:.5rem;padding:.65rem .75rem;text-align:left;border:1px solid var(--line);background:#faf8f4;cursor:pointer}.browser-next-moves>button:hover,.browser-next-moves>button.mainline-browser-move{border-color:#769656}.browser-next-moves small{color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.repertoire-browser-panel blockquote{margin:0;padding:.8rem;border-left:2px solid var(--coral);background:#faf7f2;color:var(--muted);font:italic .8rem/1.5 Georgia,serif}.repertoire-position-actions{display:grid;grid-template-columns:1fr 1fr;gap:.55rem}.repertoire-browser-header-actions{display:flex;align-items:center;gap:.6rem}.repertoire-browser-page{margin-top:-1rem}.repertoire-browser-page>.page-header{margin-bottom:1.5rem}.repertoire-browser-full-layout{padding:0}.repertoire-browser-full-layout .repertoire-browser-panel{max-height:none;padding:1.2rem;overflow:visible;border:1px solid var(--line);background:var(--white)}.repertoire-browser-full-layout .browser-next-moves{max-height:none;overflow:visible}.repertoire-browser-full-layout .browser-next-moves>button{align-items:start}.repertoire-browser-full-layout .browser-next-moves small{overflow:visible;line-height:1.45;text-overflow:clip;white-space:normal}@media(max-width:900px){.paste-pgn-card,.repertoire-browser-layout,.destination-options{grid-template-columns:1fr}.library-toolbar{grid-template-columns:1fr;align-items:start}.library-toolbar .button{justify-self:start}.library-row{min-width:760px}.training-header-actions{justify-content:flex-start}.repertoire-browser{width:min(760px,calc(100vw - 1rem));max-height:calc(100vh - 1rem)}}.session-actions{display:flex;gap:.4rem;flex:none}.session-actions .button{color:#d7d6de;border-color:#4a4d62;padding-inline:.65rem}.title-with-action{display:flex;align-items:baseline;gap:.8rem}.title-with-action h1{margin-bottom:0}.action-row{display:flex;flex-wrap:wrap;align-items:center;gap:.8rem}.difficulty{display:inline-flex;align-items:center;width:fit-content;padding:.28rem .55rem;border-radius:99px;font-size:.65rem;font-weight:800;text-transform:capitalize}.difficulty.facile{color:#286048;background:#deede5}.difficulty.intermediaire{color:#815c20;background:#f3e8ce}.difficulty.difficile{color:#8d3933;background:#f4dedb}.pool-membership{min-height:auto!important;flex:none!important;margin-block:.8rem!important}.pool-grid .exercise-card{min-height:240px}.pool-score{display:inline-flex;align-items:center;padding:.2rem .48rem;border:1px solid transparent;border-radius:99px;font-weight:900;line-height:1.2}.pool-score.perfect{color:#286048;background:#deede5;border-color:#b8d5c5}.pool-score.warning{color:#a45c0a;background:#f5e6c8;border-color:#e3c78d}.pool-score.danger{color:var(--red);background:#f4dedb;border-color:#ddb3ad}.pool-summary{display:flex;align-items:center;gap:1rem;margin:-1.3rem 0 1.5rem;color:var(--muted)}.pool-row{grid-template-columns:1fr 150px 150px}.padded{padding:1rem 1.4rem}.move-line{min-width:0}.move-row-wrap{border-bottom:1px solid #f1ede7}.move-row{padding:.18rem .7rem}.move-number{color:#99949a;text-align:right;font:.68rem monospace;padding-right:.35rem}.move-cell{min-width:0;display:grid;text-align:left!important;padding:0!important}.move-cell small{padding:.15rem .4rem .35rem;color:var(--muted);font-size:.63rem;line-height:1.3}.move-button{min-height:30px;padding:.3rem .5rem;text-align:left;border:0;border-radius:2px;background:transparent;font-weight:700;cursor:pointer}.move-button:hover{background:#eee9e1}.move-button.active{color:#fff;background:var(--coral)}.move-cell .engine-evaluation-comment{width:max-content;display:inline-flex;align-items:center;gap:.22rem;margin:0 .4rem .35rem;padding:.18rem .42rem;border-radius:99px;font-weight:400}.engine-evaluation-comment.score-green{color:#286048;background:#deede5}.engine-evaluation-comment.score-orange{color:#a45c0a;background:#f5e6c8}.engine-evaluation-comment.score-red{color:var(--red);background:#f4dedb}.engine-evaluation-king{display:inline-grid;place-items:center;width:17px;height:17px;cursor:help}.reader-side-column{min-width:0;display:grid;gap:.65rem}.game-compute-actions{display:grid;gap:.55rem}.game-compute-actions .button{width:100%}.reader-rename-game{width:24px;height:24px;flex:none;border:0;border-radius:2px}.reader-rename-game svg{width:15px;height:15px}.variation-branch{margin:.15rem .65rem .45rem 2.25rem;padding-left:.65rem;border-left:2px solid #c9aa8f}.variation-branch summary{padding:.3rem 0;color:#78594d;font-size:.67rem;font-weight:700;cursor:pointer}.variation-branch .move-row{padding-inline:.15rem}.variation-branch .variation-branch{margin-left:1rem;border-left-color:#d9cbbd}.solution-panel{display:grid;border-top:1px solid var(--line)}.solution-toggle{display:flex;justify-content:space-between;padding:.75rem 0;border:0;background:transparent;color:var(--ink);font-weight:800;cursor:pointer}.solution-panel .reference-line{border:0;padding-top:.3rem}.training-panel>.panel-heading{margin:-1.5rem -1.5rem 0}.training-actions .action-row{justify-content:space-between}.analysis-layout{display:grid;grid-template-columns:minmax(400px,720px) minmax(320px,440px);gap:clamp(1.5rem,4vw,4rem);align-items:start;justify-content:center}.analysis-side-column{min-width:0;display:grid;gap:1rem}.analysis-panel{display:grid;gap:1.1rem;padding:1.4rem;border:1px solid var(--line);background:var(--white)}.analysis-panel form{display:grid;gap:.6rem}.analysis-panel textarea{font:.7rem/1.4 ui-monospace,SFMono-Regular,Consolas,monospace}.analysis-position-actions{display:grid;grid-template-columns:1fr 1fr;gap:.55rem}.analysis-history-panel{display:flex;min-height:220px;flex-direction:column;border:1px solid var(--line);background:var(--white)}.analysis-history-panel .panel-heading{padding:1rem 1.1rem}.analysis-history-panel .panel-heading h2{font-size:1.25rem}.analysis-history-list{max-height:260px;padding:.55rem 0;overflow:auto}.analysis-history-empty{flex:1;margin:0;padding:1.1rem;color:var(--muted);font-size:.72rem}.analysis-history-actions{padding:.8rem 1rem 1rem;margin-top:auto;border-top:1px solid var(--line)}.engine-state{min-height:42px;display:inline-flex;align-items:center;padding:.4rem .65rem;color:#805d23;background:#f2e7d1;border-radius:99px;font-size:.7rem;font-weight:800;white-space:nowrap}.engine-state.ready{color:#286048;background:#deede5}.engine-settings{display:grid;grid-template-columns:1fr 1fr;gap:.7rem}.engine-settings label{position:relative}.engine-settings label small{position:absolute;right:.65rem;bottom:.8rem;color:var(--muted)}.evaluation-card{min-height:220px;padding:1rem;color:#fff;background:var(--navy)}.evaluation-card>header{display:flex;justify-content:space-between;gap:.7rem;padding-bottom:.7rem;border-bottom:1px solid #383c52}.evaluation-card span{color:#b9bbc8;font-size:.64rem;text-transform:uppercase;letter-spacing:.08em}.evaluation-lines{display:grid}.evaluation-line{display:grid;grid-template-columns:22px 52px minmax(0,1fr) 24px auto;align-items:center;gap:.4rem;min-height:58px;border-bottom:1px solid #303449}.evaluation-line:last-child{border-bottom:0}.evaluation-line .variation-rank{width:20px;height:20px;display:grid;place-items:center;color:var(--navy);background:#b9bbc8;border-radius:50%;font-weight:900}.evaluation-line strong{font:700 1.2rem Iowan Old Style,Baskerville,serif}.evaluation-line p{margin:0;color:#e1e1e7;font:.72rem/1.45 ui-monospace,SFMono-Regular,Consolas,monospace}.evaluation-line small{color:#818597;font:.58rem ui-monospace,monospace}.evaluation-play{min-width:58px;min-height:30px;padding:.3rem .45rem;border:1px solid #555a73;border-radius:3px;color:#fff;background:#343950;font-size:.66rem;font-weight:800;cursor:pointer}.evaluation-play:hover:not(:disabled){border-color:#8aaa70;background:#445d45}.evaluation-play:disabled{opacity:.35;cursor:not-allowed}.analysis-panel .privacy-note{margin:0;line-height:1.5}.analysis-layout .board-controls button{width:auto;min-width:96px;padding-inline:.7rem}.analysis-layout .board-controls .analysis-undo-button{width:40px;min-width:40px;padding:0}.analysis-board-message{margin:.65rem 0 0}@media(max-width:1220px){.topbar{gap:1rem}.topbar nav a{padding-inline:.45rem;font-size:.68rem}}@media(max-width:850px){.analysis-layout{grid-template-columns:minmax(0,650px)}.session-actions{margin-left:auto}}@media(max-width:600px){.page-actions{flex-wrap:wrap}.pool-row{min-width:560px}.analysis-layout{display:block}.analysis-panel{margin-top:1rem}.analysis-layout .board-controls span{display:none}.analysis-layout .board-controls button{min-width:0;flex:1;padding-inline:.35rem;font-size:.68rem}.move-row{grid-template-columns:28px 1fr 1fr}.variation-branch{margin-left:1rem}}.board-drawer-toggle{display:none}.offline-page{max-width:800px;margin:auto;padding:1rem;line-height:1.6}.offline-card{margin-top:1.5rem;padding:1.5rem;border:1px solid var(--line);background:var(--white)}.offline-card h2{margin-bottom:.75rem}.offline-card .action-row{margin:1.5rem 0}@media(max-width:1366px)and (max-height:1024px){.app-shell:has(.reader-layout,.training-layout,.analysis-layout,.repertoire-browser-layout) .topbar{height:58px;min-height:58px;padding:.35rem .75rem;flex-wrap:nowrap;gap:.6rem}.app-shell:has(.reader-layout,.training-layout,.analysis-layout,.repertoire-browser-layout) .brand>span:last-child{display:none}.app-shell:has(.reader-layout,.training-layout,.analysis-layout,.repertoire-browser-layout) .topbar nav{order:initial;width:auto;min-width:0;height:100%;overflow-x:auto}.app-shell:has(.reader-layout,.training-layout,.analysis-layout,.repertoire-browser-layout) .topbar nav a{flex:none;padding-inline:.48rem;font-size:.66rem}.app-shell:has(.reader-layout,.training-layout,.analysis-layout,.repertoire-browser-layout) .session-actions{margin-left:auto}.app-shell:has(.reader-layout,.training-layout,.analysis-layout,.repertoire-browser-layout) .session-actions .session-icon-button{width:34px;height:34px;min-height:34px;padding:0}.page:has(.reader-layout,.training-layout,.analysis-layout){min-height:calc(100dvh - 58px);padding:.55rem 1rem}.page:has(.analysis-layout)>.page-header,.reader-header,.training-header{min-height:42px;max-height:48px;margin-bottom:.5rem;align-items:center;flex-direction:row;gap:.75rem;overflow:hidden}.page:has(.analysis-layout)>.page-header>div:first-child,.reader-header>div:first-child,.training-header>div:first-child{min-width:0;display:flex;align-items:center;gap:.55rem}.page:has(.analysis-layout)>.page-header .eyebrow,.reader-header .eyebrow,.training-header .eyebrow,.reader-header>div:first-child>p:last-child{display:none}.page:has(.analysis-layout)>.page-header h1,.reader-header h1,.training-header h1{min-width:0;margin:0;overflow:hidden;color:var(--ink);font-size:1.2rem;line-height:1.2;text-overflow:ellipsis;white-space:nowrap}.reader-header .title-with-action{min-width:0;flex-wrap:nowrap}.reader-header .back-link,.training-header .back-link{flex:none;font-size:.67rem;white-space:nowrap}.reader-actions,.training-header-actions,.page:has(.analysis-layout)>.page-header .page-actions{min-width:0;margin-left:auto;flex-wrap:nowrap;overflow-x:auto;justify-content:flex-end}.reader-actions .button,.training-header-actions .button{min-height:34px;flex:none;padding:.4rem .6rem;font-size:.66rem}.session-counter{flex:none;padding:.35rem .55rem}.reader-layout,.training-layout,.analysis-layout{grid-template-columns:minmax(0,1fr) minmax(280px,.62fr);gap:1rem;align-items:start}.reader-layout>.board-column,.training-layout>.board-column,.analysis-layout>.board-column{width:min(100%,calc(100dvh - 180px));justify-self:end}.board-coordinate-layout{grid-template-columns:18px minmax(0,1fr);grid-template-rows:minmax(0,1fr) 18px}.board-controls{min-height:42px;padding:.25rem}.board-controls button{height:32px}.moves-panel,.training-panel,.analysis-panel{min-height:0;max-height:calc(100dvh - 116px);overflow:auto}.reader-side-column .moves-panel{max-height:calc(100dvh - 166px)}.analysis-panel{gap:.75rem;padding:1rem}.analysis-panel textarea{max-height:64px}.evaluation-card{min-height:0}.reader-page>.notice,.training-page>.notice,.page:has(.analysis-layout)>.notice{position:fixed;top:64px;right:1rem;z-index:30;max-width:min(520px,calc(100vw - 2rem));margin:0;box-shadow:0 8px 30px #171b3329}.repertoire-browser{max-height:calc(100dvh - 1rem)}.repertoire-browser-layout>.board-column{width:min(100%,calc(100dvh - 180px));justify-self:end}.repertoire-browser-panel{min-height:0;max-height:calc(100dvh - 120px);overflow:auto}}@media(max-width:1024px)and (orientation:portrait){.reader-layout,.training-layout,.analysis-layout,.repertoire-browser-layout{grid-template-columns:minmax(0,1fr);gap:.55rem;justify-items:center}.reader-layout>.board-column,.training-layout>.board-column,.analysis-layout>.board-column,.repertoire-browser-layout>.board-column{width:min(100%,calc(100dvh - 180px));justify-self:center}.board-side-panel{width:min(100%,calc(100dvh - 180px));min-height:0!important;max-height:none!important;margin-top:0!important;overflow:visible!important;justify-self:center}.board-drawer-toggle{position:relative;z-index:2;width:100%;min-height:42px;display:flex;align-items:center;justify-content:space-between;padding:.55rem .8rem;border:1px solid var(--line);color:var(--ink);background:var(--white);font-size:.75rem;font-weight:800;cursor:pointer}.board-drawer-toggle span:last-child{color:var(--coral);font-size:1.2rem;line-height:1}.board-side-panel:not(.drawer-open)>:not(.board-drawer-toggle){display:none!important}.board-side-panel.drawer-open{max-height:min(68dvh,680px)!important;overflow:auto!important}.board-side-panel.drawer-open>.board-drawer-toggle{position:sticky;top:0}.analysis-panel,.moves-panel,.training-panel,.repertoire-browser-panel{padding-top:0}.analysis-panel>.board-drawer-toggle{margin:0 -1rem;width:calc(100% + 2rem)}.training-panel>.board-drawer-toggle{margin:0 -1.5rem;width:calc(100% + 3rem)}.training-panel>.panel-heading{margin:0 -1.5rem}.moves-panel>.board-drawer-toggle,.repertoire-browser-panel>.board-drawer-toggle{flex:none}.repertoire-browser-full-layout .repertoire-browser-panel{max-height:none!important;overflow:visible!important}.repertoire-browser-full-layout .repertoire-browser-panel>.board-drawer-toggle{display:none}.repertoire-browser-full-layout .repertoire-browser-panel:not(.drawer-open)>:not(.board-drawer-toggle){display:revert!important}.repertoire-browser-layout{padding:.55rem}}
