/* Projecte web d’Oriol Solà i Solà · © 2026 */
:root{--purple:#bb29bb;--deep:#702270;--ink:#202020;--paper:#f7f5ef;font-family:"DM Sans",Arial,sans-serif;color:var(--ink)}*{box-sizing:border-box}body{margin:0;background:#fff}a{color:inherit}.masthead{height:64px;padding:0 clamp(20px,4vw,64px);display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #e8e2e8}.brand{display:flex;align-items:center;gap:11px;text-decoration:none}.brand img{width:34px;height:43px;object-fit:contain}.brand span{display:flex;flex-direction:column;line-height:1}.brand strong{font-size:17px;font-weight:800}.brand small{margin-top:4px;font-size:11px;font-weight:700}.section-nav{display:flex;border:1px solid var(--purple);font-size:9px;font-weight:800;letter-spacing:.05em;text-transform:uppercase}.section-nav a{display:flex;align-items:center;justify-content:center;min-height:34px;padding:0 13px;color:var(--deep);text-decoration:none;white-space:nowrap}.section-nav a+a{border-left:1px solid var(--purple)}.section-nav a.active{background:var(--purple);color:#fff}.hero{display:flex;align-items:end;justify-content:space-between;padding:34px clamp(20px,4vw,64px) 30px;background:var(--paper);border-bottom:1px solid #e8e2e8}.kicker{margin:0 0 13px;color:#a51fa5;font-size:10px;font-weight:800;letter-spacing:.16em}.hero h1{margin:0;font-size:clamp(40px,4.2vw,66px);line-height:.93;letter-spacing:-.06em}.hero h1 em{color:var(--purple);font-style:normal}.hero>p{max-width:420px;margin:0 0 5px;padding-left:28px;border-left:1px solid #d9ccd7;font-size:15px;line-height:1.5}.charts-shell{padding:24px clamp(20px,4vw,64px) 30px}.chart-card{margin-bottom:18px;border:1px solid #e1dae1;background:#fff}.chart-card>header{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;padding:18px 20px;background:#f8f5f8;border-bottom:1px solid #e5dfe5}.chart-number{color:var(--purple);font-size:9px;font-weight:800;letter-spacing:.13em}.chart-card h2{margin:4px 0 3px;font-size:24px;letter-spacing:-.04em}.chart-card header p{margin:0;color:#6f636f;font-size:12px}.chart-card label{min-width:165px;color:#755b81;font-size:8px;font-weight:800;letter-spacing:.1em}.chart-card select{display:block;width:100%;height:39px;margin-top:5px;padding:0 10px;border:1px solid #d8ced8;background:#fff;color:#261f26;font-family:inherit;font-size:13px;font-weight:700}.double-control{display:grid;grid-template-columns:1fr 1fr;gap:10px}.highlight{display:grid;grid-template-columns:1fr 1fr;border-bottom:1px solid #e8e1e8}.highlight div{display:grid;grid-template-columns:auto 1fr;align-items:baseline;gap:6px 12px;padding:11px 20px}.highlight div+div{border-left:1px solid #e8e1e8}.highlight span{grid-column:1/-1;color:#796d79;font-size:8px;font-weight:800;letter-spacing:.1em;text-transform:uppercase}.highlight strong{color:var(--deep);font-size:20px}.highlight small{font-size:11px}.chart{width:100%;padding:10px 12px 2px}.chart svg{display:block;width:100%;height:auto;max-height:390px}.grid-line{stroke:#e9e3e9;stroke-width:1}.axis-label,.year-label{fill:#776b77;font-family:"DM Sans",Arial,sans-serif;font-size:11px}.data-line{fill:none;stroke:var(--purple);stroke-width:4;stroke-linecap:round;stroke-linejoin:round}.data-dot{fill:#fff;stroke:var(--deep);stroke-width:3}.method{margin:8px 0 0;color:#6f636f;font-size:11px;line-height:1.5}.error{padding:35px;border:1px solid #e5dfe5;text-align:center;color:#756875}footer{display:flex;justify-content:space-between;gap:20px;padding:11px clamp(20px,4vw,64px);border-top:1px solid #e8e2e8;color:#716371;font-size:9px}footer p{margin:0}footer strong{color:#7c207c}@media(max-width:700px){.masthead{height:58px;padding:0 9px}.brand{gap:6px}.brand img{width:26px;height:34px}.brand strong{font-size:12px}.brand small{font-size:8px}.section-nav{font-size:7px}.section-nav a{min-height:30px;padding:0 6px}.hero{display:block;padding:22px 15px}.hero h1{font-size:39px}.hero>p{margin-top:18px;padding:0;border:0;font-size:13px}.charts-shell{padding:14px 10px 20px}.chart-card>header{display:block;padding:15px}.chart-card h2{font-size:21px}.chart-card label{display:block;margin-top:13px}.double-control{grid-template-columns:1fr 1fr}.highlight div{display:block;padding:10px 12px}.highlight span,.highlight strong,.highlight small{display:block}.highlight strong{margin:3px 0;font-size:17px}.chart{padding:7px 4px}.chart svg{min-height:220px}.axis-label,.year-label{font-size:13px}.method{padding:0 4px}footer{display:block;padding:12px}footer small{display:block;margin-top:5px}}

/* Correspondència anual del castell mitjà */
.average-table{margin:0 20px 20px;border:1px solid #e5dfe5}
.average-head,.average-row{display:grid;grid-template-columns:.45fr .75fr 1.4fr;align-items:center}
.average-head{background:#2a202a;color:#fff;font-size:9px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}
.average-head span,.average-row>*{padding:9px 12px}
.average-row{border-top:1px solid #ebe5eb;font-size:12px}
.average-row strong{color:#7c207c}
.average-row span:last-child{font-weight:700}
@media(max-width:700px){.average-table{margin:0 10px 14px}.average-head,.average-row{grid-template-columns:.42fr .8fr 1.25fr}.average-head span,.average-row>*{padding:8px 7px}.average-head{font-size:7px}.average-row{font-size:10px}}

/* Explorador visual del castell mitjà */
.data-dot{cursor:pointer;transition:r .15s,stroke-width .15s}
.data-dot:hover,.data-dot.active{r:8px;stroke-width:5}
.average-table{margin:0 20px 20px;border:0}
.average-selected{display:grid;grid-template-columns:.55fr 1.45fr;border:1px solid #e1d8e1;background:#f8f5f8}
.average-selected>div{display:flex;flex-direction:column;justify-content:center;padding:18px 20px;border-right:1px solid #e1d8e1}
.average-selected>div span{color:#7b6c7b;font-size:9px;font-weight:800;letter-spacing:.1em;text-transform:uppercase}
.average-selected>div strong{margin-top:4px;color:#7c207c;font-size:34px}
.average-selected dl{display:grid;grid-template-columns:repeat(3,1fr);margin:0}
.average-selected dl div{display:flex;flex-direction:column;justify-content:center;padding:15px 18px}
.average-selected dl div+div{border-left:1px solid #e1d8e1}
.average-selected dt{color:#7b6c7b;font-size:9px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}
.average-selected dd{margin:6px 0 0;font-size:17px;font-weight:800}
.season-top-castles{grid-column:1/-1;border-top:1px solid #e1d8e1;padding:15px 18px 18px}
.season-top-castles h3{margin:0 0 10px;color:#7b6c7b;font-size:9px;letter-spacing:.1em;text-transform:uppercase}
.season-top-castles>div{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:7px}
.season-top-castles article{display:flex;flex-direction:column;gap:5px;padding:11px;border:1px solid #dfd5df;background:#fff}
.season-top-castles article strong{font-size:12px;line-height:1.2}
.season-top-castles article span{display:flex;justify-content:space-between;gap:8px;color:#716571;font-size:9px}
.season-top-castles article b{color:#7c207c;font-size:11px}
.year-picker{display:grid;grid-template-columns:repeat(8,1fr);gap:6px;margin-top:10px}
.year-picker button{min-height:38px;border:1px solid transparent;color:#4d414d;font:800 11px "DM Sans",Arial,sans-serif;cursor:pointer}
.year-picker .level-0{background:#f3eef3}.year-picker .level-6{background:#f2d8f2}.year-picker .level-7{background:#dfa3df}.year-picker .level-8{background:#c75ac7;color:#fff}.year-picker .level-9{background:#762076;color:#fff}.year-picker .level-10{background:#291129;color:#fff}
.year-picker button:hover,.year-picker button:focus-visible{border-color:#202020}
.year-picker button.active{outline:3px solid #202020;outline-offset:1px}
@media(max-width:700px){.average-table{margin:0 10px 14px}.average-selected{grid-template-columns:1fr}.average-selected>div{padding:13px 14px;border-right:0;border-bottom:1px solid #e1d8e1}.average-selected>div strong{font-size:27px}.average-selected dl{grid-template-columns:1fr 1fr}.average-selected dl div{padding:11px 12px}.average-selected dl div+div{border-left:1px solid #e1d8e1}.average-selected dl div:last-child{grid-column:1/-1;border-top:1px solid #e1d8e1;border-left:0}.average-selected dd{font-size:14px}.season-top-castles{padding:12px}.season-top-castles>div{grid-template-columns:1fr 1fr}.season-top-castles article:last-child{grid-column:1/-1}.year-picker{grid-template-columns:repeat(4,1fr);gap:5px}.year-picker button{min-height:36px}}

.record-card .data-dot{cursor:pointer}.record-detail{display:grid;grid-template-columns:120px minmax(240px,1.1fr) minmax(420px,2fr) 130px;align-items:stretch;border-top:1px solid #e5dfe5;background:#fff}.record-detail>div{padding:16px 18px}.record-detail>div+div{border-left:1px solid #e5dfe5}.record-number span,.record-points span{display:block;color:#796d79;font-size:8px;font-weight:800;letter-spacing:.1em;text-transform:uppercase}.record-number strong{display:inline-block;margin-top:4px;color:var(--deep);font-size:30px}.record-number small{margin-left:5px;color:#796d79;font-size:10px}.record-copy time{color:#8d238d;font-size:9px;font-weight:800;text-transform:uppercase}.record-copy h3{margin:4px 0 2px;font-size:17px;line-height:1.15}.record-copy p{margin:0;color:#796d79;font-size:10px}.record-results{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}.record-results>span{padding:7px 9px;border:1px solid #eadfea;background:#faf5fa}.record-results strong,.record-results small{display:block}.record-results strong{font-size:10px}.record-results small{margin-top:2px;color:#762076;font-size:8px}.record-points{display:flex;flex-direction:column;justify-content:center;background:#f6edf6}.record-points strong{margin-top:3px;color:var(--deep);font-size:25px}.record-points small{color:#796d79;font-size:9px}.data-dot.active{fill:var(--purple);stroke:#4f174f;stroke-width:4}
@media(max-width:850px){.record-detail{grid-template-columns:90px 1fr 115px}.record-results{grid-column:1/-1;border-top:1px solid #e5dfe5}.record-detail .record-results{border-left:0}.record-copy h3{font-size:15px}}
@media(max-width:700px){.record-detail{grid-template-columns:72px 1fr}.record-detail>div{padding:12px}.record-points{grid-column:1/-1;display:grid;grid-template-columns:1fr auto auto;align-items:baseline;gap:5px;border-top:1px solid #e5dfe5;border-left:0!important}.record-results{grid-template-columns:1fr 1fr}.record-number strong{font-size:24px}.record-copy h3{font-size:14px}.record-card .chart svg{min-width:760px}.record-card .chart{overflow-x:auto}}

/* En pantalles amples, l'alçada no ha de limitar també l'amplada del SVG. */
.chart svg{max-height:none}
.record-year-guide{stroke:#eee7ee;stroke-width:1;stroke-dasharray:3 5}

.chart-note{margin:0;padding:11px 20px 13px;border-top:1px solid #eee7ee;background:#fcfafc;color:#665a66;font-size:11px;line-height:1.5}.chart-note strong{color:var(--deep)}@media(max-width:700px){.chart-note{padding:11px 14px;font-size:10px}}
.chart-breakdown{border-top:1px solid #e5dfe5;background:#fff}.chart-breakdown>summary{padding:13px 20px;color:var(--deep);font-size:11px;font-weight:800;cursor:pointer}.chart-breakdown[open]>summary{background:#f8f5f8}.breakdown-controls{display:flex;justify-content:flex-end;padding:12px 20px 0}.breakdown-controls label{width:180px}.breakdown-list{display:grid;gap:8px;padding:12px 20px 18px}.breakdown-performance{border:1px solid #e5dfe5}.breakdown-performance>header{display:grid;grid-template-columns:28px 1fr auto;align-items:center;gap:10px;padding:10px 12px;background:#faf8fa}.breakdown-performance>header>span,.breakdown-rank{color:var(--purple);font-size:10px;font-weight:800}.breakdown-performance>header div,.castle-breakdown-list article div{display:flex;min-width:0;flex-direction:column}.breakdown-performance>header strong,.castle-breakdown-list article strong{font-size:12px}.breakdown-performance>header small,.castle-breakdown-list article small{margin-top:2px;color:#796d79;font-size:10px}.breakdown-performance>header>b,.castle-breakdown-list article>b{color:var(--deep);font-size:12px;white-space:nowrap}.counted-castles{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px;padding:10px 12px}.counted-castles>span{padding:8px;border:1px solid #eadfea;background:#fff}.counted-castles strong,.counted-castles small{display:block}.counted-castles strong{font-size:11px}.counted-castles small{margin-top:3px;color:#776b77;font-size:9px}.castle-breakdown-list article{display:grid;grid-template-columns:28px minmax(0,1fr) 120px 100px;align-items:center;gap:10px;padding:10px 12px;border:1px solid #e5dfe5}.breakdown-result{color:#742074;font-size:10px;font-weight:800;text-align:right}.chart-breakdown .empty{padding:20px}
@media(max-width:700px){.chart-breakdown>summary{padding:12px 14px}.breakdown-controls{padding:10px 14px 0}.breakdown-controls label{width:100%}.breakdown-list{padding:10px 14px 14px}.breakdown-performance>header{grid-template-columns:22px 1fr}.breakdown-performance>header>b{grid-column:2}.counted-castles{grid-template-columns:1fr 1fr;padding:8px}.castle-breakdown-list article{grid-template-columns:22px 1fr auto}.castle-breakdown-list article>b{grid-column:2}.breakdown-result{grid-column:3;grid-row:1/3}}.performance-compact-head,.performance-compact{display:grid;grid-template-columns:28px minmax(220px,1.15fr) minmax(360px,1.8fr) minmax(140px,.65fr) 90px;align-items:center;gap:10px}.performance-compact-head{padding:7px 12px;color:#796d79;font-size:8px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.performance-compact{padding:9px 12px;border:1px solid #e5dfe5}.compact-performance-name{display:flex;min-width:0;flex-direction:column}.compact-performance-name strong{font-size:11px}.compact-performance-name small{margin-top:2px;color:#796d79;font-size:9px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.compact-castles{display:flex;min-width:0;gap:4px;overflow-x:auto}.compact-castles span,.compact-pillar span{padding:4px 6px;background:#faf2fa;color:#632063;font-size:9px;font-weight:700;white-space:nowrap}.compact-pillar{white-space:nowrap}.performance-compact>b{color:var(--deep);font-size:11px;text-align:right;white-space:nowrap}.breakdown-caption{margin:0;padding:2px 0;color:#796d79;font-size:9px}.castle-breakdown-list .season-castle-row{display:grid;grid-template-columns:52px minmax(0,1fr) 100px;align-items:center;gap:10px;padding:8px 12px;border:1px solid #e5dfe5}.season-castle-row>strong{color:var(--deep);font-size:13px}.season-castle-row>div{display:flex;min-width:0;gap:5px;overflow-x:auto}.season-castle-row>div span{padding:4px 7px;background:#faf2fa;color:#632063;font-size:9px;white-space:nowrap}.season-castle-row>div span b{font-size:11px}.season-castle-row>b{font-size:10px;text-align:right;white-space:nowrap}.breakdown-more{justify-self:center;padding:9px 15px;border:1px solid var(--purple);background:#fff;color:var(--deep);font-family:inherit;font-size:10px;font-weight:800;cursor:pointer}.breakdown-more:hover,.breakdown-more:focus-visible{background:#faeafa}
@media(max-width:700px){.performance-compact-head{display:none}.performance-compact{grid-template-columns:22px 1fr auto;gap:7px}.compact-performance-name{grid-column:2}.compact-castles{grid-column:2/-1;flex-wrap:wrap;overflow:visible}.compact-pillar{grid-column:2}.performance-compact>b{grid-column:3;grid-row:1/3}.castle-breakdown-list .season-castle-row{grid-template-columns:44px 1fr auto;padding:8px}.season-castle-row>div{grid-column:1/-1;grid-row:2;flex-wrap:wrap;overflow:visible}.season-castle-row>b{grid-column:3;grid-row:1}}
.compact-performance-name{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.compact-performance-name small{margin:0 0 0 6px}@media(max-width:700px){.compact-performance-name{white-space:normal}.compact-performance-name small{display:block;margin:2px 0 0}}

/* Desglossaments visuals de les gràfiques */
.chart-breakdown[open]{background:#fbf8fb}.chart-breakdown[open]>summary{border-bottom:1px solid #e4dbe4;background:#f5eff5}.breakdown-controls{background:#fbf8fb}.breakdown-list{gap:7px;padding:14px 18px 18px}.performance-compact-head,.performance-compact{grid-template-columns:30px minmax(250px,1.15fr) minmax(320px,1.65fr) minmax(125px,.62fr) 92px}.performance-compact-head{padding:8px 11px;border:1px solid #2a202a;background:#2a202a;color:#fff}.performance-compact{min-height:52px;padding:7px 11px;border:1px solid #e2d9e2;border-left:4px solid #d6a6d6;background:#fff}.performance-compact:nth-child(odd){background:#fdfafd}.performance-compact:hover{border-left-color:var(--purple);background:#fbf0fb}.performance-compact .breakdown-rank{display:flex;width:23px;height:23px;align-items:center;justify-content:center;background:#f4ddf4;color:#8a218a;font-size:9px;font-weight:800}.compact-performance-name{padding-right:9px}.compact-performance-name strong{display:inline;color:#241d24;font-size:11px}.compact-performance-name small{color:#786d78;font-size:8px}.compact-castles{gap:5px;padding:0 9px;border-left:1px solid #eee5ee;border-right:1px solid #eee5ee}.compact-castles span,.compact-pillar span{border:1px solid #eadbea;background:#faf0fa;color:#672067;font-size:8px}.compact-pillar{padding-left:3px}.compact-pillar span{background:#f2e3f2}.performance-compact>b{padding:6px 7px;background:#7b247b;color:#fff;font-size:10px;text-align:center}.breakdown-caption{padding:2px 1px 7px;color:#6f626f}.castle-breakdown-list .season-castle-row{grid-template-columns:62px minmax(0,1fr) 104px;min-height:67px;padding:9px 11px;border:1px solid #e0d7e0;border-left:4px solid #c875c8;background:#fff}.castle-breakdown-list .season-castle-row:nth-of-type(even){background:#fcf8fc}.season-castle-row>strong{display:flex;width:48px;height:42px;align-items:center;justify-content:center;background:#7b247b;color:#fff;font-size:12px}.season-castle-row>div{align-content:center;flex-wrap:wrap;gap:5px;overflow:visible}.season-castle-row>div span{display:inline-flex;align-items:center;gap:4px;padding:5px 7px;border:1px solid #e7dce7;background:#faf2fa;color:#3e293e;font-size:9px}.season-castle-row>div span b{display:inline-flex;min-width:19px;height:19px;align-items:center;justify-content:center;background:#ead3ea;color:#752175;font-size:10px}.season-castle-row>b{padding:7px;background:#f2e6f2;color:#6e206e;text-align:center}.breakdown-more{margin-top:5px;background:#7b247b;color:#fff}
@media(max-width:900px){.performance-compact-head{display:none}.performance-compact{grid-template-columns:28px minmax(210px,1fr) 88px}.compact-performance-name{grid-column:2}.compact-castles{grid-column:2/-1;flex-wrap:wrap;padding:6px 0 0;border:0;border-top:1px solid #eee5ee;overflow:visible}.compact-pillar{grid-column:2;padding:0}.performance-compact>b{grid-column:3;grid-row:1}.castle-breakdown-list .season-castle-row{grid-template-columns:58px 1fr}.season-castle-row>b{grid-column:1;grid-row:2;padding:4px;font-size:8px}.season-castle-row>div{grid-column:2;grid-row:1/3}}
@media(max-width:560px){.breakdown-list{padding:9px}.performance-compact{grid-template-columns:24px 1fr auto;padding:8px}.compact-performance-name small{display:block;margin:2px 0 0}.compact-castles{grid-column:1/-1}.compact-pillar{grid-column:1/-1}.castle-breakdown-list .season-castle-row{grid-template-columns:50px 1fr;padding:7px}.season-castle-row>strong{width:42px;height:36px}.season-castle-row>div span{padding:4px 5px}.season-castle-row>b{grid-column:1}.season-castle-row>div{grid-column:2}}
