@import "https://fonts.googleapis.com/css2?family=Shippori+Mincho:wght@500;600;700&display=swap";
:root,:root[data-theme=dark]{--bg-primary:#0a0a0b;--bg-elevated:#18181b;--bg-overlay:#27272a;--border-subtle:#ffffff0f;--border-strong:#ffffff1a;--text-primary:#fafafa;--text-secondary:#a1a1aa;--text-tertiary:#71717a;--accent:#ef4444;--accent-hover:#f87171;--accent-soft:#ef44441f;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}:root[data-theme=light]{--bg-primary:#fafafa;--bg-elevated:#fff;--bg-overlay:#f4f4f5;--border-subtle:#0000000f;--border-strong:#0000001a;--text-primary:#09090b;--text-secondary:#52525b;--text-tertiary:#71717a;--accent:#dc2626;--accent-hover:#ef4444;--accent-soft:#dc262614;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box;margin:0;padding:0}html,body{height:100%}body{background:var(--bg-primary);color:var(--text-primary);-webkit-font-smoothing:antialiased;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif;font-size:14px;line-height:1.5}input,textarea{font-family:inherit}.app-shell{grid-template-rows:auto 1fr;height:100%;display:grid}.topbar{border-bottom:1px solid var(--border-subtle);justify-content:space-between;align-items:center;height:52px;padding:12px 20px;display:flex}.topbar-right{align-items:center;margin-left:auto;display:flex}.brand-line{color:var(--text-secondary);align-items:center;gap:8px;font-size:14px;font-weight:600;display:flex}.brand-dot{background:var(--accent);width:8px;height:8px;box-shadow:0 0 12px var(--accent);border-radius:50%}.boot-shell{height:100%;color:var(--text-secondary);text-align:center;place-items:center;padding:24px;display:grid}.signin-shell{color:#fafafa;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;background:radial-gradient(125% 80% at 50% -15%,#ef44442e,#0000 58%),radial-gradient(90% 70% at 88% 115%,#ef44441a,#0000 55%),#0a0a0b;place-items:center;min-height:100dvh;padding:56px 24px 40px;display:grid;position:relative;overflow:hidden}.signin-shell:before{content:"";z-index:0;pointer-events:none;opacity:.04;mix-blend-mode:overlay;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");position:absolute;inset:0}.signin-shell:after{content:"単語";z-index:0;pointer-events:none;letter-spacing:-.04em;color:#fafafa06;white-space:nowrap;font-family:Shippori Mincho,serif;font-size:clamp(190px,46vh,360px);font-weight:700;line-height:.8;position:absolute;bottom:-.16em;right:-.08em}.signin-card{z-index:1;-webkit-backdrop-filter:blur(20px)saturate(150%);backdrop-filter:blur(20px)saturate(150%);background:linear-gradient(#202025a8,#111114b8);border:1px solid #ffffff14;border-radius:18px;flex-direction:column;width:100%;max-width:356px;padding:30px 32px 26px;animation:.62s cubic-bezier(.22,1,.36,1) both signin-rise;display:flex;position:relative;box-shadow:inset 0 1px #ffffff0f,0 24px 64px -24px #000c,0 10px 30px -16px #ef444438}.signin-brand{align-items:baseline;gap:9px;margin-bottom:22px;display:flex}.signin-brand .brand-dot{box-shadow:0 0 4px var(--accent), 0 0 14px var(--accent);align-self:center;animation:3.2s ease-in-out infinite dot-pulse}.signin-wordmark{letter-spacing:.01em;color:#fafafa;font-family:Shippori Mincho,serif;font-size:18px;font-weight:600}.signin-kanji{letter-spacing:.1em;color:#fafafa6b;font-family:Shippori Mincho,serif;font-size:12.5px;font-weight:500}.signin-card .cl-rootBox,.signin-card .cl-cardBox,.signin-card .cl-card{width:100%!important;min-width:0!important;box-shadow:none!important;background:0 0!important;border:0!important;padding:0!important}.signin-card .cl-main,.signin-card .cl-form,.signin-card .cl-formField,.signin-card .cl-formFieldInput,.signin-card .cl-formButtonPrimary{min-width:0!important}.signin-card .cl-header{text-align:left!important;align-items:flex-start!important;gap:5px!important}.signin-card .cl-headerTitle{color:#fafafa!important;font-family:Shippori Mincho,serif!important;font-size:22px!important;font-weight:600!important}.signin-card .cl-headerSubtitle{color:#fafafa8c!important;font-size:13.5px!important}.signin-card .cl-formFieldLabel{color:#fafafab8!important;font-size:12.5px!important}.signin-card .cl-formFieldInput{color:#fafafa!important;background:#ffffff0a!important;border:1px solid #ffffff1f!important;border-radius:10px!important;height:42px!important;padding:0 13px!important;font-size:14px!important}.signin-card .cl-formFieldInput::placeholder{color:#fafafa57!important}.signin-card .cl-formFieldInput:focus,.signin-card .cl-formFieldInput:focus-within{border-color:var(--accent)!important;background:#ffffff0f!important;outline:none!important;box-shadow:inset 0 0 0 1px #ef444473!important}.signin-card .cl-formButtonPrimary{color:#fff!important;text-transform:none!important;background:linear-gradient(#f15a5a,#dc2626)!important;border:0!important;border-radius:10px!important;height:42px!important;font-size:14px!important;font-weight:600!important;box-shadow:inset 0 1px #ffffff38,0 8px 20px -8px #ef44448c!important}.signin-card .cl-formButtonPrimary:hover{filter:brightness(1.06)!important}.signin-card .cl-footer{background:0 0!important;border-top:1px solid #ffffff12!important}.signin-card .cl-footerAction,.signin-card .cl-footerActionText{color:#fafafa80!important}.signin-card .cl-footerActionLink{color:var(--accent)!important;font-weight:600!important}@keyframes signin-rise{0%{opacity:0;transform:translateY(14px)scale(.992)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes dot-pulse{0%,to{box-shadow:0 0 4px var(--accent), 0 0 12px var(--accent)}50%{box-shadow:0 0 7px var(--accent), 0 0 22px var(--accent)}}@media (prefers-reduced-motion:reduce){.signin-card,.signin-brand .brand-dot{animation:none}}.theme-toggle{border:1px solid var(--border-strong);background:var(--bg-elevated);width:34px;height:34px;color:var(--text-primary);cursor:pointer;border-radius:8px;place-items:center;font-size:15px;transition:background .12s;display:grid}.theme-toggle:hover{background:var(--bg-overlay)}.two-pane{grid-template-columns:320px 1fr;height:100%;display:grid;overflow:hidden}.words-list{border-right:1px solid var(--border-subtle);flex-direction:column;display:flex;overflow:hidden}.search-row{border-bottom:1px solid var(--border-subtle);padding:12px}.search-input{background:var(--bg-elevated);width:100%;color:var(--text-primary);border:1px solid var(--border-strong);border-radius:8px;padding:8px 10px;font-size:13px}.search-input:focus{border-color:var(--accent);outline:none}.list{flex:1;list-style:none;overflow-y:auto}.list-empty{color:var(--text-tertiary);padding:24px 16px;font-size:13px}.list-item{border-bottom:1px solid var(--border-subtle);cursor:pointer;padding:10px 14px;transition:background .1s}.list-item:hover{background:var(--bg-elevated)}.list-item.selected{background:var(--accent-soft);border-left:2px solid var(--accent);padding-left:12px}.list-item-surface{letter-spacing:-.015em;font-size:16px;font-weight:600}.list-item-meta{color:var(--text-secondary);flex-wrap:wrap;align-items:center;gap:8px;margin-top:2px;font-size:12px;display:flex}.list-item-sense{color:var(--text-tertiary);text-overflow:ellipsis;white-space:nowrap;margin-top:4px;font-size:12px;overflow:hidden}.jlpt-pill,.common-pill,.pos-pill{letter-spacing:.04em;white-space:nowrap;border-radius:4px;padding:1px 6px;font-size:10.5px;font-weight:600}.jlpt-pill{background:var(--accent-soft);color:var(--accent);border:1px solid var(--accent-soft)}.common-pill{background:var(--bg-overlay);color:var(--text-secondary)}.pos-verb{color:#2563eb;background:#3b82f61f;border:1px solid #3b82f638}.pos-i-adj{color:#16a34a;background:#16a34a1f;border:1px solid #16a34a38}.pos-na-adj{color:#9333ea;background:#a855f721;border:1px solid #a855f73d}.pos-adverb{color:#d97706;background:#d977061f;border:1px solid #d9770638}.pos-noun{background:var(--bg-overlay);color:var(--text-secondary);border:1px solid var(--border-strong)}.pos-other{background:var(--bg-overlay);color:var(--text-tertiary);border:1px solid var(--border-subtle)}:root[data-theme=dark] .pos-verb{color:#60a5fa}:root[data-theme=dark] .pos-i-adj{color:#4ade80}:root[data-theme=dark] .pos-na-adj{color:#c084fc}:root[data-theme=dark] .pos-adverb{color:#fbbf24}.detail-back{border:1px solid var(--border-strong);background:var(--bg-elevated);color:var(--text-secondary);cursor:pointer;border-radius:8px;align-self:flex-start;padding:6px 10px;font-size:13px;display:none}.word-detail{flex-direction:column;gap:20px;padding:24px 28px;display:flex;overflow-y:auto}.word-detail.empty{color:var(--text-tertiary);place-items:center;display:grid}.detail-header{flex-direction:column;gap:6px;display:flex}.detail-surface{letter-spacing:-.03em;font-size:36px;font-weight:700;line-height:1.1}.detail-reading{color:var(--text-secondary);font-size:18px}.detail-tags{flex-wrap:wrap;gap:6px;margin-top:6px;display:flex}.detail-section{flex-direction:column;gap:6px;display:flex}.section-label{text-transform:uppercase;letter-spacing:.08em;color:var(--text-tertiary);font-size:11px;font-weight:600}.senses{flex-direction:column;gap:8px;margin:0;padding-left:20px;display:flex}.sense-english{color:var(--text-primary);font-size:14px}.sense-pos{color:var(--text-tertiary);margin-top:2px;font-size:12px}.note-input{background:var(--bg-elevated);width:100%;color:var(--text-primary);border:1px solid var(--border-strong);resize:vertical;border-radius:8px;min-height:56px;padding:10px 12px;font-size:13px}.note-input:focus{border-color:var(--accent);outline:none}.muted{color:var(--text-tertiary);font-size:12px}.detail-actions{border-top:1px solid var(--border-subtle);gap:8px;margin-top:auto;padding-top:12px;display:flex}.btn-danger{cursor:pointer;color:#e11d48;background:0 0;border:1px solid #e11d484d;border-radius:8px;padding:8px 14px;font-size:13px;font-weight:500}.btn-danger:hover{background:#e11d481a}.btn-danger:disabled{opacity:.5;cursor:default}@media (max-width:768px){.two-pane{grid-template-columns:1fr}.two-pane[data-has-selection=true] .words-list,.two-pane[data-has-selection=false] .word-detail{display:none}.detail-back{display:inline-flex}}
