:root{--ink:#352039;--muted:#625268;--plum:#402044;--ground:#eee7f2;--line:#b4a0bc;--accent:#f5d563;--error:#a51d37;--white:#fff}*{box-sizing:border-box}body{margin:0;background:var(--ground);color:var(--ink);font:16px/1.55 "Segoe UI",system-ui,sans-serif}::selection{background:var(--accent);color:var(--plum)}html{scrollbar-color:#8c7195 var(--ground)}a{color:inherit;text-underline-offset:4px}button,input,select{font:inherit}button,a,input,select,summary{touch-action:manipulation}button,input,select{min-height:46px}button{background:var(--accent);color:var(--plum);border:1px solid #8b742c;border-radius:8px;padding:10px 16px;font-weight:650;cursor:pointer}button:hover{background:#ffe58b}button:disabled{opacity:.55;cursor:not-allowed}.secondary{background:var(--white);border-color:#8f7998}.secondary:hover{background:#f2e9f5}.text-button{background:none;border:0;text-decoration:underline;padding-left:0;font-size:.9rem}.skip{position:absolute;left:12px;top:-80px;background:white;padding:12px;z-index:5}.skip:focus{top:8px}:focus-visible{outline:3px solid #89510a;outline-offset:3px}header{background:var(--plum);color:white;padding:18px max(24px,calc((100vw - 1200px)/2));display:flex;justify-content:space-between;align-items:center;gap:20px}.brand{font-size:1.15rem;font-weight:750;text-decoration:none}nav{display:flex;gap:24px}nav a{min-height:44px;display:flex;align-items:center;font-size:.9rem}header :focus-visible{outline-color:var(--accent)}main{max-width:1248px;margin:auto;padding:28px 24px 0}.intro{display:flex;align-items:center;justify-content:space-between;gap:32px;margin:8px 0 28px}.intro h1{font-size:clamp(1.7rem,3vw,2.6rem);line-height:1.12;letter-spacing:-.025em;margin:0;font-weight:730}.intro p{max-width:47ch;color:var(--muted);margin:0}.workspace{display:grid;grid-template-columns:340px minmax(0,1fr);align-items:start;gap:24px}section{min-width:0}.entry{padding:24px;background:#e3d6e9;border-radius:14px}.record{background:white;padding:28px;border-radius:14px}.sample-picker{display:grid;grid-template-columns:1fr auto;gap:10px;margin-bottom:24px}.sample-picker label{grid-column:1/-1}.sample-picker button{font-size:.88rem;padding:8px 10px}.sample-picker select{min-width:0}h2{font-size:1.25rem;line-height:1.3;margin:0 0 8px}h3{font-size:1.05rem;margin:22px 0 8px}p{margin:8px 0 16px}label{display:block;font-size:.91rem;font-weight:650;margin:16px 0 6px}.sample-picker label{margin:0}.hint,.local-note{color:var(--muted);font-size:.88rem}.optional{font-weight:400}input,select{width:100%;background:white;border:1px solid #8f7998;border-radius:7px;color:var(--ink);padding:10px 11px;caret-color:var(--plum);min-width:0}input::placeholder{color:#76627d}.pair{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:12px}form>button,.actions{margin-top:20px}.actions{display:flex;gap:10px;flex-wrap:wrap}.error{color:var(--error);font-weight:600;margin:14px 0 0}.local-note{margin:24px 0 16px}details{border-top:1px solid var(--line);padding-top:10px}summary{cursor:pointer;min-height:44px;padding:9px 0;font-weight:650}details button{width:100%;margin-top:10px;font-size:.86rem}input[type=file]{font-size:.85rem;padding:8px;max-width:100%}input[type=file]::file-selector-button{border:0;background:#eee7f2;color:var(--plum);padding:8px;margin-right:8px}.record-head{display:flex;justify-content:space-between;align-items:start;gap:16px}.record-head button{flex-shrink:0}.record-head h2{overflow-wrap:anywhere}.record-meta{margin-bottom:0}.status{font-size:.9rem;color:#405e35;min-height:0}.status:empty{display:none}.empty{padding:30px 8px 24px;text-align:center;color:var(--muted)}.empty svg{width:240px;max-width:100%;height:110px;fill:var(--plum);stroke:#cdbbd4;stroke-width:1}.empty .sample-line{fill:none;stroke:#8b6298;stroke-width:3}.empty h3{color:var(--ink);margin-top:10px}.empty p{max-width:42ch;margin:auto;font-size:.9rem}.meaning{border-top:1px solid #ded0e4;margin-top:24px;padding-top:4px}.meaning p{max-width:67ch;font-size:.88rem;color:var(--muted);margin-bottom:0}dl{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin:24px 0}dt{font-size:.8rem;color:var(--muted)}dd{margin:3px 0 0;font-size:1.25rem;font-weight:700;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}.chart{background:#f7f2f9;border-radius:10px;padding:10px}.chart svg{display:block;width:100%;height:auto;max-height:240px;overflow:visible}.chart text{fill:var(--muted);font:12px "Segoe UI",sans-serif}.readings{list-style:none;padding:0;margin:0}.reading{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px 14px;border-top:1px solid #ded0e4;padding:14px 0}.reading-main{display:flex;gap:14px;flex-wrap:wrap;align-items:baseline}.reading strong{font-variant-numeric:tabular-nums}.reading time{font-size:.9rem;color:var(--muted)}.reading p{margin:3px 0 0;font-size:.87rem;overflow-wrap:anywhere}.row-actions{display:flex;gap:6px}.row-actions button{min-width:44px;padding:8px;font-size:.8rem;background:white;border-color:#b4a0bc}.reading.latest{background:#f7f2f9;margin:0 -10px;padding-left:10px;padding-right:10px;border-radius:7px}footer{display:flex;gap:24px;flex-wrap:wrap;padding:26px 0;color:var(--muted);font-size:.85rem}footer a{min-height:44px;padding:10px 0}footer span{padding:10px 0}.article{max-width:740px;background:white;padding:30px;border-radius:14px;margin:16px auto}.article h1{font-size:2rem;line-height:1.2}.article p,.article li{max-width:70ch}.article h2{margin-top:28px}[hidden]{display:none!important}@media(max-width:800px){header{padding:12px 18px;gap:12px}nav{gap:14px}.intro{display:block}.intro p{margin-top:14px;max-width:60ch}.workspace{grid-template-columns:1fr}.entry{padding:20px}.record{padding:22px}.intro h1 br{display:none}main{padding:20px 16px 0}.sample-picker{grid-template-columns:minmax(0,1fr) auto}.pair{grid-template-columns:minmax(0,1.3fr) minmax(0,1fr)}.local-note{margin-top:18px}.record-head{flex-wrap:wrap}dl{gap:10px}.article{padding:22px}.reading{grid-template-columns:1fr}.row-actions{justify-content:flex-end}}@media(max-width:370px){header{align-items:start;flex-direction:column;gap:0}nav a{min-height:44px}.entry,.record{padding:16px}main{padding:16px 12px 0}.intro h1{font-size:1.7rem}.pair{grid-template-columns:1fr}dd{font-size:1.05rem}.sample-picker{grid-template-columns:1fr}.sample-picker button{justify-self:start}.record-head{gap:6px}}@media(prefers-reduced-motion:no-preference){.reading.latest{animation:arrive .4s ease-out}@keyframes arrive{from{background:#e2d2ea}to{background:#f7f2f9}}}
