:root{--ink:#17252b;--muted:#647477;--paper:#fff;--panel:#fff;--line:#d9dedb;--primary:#6b9e76;--primary-dark:#5a8e65;--primary-light:#7fac8e;--primary-soft:#e8f2ea;--danger:#b24b32;--danger-soft:#f7ddd5;--accent:#6b9e76;--ui:"Segoe UI", system-ui, -apple-system, Arial, sans-serif;--serif:"Computer Modern", "Latin Modern Roman", "CMU Serif", "Times New Roman", serif;--radius:6px;--focus:0 0 0 3px #6b9e7652}*{box-sizing:border-box}body{color:var(--ink);background:var(--paper);font-family:var(--serif);margin:0}button,input,select,textarea{font:inherit}button{cursor:pointer}:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.shell{background:var(--paper);min-height:100vh}.topbar{border-bottom:1px solid var(--line);background:#f3f3f3;justify-content:space-between;align-items:center;gap:1rem;padding:1.1rem clamp(1.25rem,5vw,5rem);display:flex}.brand{color:var(--ink);font:400 1.25rem var(--serif);letter-spacing:0;text-decoration:none}.topbar aside{color:var(--muted);font:.85rem var(--ui);align-items:center;gap:1rem;display:flex}.topbar-link{color:var(--muted);font:600 .82rem var(--ui);text-decoration:none}.topbar-link:hover{color:var(--primary)}.topbar-link-button{color:var(--muted);font:600 .82rem var(--ui);background:0 0;border:0;padding:0}.topbar-link-button:hover{color:var(--primary)}.google-link-wrap{position:relative}.google-link-error{z-index:10;color:#9d4028;width:max-content;max-width:260px;font:.72rem/1.35 var(--ui);background:#fff7f3;border:1px solid #e3b09d;padding:.45rem .6rem;position:absolute;top:calc(100% + .5rem);right:0}main{width:min(1120px,100% - 2.5rem);margin:0 auto;padding:2.5rem 0 5rem}.app-banner{width:min(1120px,100% - 2.5rem);margin:1.25rem auto -1.25rem}.app-banner p{margin:0}.landing-page{text-align:center;place-items:center;width:min(900px,100% - 2.5rem);min-height:100vh;margin:0 auto;padding:3rem 0;display:grid}.landing-content{max-width:700px}.landing-masthead{border-top:1px solid var(--line);border-bottom:1px solid var(--line);color:var(--muted);font:.78rem/1.5 var(--ui);background:#f3f3f3;margin-top:3rem;margin-bottom:0;padding:1.15rem 1.25rem}.landing-content h1{max-width:none;color:var(--ink);font:400 clamp(2.5rem, 6vw, 4.6rem)/1.08 var(--serif)}.landing-lead{color:var(--muted);font:1.1rem/1.7 var(--serif);margin:1.25rem auto 0}.landing-actions{justify-content:center;gap:.75rem;margin-top:2rem;display:flex}.landing-note{color:var(--muted);font:.78rem/1.5 var(--ui);margin-top:1.5rem}.landing-search{text-align:left;max-width:680px;margin:2rem auto 0}.landing-search label{color:var(--ink);font:600 .82rem var(--ui);margin-bottom:.45rem;display:block}.search-guidance{color:#c66a4a;font:.8rem/1.45 var(--ui);margin:.7rem 0 0}.landing-search input,#metadata-id{font-family:var(--ui)}.search-results{text-align:left;gap:.45rem;margin:1.25rem auto 0;display:grid}.search-results-message{margin:1rem 0 0}.search-result{border:1px solid var(--line);width:100%;color:var(--ink);text-align:left;background:#f7f8f7;border-radius:6px;gap:.2rem;padding:.8rem .9rem;display:grid}.search-result:hover{border-color:var(--primary);background:var(--primary-soft)}.search-result strong{font:400 .9rem/1.35 var(--ui)}.search-result span{color:var(--muted);font:.75rem var(--ui);overflow-wrap:anywhere}.auth-page{place-items:center;width:min(560px,100% - 2.5rem);min-height:100vh;padding:2rem 0;display:grid}.auth-page .form-panel{width:100%}.auth-switch{flex-wrap:wrap;align-items:center;gap:.6rem;margin-bottom:0;display:flex}.google-button{width:100%}.auth-divider{color:var(--muted);font:.75rem var(--ui);align-items:center;gap:.75rem;margin:1.25rem 0;display:flex}.auth-divider:before,.auth-divider:after{content:"";background:var(--line);flex:1;height:1px}h1{overflow-wrap:anywhere;max-width:20ch;margin:0 0 .5rem;font-size:clamp(2.1rem,4.5vw,3.4rem);font-weight:400;line-height:1.05}.page-heading h1{color:var(--ink);font:400 2.35rem/1.1 var(--serif);letter-spacing:0}h2{margin:0;font-size:1.75rem;font-weight:400}p{color:var(--muted);line-height:1.6}.eyebrow{color:var(--primary);font:700 .72rem var(--ui);letter-spacing:.14em;text-transform:uppercase;margin:0 0 .6rem}.page-subtitle{max-width:60ch;font:.95rem/1.6 var(--serif);margin:0}.page-heading{min-width:0;margin:0 0 1.75rem}.page-header{border-bottom:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:1rem 1.5rem;margin:0 0 2rem;padding-bottom:1.5rem;display:flex}.page-header .page-heading{flex:20rem;margin:0}.page-actions{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}.save-order{flex:none}.back-link{border-radius:var(--radius);color:var(--muted);font:600 .82rem var(--ui);align-items:center;gap:.4rem;margin-bottom:1.75rem;padding:.35rem .6rem .35rem .4rem;text-decoration:none;transition:color .15s,background .15s;display:inline-flex}.back-link svg{transition:transform .15s}.back-link:hover{color:var(--primary);background:var(--primary-soft)}.back-link:hover svg{transform:translate(-2px)}.primary,.secondary,.danger{border-radius:var(--radius);min-height:2.5rem;font:600 .85rem var(--ui);white-space:nowrap;cursor:pointer;border:1px solid #0000;justify-content:center;align-items:center;gap:.45rem;padding:0 1.05rem;line-height:1;text-decoration:none;transition:background .15s,border-color .15s,color .15s,box-shadow .15s,transform .1s;display:inline-flex;position:relative}.primary{color:#fff;background:var(--primary);box-shadow:0 1px 2px #17252b1f}.primary:hover:not(:disabled){background:var(--primary-dark);box-shadow:0 3px 12px #6b9e7659}.primary:focus-visible:not(:disabled){box-shadow:0 1px 2px #17252b1f, var(--focus)}.secondary{color:var(--ink);background:var(--panel);border-color:var(--line)}.secondary:hover:not(:disabled){color:var(--primary);border-color:var(--primary);background:var(--primary-soft);box-shadow:0 1px 4px #6b9e7629}.secondary:focus-visible:not(:disabled){border-color:var(--primary);box-shadow:var(--focus)}.danger{color:var(--danger);background:var(--danger-soft);border-color:#d9a79b}.danger:hover:not(:disabled){background:#f0c9bf;box-shadow:0 1px 4px #9e332829}.danger:focus-visible:not(:disabled){box-shadow:var(--focus)}.primary:active:not(:disabled),.secondary:active:not(:disabled),.danger:active:not(:disabled){transform:translateY(1px)}.primary:disabled,.secondary:disabled,.danger:disabled{cursor:not-allowed;opacity:.5;box-shadow:none}.primary svg,.secondary svg,.danger svg{flex:none;width:16px;height:16px}.icon-button{border:1px solid var(--line);border-radius:var(--radius);width:2rem;height:2rem;color:var(--muted);background:var(--panel);justify-content:center;align-items:center;padding:0;transition:color .15s,border-color .15s,background .15s;display:inline-flex}.icon-button:hover:not(:disabled){color:var(--primary);border-color:var(--primary);background:var(--primary-soft)}.icon-button-danger:hover:not(:disabled){color:var(--danger);background:var(--danger-soft);border-color:#d9a79b}.icon-button-done{color:var(--primary);border-color:var(--primary);background:var(--primary-soft)}.icon-button:disabled{cursor:not-allowed;opacity:.45}.icon-button:focus-visible{box-shadow:var(--focus)}.icon-button svg{width:18px;height:18px}.spinner-icon{animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.project-grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:1rem;margin-top:2rem;display:grid}.project-form-panel,.project-list{width:min(100%,1040px);margin-left:auto;margin-right:auto}.project-form-panel{margin-bottom:2rem}.project-list{gap:.65rem;margin-top:0;display:grid}.project-tile{border:1px solid var(--line);cursor:pointer;background:#f7f8f7;border-radius:8px;justify-content:space-between;align-items:center;gap:1rem;padding:1rem 1.15rem;transition:border-color .15s,box-shadow .15s;display:flex}.project-tile:hover{border-color:var(--primary-light);box-shadow:0 3px 12px #6b9e761f}.project-tile-main{min-width:0;color:inherit;text-decoration:none}.project-tile-main>a{color:inherit;text-decoration:none}.project-name-button{color:inherit;text-align:left;background:0 0;border:0;padding:0;display:block}.project-name-button:hover h3,.project-name-button:focus-visible h3{color:var(--primary-dark);text-underline-offset:3px;text-decoration:underline}.project-tile h3{color:var(--ink);font:400 1.15rem var(--serif);overflow-wrap:anywhere;margin:0 0 .25rem}.project-tile span{color:var(--muted);font:.78rem var(--ui)}.project-card{border:1px solid var(--line);border-radius:var(--radius);background:var(--panel);flex-direction:column;justify-content:space-between;gap:1rem;min-height:160px;padding:1.3rem;transition:box-shadow .15s,border-color .15s;display:flex}.project-card:hover{border-color:var(--primary-light);box-shadow:0 4px 14px #6b9e7624}.project-card h3{overflow-wrap:anywhere;margin:0 0 .3rem;font-size:1.3rem;font-weight:400}.project-card small{color:var(--muted);font:.8rem var(--ui)}.card-actions{justify-content:space-between;align-items:center;gap:.5rem;display:flex}.project-rename{flex-wrap:wrap;gap:.35rem;display:flex}.project-rename input{width:min(22rem,100%);min-height:2rem}.form-panel{border:1px solid var(--line);background:#fff;border-radius:8px;width:min(1040px,100%);padding:1.5rem}.field{gap:.4rem;margin:1rem 0;display:grid}.field:first-child{margin-top:0}label{font:600 .8rem var(--ui)}input,select,textarea{border-radius:var(--radius);width:100%;min-height:2.5rem;color:var(--ink);font:.9rem var(--ui);background:#f7f8f7;border:1px solid #bdb5a7;padding:.6rem .7rem;transition:border-color .15s,box-shadow .15s}input:focus,select:focus,textarea:focus{border-color:var(--primary);box-shadow:var(--focus);outline:none}input[type=checkbox]{width:1.1rem;height:1.1rem;min-height:0;accent-color:var(--primary)}textarea{resize:vertical;min-height:100px}.lookup-row{flex-wrap:wrap;gap:.6rem;display:flex}.lookup-row input{flex:16rem}.source-menu{position:relative}.source-picker{border:1px solid var(--line);background:#fff;border-radius:8px;padding:.35rem}.source-category-tabs{border-bottom:1px solid var(--line);gap:.25rem;margin-bottom:.5rem;display:flex;overflow-x:auto}.source-category-tabs button{color:var(--muted);font:600 .76rem var(--ui);white-space:nowrap;background:0 0;border:0;border-bottom:2px solid #0000;padding:.5rem .75rem}.source-category-tabs button:hover,.source-category-tabs button.active{color:var(--ink);border-bottom-color:var(--primary)}.source-menu-trigger{border-radius:var(--radius);width:100%;min-height:2.5rem;color:var(--ink);font:.9rem var(--ui);text-align:left;background:#f7f8f7;border:1px solid #bdb5a7;justify-content:space-between;align-items:center;padding:.6rem .7rem;display:flex}.source-menu-trigger:hover,.source-menu-trigger[aria-expanded=true]{border-color:var(--primary);box-shadow:var(--focus)}.source-menu-list{z-index:10;border:1px solid var(--line);background:#fff;max-height:22rem;padding:.45rem;position:absolute;inset:calc(100% + .35rem) 0 auto;overflow-y:auto;box-shadow:0 12px 28px #17252b29}.source-menu-group{color:var(--primary);font:700 .68rem var(--ui);letter-spacing:.1em;text-transform:uppercase;margin:.55rem .55rem .25rem}.source-menu-option{width:100%;color:var(--ink);font:.88rem var(--ui);text-align:left;background:0 0;border:0;padding:.55rem .6rem;display:block}.source-menu-option:hover,.source-menu-option.selected{color:var(--primary-dark);background:var(--primary-soft)}.form-actions{border-top:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:.6rem;margin-top:1.75rem;padding-top:1.25rem;display:flex}.form-hint{color:var(--muted);font:.8rem var(--ui)}.metadata-fields{grid-template-columns:repeat(2,minmax(0,1fr));gap:0 1.25rem;margin-top:1.5rem;display:grid}.editor-search-results{gap:.45rem;margin-top:.9rem;display:grid}.metadata-field{margin:.65rem 0}.metadata-field textarea{min-height:110px}.required-mark,.optional-mark{font:400 .7rem var(--ui);margin-left:.5rem}.optional-mark{color:var(--muted)}.required-mark{color:#c66a4a}.field-missing input,.field-missing textarea{background:#fff8f5;border-color:#d27a5e}.field-error{color:#c66a4a;font:.75rem var(--ui)}.field-help{color:var(--muted);font:.76rem/1.4 var(--ui)}.tag-list{flex-wrap:wrap;gap:.4rem;min-height:1.5rem;display:flex}.tag{color:var(--ink);background:var(--primary-soft);font:.78rem var(--ui);border:1px solid #c5e1d0;border-radius:999px;align-items:center;gap:.3rem;padding:.3rem .4rem .3rem .6rem;display:inline-flex}.tag button{width:1.15rem;height:1.15rem;color:var(--muted);background:0 0;border:0;border-radius:50%;justify-content:center;align-items:center;padding:0;display:inline-flex}.tag button:hover{color:var(--danger);background:#9e33281f}.preview{border-left:3px solid var(--primary);border-radius:0 var(--radius) var(--radius) 0;background:#eef7f1;margin:1.5rem 0;padding:1rem 1.25rem}.preview-heading{justify-content:space-between;align-items:flex-start;gap:1rem;display:flex}.preview-loading{margin:-.75rem 0 1rem}.preview p:last-child{color:var(--ink);margin:0}.error{border-radius:var(--radius);color:#8b2d25;font:.85rem var(--ui);background:#f8dfd9;padding:.75rem 1rem}.notice{border-radius:var(--radius);color:#3d6b52;font:.85rem var(--ui);background:#e8f2ed;padding:.75rem 1rem}.dialog-backdrop{z-index:20;background:#17252b47;place-items:center;padding:1rem;display:grid;position:fixed;inset:0}.confirm-dialog{border:1px solid var(--line);background:#fff;width:min(430px,100%);padding:1.5rem;box-shadow:0 16px 40px #17252b33}.confirm-dialog h2{font:400 1.3rem/1.25 var(--ui);color:var(--ink);margin-bottom:.5rem}.confirm-dialog p:not(.eyebrow){font:.9rem/1.55 var(--ui);margin:0}.dialog-actions{justify-content:flex-end;gap:.6rem;margin-top:1.4rem;display:flex}.order-bar{z-index:5;border:1px solid var(--primary-light);border-radius:var(--radius);background:var(--primary-soft);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;margin:0 0 1.25rem;padding:.7rem .7rem .7rem 1rem;display:flex;position:sticky;top:.75rem;box-shadow:0 4px 14px #17252b1a}.order-bar span{color:#3d6b52;font:600 .84rem var(--ui)}.reference-list{gap:.6rem;margin-top:1rem;display:grid}.reference{border:1px solid var(--line);background:#fff;border-radius:8px;grid-template-columns:1.5rem 2.75rem minmax(0,1fr) auto;align-items:start;gap:.9rem;padding:1rem 1.1rem;transition:border-color .15s,box-shadow .15s,opacity .15s;display:grid}.reference:hover{border-color:var(--primary-light);box-shadow:0 2px 10px #6b9e7624}.reference-dragging{opacity:.45}.reference-drop-target{border-color:var(--primary);background:#eef7f1;border-style:dashed}.drag-handle{color:#bdb5a7;cursor:grab;margin-top:.1rem}.reference:hover .drag-handle{color:var(--muted)}.reference:active .drag-handle{cursor:grabbing}.citation{color:var(--primary);font-variant-numeric:tabular-nums;font-size:1.15rem;font-weight:600}.reference-content{min-width:0;color:inherit;text-decoration:none;display:block}.reference-text{color:#202b2f;line-height:1.55;display:block}.reference-content:hover .reference-text{text-decoration:underline;-webkit-text-decoration-color:var(--primary-light);text-decoration-color:var(--primary-light);text-underline-offset:3px}.reference-meta{color:var(--muted);font:.68rem var(--ui);letter-spacing:.08em;text-transform:uppercase;margin-top:.4rem;display:block}.reference-controls{gap:.35rem;display:flex}.view-tabs{border-bottom:1px solid var(--line);margin:0 0 .4rem;display:inline-flex}.view-tabs button{color:var(--muted);font:600 .82rem var(--ui);background:0 0;border:0;border-bottom:2px solid #0000;padding:.55rem .9rem}.view-tabs button:hover,.view-tabs button.active{color:var(--ink);border-bottom-color:var(--primary)}.view-tabs .icon-button{border:1px solid var(--line);border-radius:var(--radius);border-bottom-width:1px;width:2rem;height:2rem;min-height:2rem;padding:0}.bibtex-block{color:#26332c;white-space:pre-wrap;background:#f1f3f2;border:1px solid #e1e5e2;border-radius:8px;margin:0;padding:1rem 1.1rem;font:.82rem/1.6 Consolas,Courier New,monospace;overflow-x:auto}.reference-list-bibtex .reference{grid-template-columns:1.5rem 2.75rem minmax(0,1fr) auto}.drop-slot{border-radius:var(--radius);border:1px solid #0000;height:.45rem;margin:-.15rem 0;transition:height .15s,border-color .15s,background .15s}.drop-slot-active{height:.9rem}.drop-slot-highlighted{border-color:var(--primary);background:var(--primary-soft)}.empty{border:1px dashed var(--line);border-radius:var(--radius);text-align:center;justify-items:center;gap:.5rem;padding:3.5rem 1rem;display:grid}.empty p{margin:0}.empty .primary{margin-top:.75rem}.loading{color:var(--muted);font:.9rem var(--ui);align-items:center;gap:.5rem;display:flex}.loading:after{content:"";border:2px solid var(--primary-light);border-top-color:var(--primary);border-radius:50%;width:1rem;height:1rem;animation:.8s linear infinite spin;display:inline-block}.reference-skeleton{pointer-events:none;grid-template-columns:2.75rem minmax(0,1fr)}.library-loading{min-height:9rem}.skeleton{background:linear-gradient(90deg,#e7e2d7 25%,#f1ede4 50%,#e7e2d7 75%) 0 0/400% 100%;border-radius:4px;animation:1.4s ease-in-out infinite shimmer;display:block}.skeleton-citation{width:2rem;height:1.1rem}.skeleton-lines{gap:.5rem;display:grid}.skeleton-line{height:.85rem}.skeleton-line-short{width:55%}@keyframes shimmer{to{background-position:-400% 0}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@media (max-width:640px){main{padding-top:1.75rem}.topbar{padding:1rem 1.25rem}.page-header{align-items:stretch}.page-actions{width:100%}.page-actions .primary,.page-actions .secondary{flex:auto}.reference{grid-template-columns:1.5rem 2.5rem minmax(0,1fr)}.reference-controls{grid-column:2/-1}.metadata-fields{grid-template-columns:1fr}.landing-actions{flex-direction:column;align-items:stretch}.project-tile{align-items:flex-start}}
