:root{--font-default: "Optimistic Display", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-primary: #2f7a3e;--color-primary-dark: #24622f;--color-accent: #8bc34a;--color-secondary: #cfe8c2;--color-background: #f3f9ef;--color-highlight: #dcf2cf;--color-success: #2f7a3e;--color-error: #c0392b;--color-warning: #d68910;--color-text: #24312a;--color-text-light: #56645b;--color-border: #dde6d8}body{font-family:var(--font-default);font-size:16px;line-height:1.6;color:var(--color-text)}h1,h2,h3,h4,h5,h6{font-family:var(--font-default);line-height:1.3}.app{min-height:100vh;padding:2rem 1.5rem 3rem;background-color:#fff}.loading-container,.error-container{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:200px;padding:2rem;color:var(--color-text-light)}.error-message{margin-bottom:1rem;color:var(--color-error);text-align:center}.retry-button{padding:.5rem 1.25rem;border:none;border-radius:.5rem;background:var(--color-primary);color:#fff;cursor:pointer}.retry-button:hover{background:var(--color-primary-dark)}.main-board{display:flex;flex-direction:column;gap:2rem;width:100%;max-width:1200px;margin:0 auto}.home-header{display:flex;align-items:center;gap:1rem;flex-wrap:wrap;padding-bottom:1.25rem;border-bottom:1px solid var(--color-border)}.main-title{margin:0 auto 0 0;color:var(--color-text);font-size:1.75rem;letter-spacing:-.02em}.home-section{display:flex;flex-direction:column;gap:.75rem}.section-label{margin:0;color:var(--color-text-light);font-size:.8rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase}.section-count{margin-left:.25rem;color:var(--color-primary)}.search-bar input{width:18rem;height:2.25rem;padding:0 .85rem;border:1px solid var(--color-border);border-radius:.5rem;background:var(--color-background);color:var(--color-text);font-size:.95rem;transition:border-color .2s,box-shadow .2s,background .2s}.search-bar input:focus{outline:none;border-color:var(--color-accent);background:white;box-shadow:0 0 0 3px var(--color-highlight)}.search-bar input::placeholder{color:#9aa79f}.admin-bar{display:flex;gap:.5rem}.admin-bar button{padding:.35rem .8rem;border:1px solid var(--color-border);border-radius:.5rem;background:white;color:var(--color-text);font-size:.85rem;cursor:pointer;transition:border-color .2s,background .2s}.admin-bar button:hover:not(:disabled){border-color:var(--color-accent);background:var(--color-background)}.admin-bar button:disabled{opacity:.6;cursor:default}.login-entrance{font-size:1.25rem;line-height:1;text-decoration:none;opacity:.25;transition:opacity .2s}.login-entrance:hover,.login-entrance:focus-visible{opacity:1}.exam-list{display:flex;flex-direction:column;gap:.5rem;margin:0;padding:0;list-style:none}.exam-row{display:grid;grid-template-columns:auto 1fr auto auto;align-items:center;gap:1rem;padding:.75rem 1rem;border:1px solid var(--color-border);border-radius:.75rem;background:white;color:var(--color-text);text-decoration:none;transition:border-color .2s,background .2s}.exam-row:hover{border-color:var(--color-accent);background:var(--color-background);color:var(--color-text)}.exam-code{padding:.15rem .5rem;border-radius:.35rem;background:var(--color-highlight);color:var(--color-primary-dark);font-family:var(--font-mono);font-size:.8rem;font-weight:600}.exam-name{font-weight:500}.exam-meta{color:var(--color-text-light);font-size:.85rem;font-variant-numeric:tabular-nums}.exam-arrow{color:var(--color-primary);transition:transform .2s}.exam-row:hover .exam-arrow{transform:translate(3px)}.notes-header{display:flex;align-items:center;justify-content:space-between;gap:1rem}.tags-list{display:flex;flex-wrap:wrap;gap:.4rem;margin:0;padding:0;list-style:none}.tag{padding:.2rem .65rem;border:1px solid var(--color-border);border-radius:999px;background:white;color:var(--color-text);font-size:.8rem;cursor:pointer;transition:border-color .2s,background .2s}.tag:hover{border-color:var(--color-accent);background:var(--color-background)}.tag-selected,.tag-selected:hover{border-color:var(--color-primary);background:var(--color-primary);color:#fff}.tag-count{margin-left:.15rem;opacity:.6;font-size:.75rem}.clear-tag-filter{padding:0;border:none;background:none;color:var(--color-primary);font-size:.85rem;cursor:pointer}.clear-tag-filter:hover{text-decoration:underline}.no-notes{padding:2rem;border:1px dashed var(--color-border);border-radius:.75rem;color:var(--color-text-light);text-align:center}.notes-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:.75rem}.note{display:flex;flex-direction:column;min-height:170px;padding:1rem;border:1px solid var(--color-border);border-radius:.75rem;background:white;cursor:pointer;transition:border-color .2s,box-shadow .2s,transform .2s}.note:hover{border-color:var(--color-accent);box-shadow:0 4px 14px #2f7a3e1a;transform:translateY(-1px)}.note-private{background:#fbfcfa}.note-header{display:flex;justify-content:space-between;align-items:flex-start;gap:.5rem;margin-bottom:.5rem}.note-title{flex:1;margin:0;color:var(--color-primary);font-size:1rem;line-height:1.35}.privacy-indicator{flex-shrink:0;font-size:.85rem;line-height:1.4}.note-content{display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;flex-grow:1;margin-bottom:.75rem;overflow:hidden;color:var(--color-text-light);font-size:.85rem;line-height:1.5;word-wrap:break-word}.note-footer{display:flex;justify-content:space-between;align-items:center;gap:.5rem;margin-top:auto;color:var(--color-text-light);font-size:.75rem}.note-tags{display:flex;flex:1;flex-wrap:wrap;gap:.25rem}.note-tag-small{padding:.05rem .4rem;border-radius:.25rem;background:var(--color-background);color:var(--color-primary-dark);font-size:.7rem;white-space:nowrap}.note-date{white-space:nowrap}.note-detail-view{width:100%;max-width:820px;margin:0 auto}.back-to-list-button{margin-bottom:1.25rem;padding:0;border:none;background:none;color:var(--color-primary);font-size:.95rem;cursor:pointer}.back-to-list-button:hover{text-decoration:underline}.selected-note{padding:2rem;border:1px solid var(--color-border);border-radius:1rem;background:white}.selected-note-title{margin:0 0 .75rem;color:var(--color-text);font-size:2rem;letter-spacing:-.02em}.note-meta{margin-bottom:1.5rem;padding-bottom:1rem;border-bottom:1px solid var(--color-border)}.note-meta .note-tags{margin-bottom:.5rem}.note-meta .note-tag{padding:.1rem .6rem;border-radius:999px;background:var(--color-highlight);color:var(--color-primary-dark);font-size:.8rem}.note-dates{display:flex;gap:1rem;color:var(--color-text-light);font-size:.85rem}.selected-note-content{color:var(--color-text);font-size:1.05rem;line-height:1.75}.selected-note-content h1,.selected-note-content h2,.selected-note-content h3,.selected-note-content h4,.selected-note-content h5,.selected-note-content h6{margin:1.75rem 0 .75rem;color:var(--color-text)}.selected-note-content h1{font-size:1.6rem}.selected-note-content h2{font-size:1.35rem}.selected-note-content h3{font-size:1.15rem}.selected-note-content p,.selected-note-content ul,.selected-note-content ol{margin:0 0 1rem}.selected-note-content ul,.selected-note-content ol{padding-left:1.5rem}.selected-note-content li{margin-bottom:.35rem}.selected-note-content code{padding:.15rem .35rem;border-radius:.25rem;background:var(--color-background);font-family:var(--font-mono);font-size:.88em}.selected-note-content pre{margin:1rem 0;padding:1rem;border-radius:.5rem;background:var(--color-background);overflow-x:auto}.selected-note-content pre code{padding:0;background:none}.selected-note-content blockquote{margin:1rem 0;padding-left:1rem;border-left:3px solid var(--color-accent);color:var(--color-text-light)}.selected-note-content a{color:var(--color-primary);text-decoration:none}.selected-note-content a:hover{text-decoration:underline}.wiki-link{border-bottom:1px solid var(--color-secondary);color:var(--color-primary);text-decoration:none;cursor:pointer}.wiki-link:hover{background:var(--color-background)}.wiki-link-pending{border-bottom:1px dashed #b5beb8;color:#8a958e;cursor:help}.related-section{display:flex;flex-wrap:wrap;gap:2rem;margin-top:1.25rem;padding:1.25rem 1.5rem;border:1px solid var(--color-border);border-radius:1rem;background:var(--color-background)}.related-block{flex:1;min-width:200px}.related-block h3{margin:0 0 .6rem;color:var(--color-text-light);font-size:.8rem;letter-spacing:.06em;text-transform:uppercase}.related-list{display:flex;flex-direction:column;gap:.3rem;margin:0;padding:0;list-style:none}.related-link{padding:0;border:none;background:none;color:var(--color-primary);font-family:inherit;font-size:.95rem;text-align:left;cursor:pointer}.related-link:hover{text-decoration:underline}.related-pending{color:#8a958e;font-size:.95rem;font-style:italic}.related-empty{margin:0;color:var(--color-text-light);font-style:italic}@media (max-width: 640px){.app{padding:1.25rem 1rem 2rem}.main-board{gap:1.5rem}.main-title{font-size:1.4rem}.search-bar{order:3;width:100%}.search-bar input{width:100%}.exam-row{grid-template-columns:auto 1fr auto;gap:.5rem .75rem}.exam-meta{grid-column:2;grid-row:2}.exam-arrow{grid-column:3;grid-row:1 / 3}.notes-grid{grid-template-columns:1fr}.selected-note{padding:1.25rem}.selected-note-title{font-size:1.6rem}}.login{--login-green: var(--color-primary, #2f7a3e);--login-green-dark: var(--color-primary-dark, #24622f);--login-accent: var(--color-accent, #8bc34a);--login-mist: var(--color-highlight, #dcf2cf);--login-text: var(--color-text, #24312a);--login-muted: var(--color-text-light, #56645b);--login-serif: "Cormorant Garamond", Georgia, "Times New Roman", serif;position:relative;isolation:isolate;display:grid;place-items:center;min-height:100vh;padding:2rem 1rem;overflow:hidden;background:radial-gradient(60rem 40rem at 15% 10%,#e6f6dc 0%,transparent 60%),radial-gradient(50rem 35rem at 90% 90%,#d7efe4 0%,transparent 60%),linear-gradient(160deg,#f7fbf4 0%,#eef7e8 100%);color:var(--login-text);font-family:var(--font-default, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif);text-align:center}.login *,.login *:before,.login *:after{box-sizing:border-box}.login_sky,.login_sky:after{position:absolute;top:-50%;right:-50%;bottom:-50%;left:-50%;z-index:-1;background-image:radial-gradient(1.5px 1.5px at 20px 30px,rgba(47,122,62,.45),transparent 60%),radial-gradient(1px 1px at 90px 120px,rgba(139,195,74,.7),transparent 60%),radial-gradient(2px 2px at 160px 60px,rgba(47,122,62,.3),transparent 60%),radial-gradient(1px 1px at 230px 190px,rgba(139,195,74,.6),transparent 60%);background-size:260px 220px;animation:login-drift 90s linear infinite;pointer-events:none}.login_sky:after{content:"";top:0;right:0;bottom:0;left:0;background-size:180px 160px;opacity:.6;animation-duration:60s;animation-direction:reverse}@keyframes login-drift{to{transform:translate3d(260px,220px,0)}}.login_card{display:flex;flex-direction:column;align-items:center;width:min(100%,26rem);padding:2.75rem 2.25rem 2rem;border:1px solid rgba(139,195,74,.35);border-radius:1.5rem;background:rgba(255,255,255,.72);box-shadow:0 1px #ffffffe6 inset,0 24px 60px -20px #24622f40,0 0 0 6px #dcf2cf59;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);animation:login-rise .6s cubic-bezier(.2,.8,.2,1) both}@keyframes login-rise{0%{opacity:0;transform:translateY(12px) scale(.98)}}.login_eyebrow{margin:0 0 1.25rem;color:var(--login-green);font-size:.72rem;font-weight:700;letter-spacing:.32em;text-transform:uppercase}.login_eyebrow:before,.login_eyebrow:after{content:"✦";margin:0 .6em;color:var(--login-accent);font-size:.7em;letter-spacing:0}.login_notice{margin:0 0 .75rem;color:var(--login-text);font-family:var(--login-serif);font-size:clamp(1.6rem,5vw,2rem);font-style:italic;font-weight:500;line-height:1.2;letter-spacing:-.01em}.login_advice{max-width:22rem;margin:0;color:var(--login-muted);font-size:.95rem;line-height:1.6}.login_ghost{position:relative;margin:1.5rem 0 .5rem;padding:.25rem .5rem;border:none;background:none;font-size:2.25rem;line-height:1;cursor:pointer;-webkit-user-select:none;user-select:none;filter:drop-shadow(0 10px 8px rgba(36,98,47,.18));animation:login-float 3.2s ease-in-out infinite;transition:filter .3s,transform .3s}.login_ghost:after{content:"";position:absolute;left:50%;bottom:-.6rem;width:1.6rem;height:.3rem;border-radius:50%;background:rgba(36,98,47,.14);transform:translate(-50%);animation:login-shadow 3.2s ease-in-out infinite}.login_ghost:hover,.login_ghost.is-awake{filter:drop-shadow(0 0 14px rgba(139,195,74,.85))}.login_ghost:focus{outline:none}.login_ghost:focus-visible{border-radius:.75rem;outline:2px solid var(--login-accent);outline-offset:4px}@keyframes login-float{50%{transform:translateY(-8px) rotate(-4deg)}}@keyframes login-shadow{50%{transform:translate(-50%) scale(.7);opacity:.6}}.login_access{display:flex;flex-direction:column;gap:.6rem;width:100%;margin-top:1.25rem;text-align:left;animation:login-reveal .35s ease-out both}@keyframes login-reveal{0%{opacity:0;transform:translateY(-6px)}}.login_access label{color:var(--login-green-dark);font-family:var(--login-serif);font-size:1.1rem;font-weight:600}.login_access input{width:100%;height:2.9rem;padding:0 1rem;border:1px solid #cfe2c5;border-radius:.8rem;background:rgba(255,255,255,.9);color:var(--login-text);font-size:1rem;letter-spacing:.15em;transition:border-color .2s,box-shadow .2s}.login_access input:focus{outline:none;border-color:var(--login-accent);box-shadow:0 0 0 4px #8bc34a40}.login_button{position:relative;height:2.9rem;margin-top:.4rem;overflow:hidden;border:none;border-radius:.8rem;background:linear-gradient(135deg,var(--login-green) 0%,#3f9a4f 100%);color:#fff;font-size:1rem;font-weight:600;letter-spacing:.04em;cursor:pointer;box-shadow:0 10px 20px -10px #24622f99;transition:transform .2s,box-shadow .2s,opacity .2s}.login_button:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(110deg,transparent 30%,rgba(255,255,255,.35) 50%,transparent 70%);transform:translate(-120%);transition:transform .7s}.login_button:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 14px 24px -10px #24622fa6}.login_button:hover:not(:disabled):after{transform:translate(120%)}.login_button:focus-visible{outline:2px solid var(--login-accent);outline-offset:3px}.login_button:disabled{opacity:.5;cursor:not-allowed}.login_error{margin:0;padding:.5rem .75rem;border-radius:.6rem;background:#fdecea;color:#b03a2e;font-size:.875rem}.login_home{margin-top:1.75rem;color:var(--login-muted);font-size:.85rem;font-weight:500;text-decoration:none;transition:color .2s}.login_home:hover{color:var(--login-green)}@media (max-width: 480px){.login_card{padding:2.25rem 1.5rem 1.75rem}}@media (prefers-reduced-motion: reduce){.login_sky,.login_sky:after,.login_card,.login_ghost,.login_ghost:after,.login_access{animation:none}}:root{font-family:Inter,system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light dark;color:#ffffffde;background-color:#242424;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-text-size-adjust:100%}a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}body{margin:0;min-width:320px;min-height:100vh}h1{font-size:3.2em;line-height:1.1}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#1a1a1a;cursor:pointer;transition:border-color .25s}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}@media (prefers-color-scheme: light){:root{color:#213547;background-color:#fff}a:hover{color:#747bff}button{background-color:#f9f9f9}}
