:root{--paper: #f6f3ea;--paper-shadow: #ece7db;--ink: #2d2b28;--ink-soft: #706960;--ink-faint: #b1a99c;--line: rgba(45, 43, 40, .25);--line-faint: rgba(45, 43, 40, .1);--ease: cubic-bezier(.2, .65, .2, 1)}*{box-sizing:border-box}html,body,#root{margin:0;min-height:100%;width:100%}body{font-family:Iowan Old Style,Palatino Linotype,serif;color:var(--ink);background:radial-gradient(circle at 20% 15%,rgba(255,255,255,.35),transparent 35%),radial-gradient(circle at 80% 90%,rgba(222,214,198,.28),transparent 42%),linear-gradient(135deg,var(--paper) 0%,var(--paper-shadow) 100%)}button,textarea{font:inherit;color:inherit}.app-shell{min-height:100dvh;position:relative;overflow:hidden}.circle-screen,.quadrant-screen{min-height:100dvh;display:flex;justify-content:center;align-items:center;position:relative;padding:1.25rem}.circle-svg{width:min(88vw,88vh,620px);height:min(88vw,88vh,620px)}.circle-outline{fill:none;stroke:var(--line);stroke-width:.7}.center-ring{fill:none;stroke:var(--line-faint);stroke-width:.55}.wedge-hit{fill:transparent;stroke:transparent;cursor:pointer;transition:fill .22s var(--ease)}.wedge-hit:hover,.wedge-hit:focus-visible{fill:#2d2b280a;outline:none}.wedge-label{font-size:6px;letter-spacing:.04em;fill:var(--ink-soft);text-transform:uppercase}.center-date{font-size:4px;fill:var(--ink-faint);letter-spacing:.03em}.circle-stitch{stroke:var(--line-faint);stroke-width:1.3;stroke-linecap:round;transition:stroke .2s var(--ease),opacity .2s var(--ease);opacity:.38}.circle-stitch.is-on{stroke:var(--ink);opacity:.88}.history-button,.back-button{position:absolute;top:1.15rem;border:none;background:transparent;color:var(--ink-soft);letter-spacing:.03em;padding:.3rem .5rem}.history-button{right:1rem}.back-button{left:0;top:0}.quadrant-screen{animation:fade-in .22s var(--ease)}.quadrant-content{width:min(520px,100%);position:relative;animation:rise-in .22s var(--ease)}.quadrant-content h1{margin:2.1rem 0 1.2rem;font-size:clamp(1.45rem,4.2vw,2rem);font-weight:500;letter-spacing:.01em}.item-list{display:flex;flex-direction:column;gap:.3rem}.item-row{border:none;background:transparent;width:100%;display:flex;justify-content:space-between;align-items:center;padding:.9rem 0;border-bottom:1px solid var(--line-faint);text-align:left}.item-row__label{font-size:1.05rem}.ink-check{width:1.45rem;height:1.45rem}.ink-check path{fill:none;stroke:var(--ink);stroke-width:2.05;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:30;stroke-dashoffset:30;opacity:0;transition:stroke-dashoffset .25s var(--ease),opacity .18s var(--ease)}.ink-check.is-checked path{stroke-dashoffset:0;opacity:.9}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;align-items:flex-end;justify-content:center;z-index:20}.modal-shell{position:absolute;top:0;right:0;bottom:0;left:0;background:#201e1c38;animation:fade-in .18s var(--ease)}.modal-body{position:relative;width:min(680px,100%);max-height:85dvh;overflow:auto;background:#f6f3eaf5;border-top:1px solid var(--line);padding:1.2rem 1rem 1rem;animation:rise-in .22s var(--ease)}.modal-body h2{margin:0 0 .95rem;font-size:1.15rem;font-weight:500}.tone-list{display:flex;flex-wrap:wrap;gap:.35rem}.tone-chip,.range-chip{border:1px solid var(--line-faint);background:transparent;padding:.3rem .55rem;font-size:.92rem}.tone-chip.is-selected,.range-chip.is-selected{border-color:var(--line);color:var(--ink)}.note-field{display:flex;flex-direction:column;gap:.3rem;margin-top:.9rem;font-size:.88rem;color:var(--ink-soft)}.note-field textarea{border:1px solid var(--line-faint);background:#ffffff8c;padding:.55rem;resize:vertical;min-height:72px}.modal-actions{display:flex;justify-content:flex-end;gap:.6rem;margin-top:.95rem}.modal-actions button{border:1px solid var(--line-faint);background:transparent;padding:.35rem .65rem}.modal-history{padding-bottom:1.2rem}.range-row{display:flex;gap:.35rem;margin-bottom:.8rem}.tapestry-wrap{border:1px solid var(--line-faint);overflow-x:auto}.tapestry{width:100%;min-width:100%;height:320px;display:block;background:#ffffff75}.thread{stroke:var(--ink-soft);stroke-width:.8;stroke-linecap:round}.stitch{stroke:var(--ink);stroke-width:1.4;stroke-linecap:round}.history-key{margin-top:.65rem;color:var(--ink-soft);font-size:.86rem}.history-key ol{margin:.4rem 0 0;padding-left:1.2rem;columns:2}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes rise-in{0%{transform:translateY(8px);opacity:0}to{transform:translateY(0);opacity:1}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:1ms!important;animation-iteration-count:1!important;transition-duration:1ms!important;scroll-behavior:auto!important}}@media (min-width: 700px){.modal-body{border:1px solid var(--line);margin-bottom:1rem}.overlay{align-items:center;padding:1.4rem}}
